Pregunta

Mi empresa ha desarrollado un servicio web .NET y una DLL de cliente que utiliza ese servicio web. El servicio web está alojado en nuestro servidor a través de SSL y se proporciona el certificado y firmado por GoDaddy. Tenemos algunos clientes en un entorno de host que están recibiendo el mensaje de error siguiente de la DLL cliente cuando se trata de acceder a nuestro servicio web.

System.NET.WebException la conexión subyacente se cerró:. No se pudo establecer una relación de confianza para el SSL / TLS canal seguro

Nuestra solución ha sido tener a abrir IE en el servidor, que es un reto en sí mismo para muchos de los servicios alojados, y van a la URL de WSDL. IE luego les pide que con un cuadro de diálogo de alerta de seguridad. Dice la fecha cert es válida y un nombre válido que coincida con el nombre de la página, pero fue emitido por una empresa que no ha elegido a la confianza. Cuando hagan clic en Sí para continuar, la DLL cliente puede conectarse con éxito al servicio web y operar con normalidad.

¿Alguien tiene alguna idea de por qué GoDaddy no hubiera estado ahí lista de editores válidos? Todos los servidores que ejecutan hemos GoDaddy tiene como autoridad válida. Supongo que, por razones de seguridad, que han desinstalado la autoridad para GoDaddy, pero no totalmente convencido de que no hay algún otro problema subyacente.

Por desgracia, no he tenido mucha suerte tratando de recrear este local. Si entro en Opciones de Internet y retirar las autoridades GoDaddy y éxito de nuestro servicio, SSL funciona bien. Voy de nuevo en la lista de editores y GoDaddy consigue puesto lateral derecho. Así que mi segunda pregunta es, ¿Cómo diablos te libras de GoDaddy para que pueda conseguir una advertencia del CERT no válida?

Bien, la última pregunta. ¿Hay alguna manera en el código que puedo decir al servicio web para ignorar los CERT no válidos. He visto algunos mensajes sobre cómo hacer esto mediante programación con WCF, pero no los servicios web de edad.

¿Fue útil?

Solución

Es posible que tenga que instalar en sus servidores de los certificados intermedios utilizados para firmar sus certificados SSL.

Los navegadores intentará validar el certificado SSL mediante la comprobación de la validación de la cadena de CERT que firmaron el certificado SSL. Si el servidor no suministra la cadena de certificados con el certificado SSL, el navegador puede rechazar el certificado SSL. (Más de un tema para Firefox que IE). El certificado raíz todavía debe estar instalado en la máquina cliente para nada de esto al trabajo.

Otros consejos

He arreglado este error mediante la adición de esta línea antes de llamar al método Web:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (senderX, certificate, chain, sslPolicyErrors) => { return true; };

VB.NET equivalente es

   System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(senderX, certificate, chain, sslPolicyErrors)
                                                                             Return True
                                                                         End Function

Esto es realmente más de una pregunta serverfault, pero voy a añadir lo que pueda aquí.

La lista autoridad CERT de la raíz que las máquinas Windows normalmente la confianza se actualiza con bastante regularidad. Esto se reduce como una actualización de las ventanas de IE. Se puede ver MSDN para obtener más información .

Si sus clientes no tienen ventanas de actualización enciende o se están ignorando activamente actualizaciones de Windows, que es por desgracia muy común para muchos de los departamentos de TI, entonces no hay mucho que pueda hacer otra cosa que los proveedores de interruptor de SSL.

Básicamente, tienen que obtener las actualizaciones de certificados o que tenga que cambiar a un proveedor de CERT, que tiene una alta probabilidad de estar ya la confianza de las máquinas en cuestión. Típicamente este medio Verisign o Thawte . La tercera alternativa es la ruta que ha ido bajando:. Tiene confían en ellos manualmente la CA raíz

Al final del día, no me gusta la idea de cambiar una aplicación de esta manera simplemente porque los departamentos de TI en cuestión son retrasados ??mentales, pero la verdadera pregunta se reduce a cómo su empresa quiere manejar esto.

Cuando nos fijamos en la Ruta de certificación de Go Daddy de dicho certificado en el servidor web, ¿ves Ir Clase papá xxx xxx o Starfield Clase?

Y a partir de su cliente no es decir legado de Windows Vista hacia arriba, lo que hace la pantalla Ruta de certificación de Go Daddy? Ir Clase papá xxx xxx o Starfield Clase?

Y estos clientes que reciben la advertencia, que son clientes de versiones anteriores? es decir WinXP y mayores?

actualizaciones certificado raíz funciona de forma diferente a partir de Windows Vista.

http://support.microsoft.com/kb/931125

Los certificados raíz en Windows Vista y más tarde se distribuyen a través del mecanismo de actualización automática de la raíz - es decir, por cada certificado raíz. Cuando un usuario visita un sitio Web seguro (mediante el uso de HTTPS SSL), se lee en un correo electrónico seguro (S / MIME), o descargas de un control ActiveX que se firma (firma de código) y se encuentra con un nuevo certificado raíz, el certificado de software de verificación de la cadena de Windows comprueba Microsoft actualización para el certificado raíz. Si lo encuentra, se descarga la lista actual de certificados de confianza (CTL) que contiene la lista de todos los certificados raíz de confianza en el programa, y ??verifica que el certificado raíz está en la lista; A continuación, descarga el certificado raíz especificada con el sistema y lo instala en la carpeta Windows de confianza de certificados raíz de Autoridades tienda.

Usted probablemente encontrará que su ruta de certificación Go Daddy en el servidor web piensa que es Starfield Clase 2 en lugar de Go Daddy Clase 2, de modo que ha instalado el certificado raíz mal. Me llamó como cuando se ve en en el servidor web que no muestra un certificado raíz de la advertencia, descargar e instalar el Do papá clase 2 CERT de la raíz y retire el uno Starfield y el problema debería desaparecer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top