Pergunta

Eu tenho um serviço web que estão protegidos pela exigindo a aplicação de terceiros consumindo para passar um certificado de cliente. Eu tenho instalado o certificado no serviço de web proporcionando na produção e no cliente também. Este processo está funcionando bem para outros clientes com uma configuração similar. A versão atual é escrito em .NET 3.5 e funciona perfeitamente em minha máquina de desenvolvimento sob Cassini (e autônomo em execução), mas se recusa a trabalhar na minha máquina de produção com a mesma configuração de código e certificado. Eu confirmei que o serviço de provedor de web aceita o certificado instalado no cliente através do browser, mas quando o certificado é adicionado a uma chamada de serviço Web através de programação, eu recebo um 403, o acesso é negado. saída de I a impressão digital do certificado adicionado à chamada antes de fazer o pedido para o webservice protegido, e é de facto o certificado correto anexado. Meu pensamento é que em algum lugar ao longo da linha, ele não tem acesso à parte de chave privada do certificado.

Todas as idéias?

Nota:. Eu dei o acesso processo do IIS para as ~ / diretórios cripto relevantes

Esta é C # e .NET 3.5

Foi útil?

Solução

Eu tive esse tipo de problema um par de semanas atrás. A solução no meu caso foi o de utilizar a representação, a fim de ganhar acesso apropriado para o armazenamento de certificados. Por padrão, o segmento de trabalho IIS estava funcionando como um usuário do sistema, e como tal não tinha acesso à loja apropriada. Adicionando o certificado para uma loja de usuário específico, e personificando o usuário resolvido todos os problemas.

Vou continuar a assistir a esta pergunta, embora, como estou ciente de que a representação não é uma solução mágica, e que não haverá problemas daí decorrentes neste cenário.

Outras dicas

Há uma razão distinta não funcionou na minha máquina. Ao executar dentro do Visual Studio, ele é executado com as minhas credenciais, que foram usados ??para instalar o certificado. tem, assim, automaticamente permissão para acessar o armazenamento de chave privada na máquina. No entanto ao executar fora de Cassini (no IDE), o IIS processo não tem permissões para o acesso ao armazenamento de chaves privadas.

solução temporária: Execute o aplicativo-domínio como Sistema local . Mau para a segurança, mas ele começa o aplicativo instalado e funcionando (embora de banda auxiliados) até que eu possa encontrar uma solução mais permanente.

Você poderia apenas tapa esta etiqueta em seu programa e chamá-lo um dia:

text alt

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top