O pedido foi abortado: Não foi possível criar um canal seguro SSL/TLS.

Nós não conseguimos nos conectar a um servidor HTTPS utilizando WebRequest por causa desta mensagem de erro:

"O pedido foi abortado: Não foi possível criar um canal seguro SSL/TLS.`

Sabemos que o servidor não'não tem um certificado HTTPS válido com o caminho utilizado, mas para contornar este problema, usamos o seguinte código que nós'tomamos de outro StackOverflow post:

private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}

private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

O problema é que o servidor nunca valida o certificado e falha com o erro acima. Alguém tem alguma ideia do que eu devo fazer?


Devo mencionar que eu e um colega fizemos testes há algumas semanas e estava a funcionar bem com algo semelhante ao que escrevi acima. A única "maior diferença" nós'descobrimos que eu'estou usando o Windows 7 e ele estava usando o Windows XP. Isso muda alguma coisa?

O problema que você'está tendo é que o usuário da aspNet não'tem acesso ao certificado. Você tem que dar acesso usando o winhttpcertcfg.exe

Um exemplo de como montar isto é: http://support.microsoft.com/kb/901183

No passo 2 em mais informações

EDIT: Nas versões mais recentes do IIS, esta funcionalidade está integrada na ferramenta de gestão de certificados - e pode ser acedida clicando com o botão direito do rato no certificado e utilizando a opção para gerir chaves privadas. Mais detalhes aqui: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791#132791

Comentários (4)

O erro é genérico e há muitas razões pelas quais a negociação SSL/TLS pode falhar. A mais comum é um certificado de servidor inválido ou expirado, e você cuidou disso fornecendo seu próprio gancho de validação de certificado de servidor, mas não é necessariamente o único motivo. O servidor pode requerer autenticação mútua, pode ser configurado com um conjunto de cifras não suportadas pelo seu cliente, pode ter um desvio de tempo demasiado grande para o aperto de mão ter sucesso e muitas mais razões.

A melhor solução é utilizar o conjunto de ferramentas de resolução de problemas do SChannel. SChannel é o fornecedor SSPI responsável pelo SSL e TLS e o seu cliente irá usá-lo para o aperto de mão. Dê uma olhada em TLS/SSL Tools and Settings.

Veja também Como habilitar o registro de eventos Schannel.

Comentários (2)

Você pode tentar instalar um certificado demo (alguns provedores ssl os oferecem gratuitamente por um mês) para ter certeza se o problema está relacionado à validade do certificado ou não.

Comentários (3)