seguridad raíz navegador los cuenta crear certificados certificado causarán autofirmados autofirmado advertencias wpf wcf iis-7 ssl-certificate

wpf - raíz - keytool certificado autofirmado



¿Cómo aceptar un certificado SSL autofirmado en un cliente WCF? (2)

Esta puede ser una pregunta estúpida, pero simplemente no puedo encontrar la respuesta.

Lo que me gustaría hacer: tengo un servicio WCF alojado por IIS. Está funcionando perfectamente, puedo acceder al wsdl, tengo un certificado autofirmado para el servidor, etc. Me gustaría llamar a este servicio desde un cliente de WPF.

El problema es que, dado que tengo un certificado autofirmado, obtengo la siguiente excepción cuando llamo al servicio: No se pudo establecer una relación de confianza para el canal seguro SSL / TLS con la autoridad ''localhost''.

Si accedo al sitio (o al servicio) desde un navegador, no hay problema, porque el navegador me advierte sobre el certificado y me da la opción de ver la página de todos modos. Pero el cliente de WPF solo lanza una excepción.

No quiero desactivar por completo el proceso de autenticación, simplemente me gustaría dar a los usuarios la opción de ignorar esta advertencia (como lo hacen los navegadores).

¿Alguien puede proporcionar algún código para esto? Si te encuentras con un buen y detallado tutorial sobre esto, también sería increíble. (Vea, mi problema con los tutoriales que encontré es la falta de detalles)


Puede registrar el certificado usted mismo. Si también carga el certificado en el cliente y luego lo registra como confiable, no debería recibir esa advertencia.

Necesita encontrar un X509CertificateCollection y agregar el certificado a esa colección. Tuve este tipo de problema con un SmtpClient corriendo sobre Ssl.

Conectando System.Net.ServicePointManager.ServerCertificateValidationCallback o implementando System.Net.ICertificatePolicy e identificando mi propio certificado instalado como válido / de confianza (adjunto a System.Net.ServicePointManager.CertificatePolicy ).

Esto no es algo de WCF per se, pero por lo que pude ver, esto también debería traducirse en WCF. Todo depende de lo que use WCF bajo el capó.


Aquí está la cantidad mínima de código que necesita para que el cliente de WCF acepte un certificado arbitrario. Esto no es seguro . Úselo para probar solo. No me culpes si este código se vuelve loco y se come a tu pequeño gatito.

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(EasyCertCheck);

La devolución de llamada:

bool EasyCertCheck(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) { return true; }

El código descaradamente se levantó de la respuesta menos útil a ¿Es posible obligar al cliente de prueba WCF a aceptar un certificado autofirmado?