2011-10-26 11 views
5

En mi aplicación, tengo situaciones en las que debo realizar solicitudes a los servidores que tienen certificados autofirmados. Me gustaría poder desactivar la validación de certificado solo para esa solicitud en particular.Desactivación de la validación del certificado para una sola solicitud

Sé que puedo deshabilitar la validación de certificados estableciendo ServicePointManager.ServerCertificateValidationCallback para señalar a un método de devolución de llamada y simplemente devolver verdadero. Sin embargo, esto deshabilita la validación del certificado para toda la aplicación, lo que podría hacer simplemente configurando en app.config.

Sin embargo, no quiero deshabilitar para toda la aplicación, sino que deshabilito para una solicitud individual. ¿Es eso posible?

La clase que estoy trabajando con SmtpClient es

Respuesta

0

Desactivación de la validación de certificados es generalmente una mala idea. ¿Por qué no simplemente agrega su certificado personalizado como certificado de confianza en el sistema o en su aplicación?

AFAIR esto se puede hacer p. Ej. implementando su propio X509CertificateValidator. Simplemente incruste el certificado personalizado en su aplicación y compare en el X509CertificateValidator si ambos son iguales.

Véase también: How safe is my custom SSL verification logic to handle excepted RemoteCertificateNameMismatch?

+0

Robert thaks para la respuesta. En algunas partes de nuestra aplicación, no queremos permitir que un certificado no sea válido. Sin embargo, en este caso particular en el que estamos enviando correos electrónicos, queremos utilizar SSL, pero descubrimos que muchos clientes tienen certificados SSL autofirmados que no envían el correo electrónico. Desafortunadamente, este es el caso a menudo para los servidores SMTP y sería una pesadilla importar un certificado por cada servidor smtp que fallara, por lo que queremos permitir que SMTP acepte fallas de certificados y otras partes de nuestra aplicación para hacerlas cumplir. –

+0

Entonces puede ser que deba usar el esquema de validación utilizado también en el cliente de correo electrónico "K9" de Android, que tiene exactamente el mismo problema. La primera vez que encuentra un certificado que no es de confianza, muestra algunos detalles del certificado y le pregunta al usuario si confía en este certificado. Si el usuario responde sí AFAIR guarda el hash de certificado en el archivo de configuración marcando este certificado como válido. El validador de certificado interno acepta luego todos los certificados regulares más el que tiene el hash guardado. Funciona para todos y sigue siendo relativamente seguro. – Robert

+0

Lamentablemente, este es un servicio, por lo que no tiene una interfaz de usuario y, por lo tanto, no tiene ningún cuadro de diálogo en el que un usuario pueda hacer clic para aceptar el certificado. –

Cuestiones relacionadas