Recibo el siguiente error durante una solicitud de servicio web a un servicio web remoto:
No se pudo establecer una relación de confianza para el canal seguro SSL / TLS. ---> System.Security.Authentication.AuthenticationException: el certificado remoto no es válido de acuerdo con el procedimiento de validación.
¿Hay alguna forma de ignorar este error y continuar?
Parece que el certificado remoto no está firmado.
El sitio al que me conecto es www.czebox.cz
, así que siéntase libre de visitar el sitio y observe que incluso los navegadores arrojan excepciones de seguridad.
Permitir todos los certificados es muy poderoso, pero también podría ser peligroso. Si desea permitir solo certificados válidos más algunos certificados determinados, podría hacerlo de esta manera.
Núcleo .Net:
.NET Framework:
Actualizar:
Cómo obtener
cert.GetCertHashString()
valor en Chrome:Haga clic en
Secure
oNot Secure
en la barra de direcciones.Luego haga clic en Certificado -> Detalles -> Huella digital y copie el valor. Recuerda hacer
cert.GetCertHashString().ToLower()
.fuente
Hash String
un certificado?cert.GetCertHashString()
desdeImmediate window
o cheque certificadoThumbprint
en su navegador oMMC
si está instalado localmente.Método IgnoreBadCertificates:
fuente
La razón por la que está fallando no es porque no está firmado, sino porque el cliente no confía en el certificado raíz. En lugar de desactivar la validación SSL, un enfoque alternativo sería agregar el certificado de CA raíz a la lista de CA en las que confía su aplicación.
Este es el certificado raíz de CA en el que su aplicación actualmente no confía:
Puede decodificar y ver este certificado utilizando
este decodificador de certificados u otro decodificador de certificados
fuente
Para deshabilitar la validación del certificado SSL en la configuración del cliente.
fuente
Este código me funcionó. Tuve que agregar TLS2 porque esa era la URL que me interesaba.
fuente
Omitir certificado SSL ...
fuente
Si está utilizando sockets directamente y se está autenticando como cliente, entonces el método de devolución de llamada de Service Point Manager no funcionará. Esto es lo que funcionó para mí. Úselo únicamente para fines de prueba .
La clave aquí es proporcionar la devolución de llamada de validación de certificado remota directamente en el constructor de la secuencia SSL.
fuente
Para ampliar aún más la publicación de BIGNUM: idealmente, desea una solución que simule las condiciones que verá en la producción y modificar su código no lo hará y podría ser peligroso si olvida sacar el código antes de implementarlo.
Necesitará un certificado autofirmado de algún tipo. Si sabe lo que está haciendo, puede usar el BIGNUM binario publicado, pero si no puede ir a buscar el certificado. Si está utilizando IIS Express, ya tendrá uno de estos, solo tendrá que encontrarlo. Abra Firefox o el navegador que desee y vaya a su sitio web de desarrollo. Debería poder ver la información del certificado desde la barra de URL y, dependiendo de su navegador, debería poder exportar el certificado a un archivo.
A continuación, abra MMC.exe y agregue el complemento Certificado. Importe su archivo de certificado en la tienda Trusted Root Certificate Authorities y eso es todo lo que necesita. Es importante asegurarse de que entre en esa tienda y no en otra tienda como 'Personal'. Si no está familiarizado con MMC o certificados, existen numerosos sitios web con información sobre cómo hacerlo.
Ahora, su computadora en su conjunto confiará implícitamente en cualquier certificado que haya generado y no necesitará agregar código para manejar esto especialmente. Cuando pase a producción, continuará funcionando siempre que tenga un certificado válido adecuado instalado allí. No haga esto en un servidor de producción; eso sería malo y no funcionará para ningún otro cliente que no sea el servidor en sí.
fuente
Esto funciona para .Net Core. Llame a su cliente de jabón:
fuente