Estou recebendo o seguinte erro durante uma solicitação de serviço da Web para um serviço da Web remoto:
Não foi possível estabelecer relação de confiança para o canal seguro SSL / TLS. ---> System.Security.Authentication.AuthenticationException: o certificado remoto é inválido de acordo com o procedimento de validação.
Existe alguma maneira de ignorar esse erro e continuar?
Parece que o certificado remoto não está assinado.
O site ao qual eu me conecto é www.czebox.cz
- sinta-se à vontade para visitar o site e observe que até os navegadores lançam exceções de segurança.
Permitir todos os certificados é muito poderoso, mas também pode ser perigoso. Se você deseja permitir apenas certificados válidos mais alguns certificados, isso pode ser feito assim.
.Net core:
Estrutura .Net:
Atualizar:
Como obter
cert.GetCertHashString()
valor no Chrome:Clique em
Secure
ouNot Secure
na barra de endereço.Em seguida, clique em Certificado -> Detalhes -> Impressão digital e copie o valor. Lembre-se de fazer
cert.GetCertHashString().ToLower()
.fonte
Hash String
de um certificado?cert.GetCertHashString()
a partir deImmediate window
ou cheque certThumbprint
no seu navegador ouMMC
se estiver instalado localmente.Método IgnoreBadCertificates:
fonte
A razão pela qual está falhando não é porque não está assinado, mas porque o certificado raiz não é confiável para o seu cliente. Em vez de desativar a validação SSL, uma abordagem alternativa seria adicionar o certificado de CA raiz à lista de CAs em que seu aplicativo confia.
Este é o certificado CA raiz no qual seu aplicativo não confia atualmente:
Você pode decodificar e visualizar este certificado usando
este decodificador de certificado ou outro decodificador de certificado
fonte
Para desativar a validação de certificado SSL na configuração do cliente.
fonte
Este código funcionou para mim. Eu tive que adicionar o TLS2 porque era nisso que o URL que eu estava interessado estava usando.
fonte
Ignorar certificado SSL ....
fonte
Se você estiver usando soquetes diretamente e se autenticando como cliente, o método de retorno de chamada do Service Point Manager não funcionará. Aqui está o que funcionou para mim. POR FAVOR, USE APENAS PARA FINS DE TESTE .
A chave aqui é fornecer o retorno de chamada da validação remota de certificado diretamente no construtor do fluxo SSL.
fonte
Para expandir ainda mais a postagem da BIGNUM - Idealmente, você deseja que uma solução que simule as condições que você verá na produção e modifique seu código não fará isso e poderá ser perigosa se você esquecer de retirar o código antes de implementá-lo.
Você precisará de um certificado autoassinado de algum tipo. Se você sabe o que está fazendo, pode usar o BIGNUM binário publicado, mas, se não, pode procurar o certificado. Se você estiver usando o IIS Express, já terá um desses, basta encontrá-lo. Abra o Firefox ou o navegador que você gosta e acesse o site do desenvolvedor. Você poderá visualizar as informações do certificado na barra de URLs e, dependendo do seu navegador, poderá exportar o certificado para um arquivo.
Em seguida, abra o MMC.exe e adicione o snap-in Certificado. Importe seu arquivo de certificado para o armazenamento de autoridades de certificação raiz confiáveis e é tudo o que você precisa. É importante garantir que ele entre nessa loja e não em outra loja como 'Pessoal'. Se você não conhece o MMC ou os certificados, existem vários sites com informações sobre como fazer isso.
Agora, o seu computador como um todo confiará implicitamente em todos os certificados que ele próprio gerou e você não precisará adicionar código para lidar com isso especialmente. Quando você muda para a produção, ele continuará funcionando, desde que você tenha um certificado válido adequado instalado lá. Não faça isso em um servidor de produção - isso seria ruim e não funcionará para outros clientes que não sejam o próprio servidor.
fonte
Isso funciona para o .Net Core. Ligue para o seu cliente Soap:
fonte