Pergunta

Eu estou tentando fazer uma chamada de SSL usando HTTPWebRequest e sua falha continuamente dizendo que não pode estabelecer a confiança. Eu adicionei uma chamada de retorno para ServicePointManager.ServerCertificateValidationCallback e retornando true sempre funciona. No entanto, eu gostaria que as coisas fossem um pouco mais seguro do que isso. Olhando para o SslPolicyErrors no método de validação parece que eu estou recebendo um erro RemoteCertificateNameMismatch. O que não está combinando corretamente para causar esse tipo de erro?

(edit: ver comentários na resposta) O site que estou acessando usos HTTPBasic mais de SSL e um URL algo como v1.api.serviceprovider.com, com um certificado emitido para * .serviceprovider.com.

Foi útil?

Solução

problemas de certificado gerais:

  • certificado não emitido por um fornecedor certificado confiável (deve ser em sua cadeia de confiança)
  • certificado expirou

Este erro específico geralmente significa que o certificado não é emitido para o site que você está acertando. Exemplos:

  • diferença entre "www.yoursite.com" e "yoursite.com" (eles são diferentes, alguns grandes nomes se esta errado, o que realmente me irrita ...)
  • acessando como um endereço IP em vez do nome do cert; ou v / v
  • um balanceador de carga redirecionando você para "server1, yoursite.com", mas dando-lhe o certificado de "yoursite.com"
  • um balanceador de carga silenciosamente passando-lhe para "server1", que é a emissão de certificados para "server1", e não o site
  • ( editar ver comentários ) um certificado curinga emitido para vários níveis - ou seja emitido para * .somesite.org, quando você está acertando foo.bar.somesite.org

A maioria destes são facilmente identificáveis, navegando para o site e ler os avisos que o seu navegador lhe dá, e fiscalizar o certificado que foi emitido.

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