Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Internet Information Services
Información general
Este artículo le ayuda a solucionar problemas de Capa de sockets seguros (SSL) relacionados solo con Internet Information Services (IIS). Trata los certificados de servidor usados para la autenticación de servidor, no para los certificados de cliente.
Si la sección Certificados de cliente está establecida en Requerir y se producen problemas, este artículo no es el que debe hacer referencia. Este artículo está diseñado solo para solucionar el problema de certificados SSL Server.
Es importante saber que cada certificado consta de una clave pública (usada para el cifrado) y una clave privada (usada para el descifrado). La clave privada solo se conoce en el servidor.
El puerto predeterminado para HTTPS es 443. Se supone que está bien familiarizado con el protocolo de enlace SSL y el proceso de autenticación del servidor durante el protocolo de enlace SSL.
Herramientas usadas en este solucionador de problemas
Las herramientas que se usan para solucionar los distintos escenarios son:
- Monitor de red 3.4
- Wireshark
Escenarios
Verá el siguiente mensaje de error al examinar un sitio web a través de HTTPS:
El primer requisito previo que debe comprobarse es si el sitio web es accesible a través de HTTP. Si no es así, es probable que haya un problema independiente que no se trata en este artículo. Antes de usar este solucionador de problemas, debe tener el sitio web operativo en HTTP.
Ahora, supongamos que el sitio web es accesible a través de HTTP y se muestra el mensaje de error anterior al intentar navegar a través de HTTPS. El mensaje de error se muestra porque se produjo un error en el protocolo de enlace SSL. Puede haber muchas razones que se detallan en los siguientes escenarios.
Escenario 1
Compruebe si el certificado de servidor tiene la clave privada correspondiente. Vea la captura de pantalla siguiente del cuadro de diálogo Certificado:
Solución
Si falta la clave privada, debe obtener un certificado que contenga la clave privada, que es básicamente . Archivo PFX . Este es un comando que puede intentar ejecutar para asociar la clave privada con el certificado:
C:\>certutil - repairstore my "906c9825e56a13f1017ea40eca770df4c24cb735"
Si la asociación se realiza correctamente, verá la ventana siguiente:
En este ejemplo, 906c9825e56a13f1017ea40eca770df4c24cb735
es la huella digital del certificado. Para obtener la huella digital, siga estos pasos:
- Abra el certificado.
- Seleccione la pestaña Details (Detalles).
- Desplácese hacia abajo para buscar la sección huella digital.
- Seleccione la sección huella digital y seleccione el texto en él.
- Realice una instrucción Ctrl+A y, a continuación, Ctrl+C para seleccionarla y copiarla.
Nota:
Es posible que el certutil
comando no siempre se realice correctamente. Si se produce un error, debe obtener un certificado que contenga la clave privada de la entidad de certificación (CA).
Escenario 2
En este escenario, tenga en cuenta que tiene un certificado de servidor que contiene la clave privada instalada en el sitio web. Sin embargo, seguirá viendo el error que se muestra en el escenario 1. Todavía no puede acceder al sitio web a través de HTTPS.
Solución
Si tiene un certificado que contiene la clave privada, pero no puede acceder al sitio web, también puede ver la siguiente advertencia de SChannel en los registros de eventos del sistema:
Event Type: Error
Event Source: Schannel
Event Category: None
Event ID: 36870
Date: 2/11/2012
Time: 12:44:55 AM
User: N/A
Computer:
Description: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x80090016.
Este evento o error indica que se produjo un problema al adquirir la clave privada del certificado. Para resolver la advertencia, siga estos pasos:
Compruebe los permisos en la carpeta MachineKeys . Todas las claves privadas se almacenan en la carpeta MachineKeys , por lo que debe asegurarse de que tiene los permisos necesarios.
Si los permisos están en su lugar y si el problema todavía no se ha corregido, podría haber un problema con el certificado. Es posible que se haya dañado. Es posible que vea un código de error de en el siguiente registro de
0x8009001a
eventos de SChannel:Event Type: Error Event Source: Schannel Event Category: None Event ID: 36870 Date: 2/11/2012 Time: 12:44:55 AM User: N/A Computer: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x8009001a.
Compruebe si el sitio web funciona con un certificado de prueba.
Realice una copia de seguridad del certificado existente y, a continuación, reemplácelo por un certificado autofirmado.
Intente acceder al sitio web mediante HTTPS.
Si funciona, el certificado usado anteriormente estaba dañado y debe reemplazarse por un nuevo certificado de trabajo. A veces, es posible que el problema no esté con el certificado, pero con el emisor. Durante la comprobación de la cadena de certificados, es posible que vea el error
CERT_E_UNTRUSTEDROOT (0x800b0109)
si el certificado de entidad de certificación raíz no es raíz de confianza.Para corregir este error, agregue el certificado de la ENTIDAD de certificación al almacén de CA raíz de confianza en Mi cuenta de equipo en el servidor. Durante la comprobación de la cadena de certificados, también puede obtener el error
-2146762480(0x800b0110)
.Para resolver el error, siga estos pasos para comprobar el tipo de uso del certificado:
- Abra el certificado.
- Seleccione la pestaña Details (Detalles).
- Seleccione Editar propiedades.
- En la pestaña General , asegúrese de que la opción Habilitar todos los propósitos para este certificado está seleccionada y, lo más importante, la autenticación del servidor debe estar presente en la lista.
Escenario 3
Los dos primeros escenarios ayudan a comprobar la integridad del certificado. Después de confirmar que no hay ningún problema con el certificado, se resuelve un problema considerable. Pero, ¿qué ocurre si el sitio web todavía no es accesible a través de HTTPS? Compruebe los enlaces HTTPS del sitio web y determine en qué puerto y dirección IP está escuchando.
Solución
Ejecute el siguiente comando para asegurarse de que ningún otro proceso está escuchando en el puerto SSL usado por el sitio web.
netstat -ano" or "netstat -anob"
Si hay otro proceso que escucha en ese puerto, compruebe por qué ese proceso usa ese puerto.
Intente cambiar la combinación IP-Port para comprobar si el sitio web es accesible.
Escenario 4
Por ahora, puede asegurarse de que tiene un certificado de trabajo adecuado instalado en el sitio web y no hay ningún otro proceso mediante el puerto SSL para este sitio web. Sin embargo, es posible que todavía vea el error "Página no se puede mostrar" al acceder al sitio web a través de HTTPS. Cuando un cliente se conecta e inicia una negociación SSL, HTTP.sys busca en su configuración SSL el par "IP:Port" al que está conectado el cliente. La configuración de HTTP.SYS SSL debe incluir un hash de certificado y el nombre del almacén de certificados antes de que la negociación SSL se realice correctamente. El problema podría ser con .HTTP.SYS SSL Listener
El hash de certificado registrado con HTTP.sys puede ser NULL o puede contener GUID no válido.
Solución
Ejecute el comando siguiente:
netsh http show ssl
Estos son ejemplos de escenarios de trabajo y no trabajo:
Escenario de trabajo
Configuración Setting IP:port 0.0.0.0:443 Hash de certificado c09b416d6b 8d615db22 64079d15638e96823d Identificador de la aplicación {4dc3e181-e14b-4a21-b022-59fc669b0914} Nombre del almacén de certificados My Comprobar la revocación de certificados de cliente Habilitado Hora de actualización de revocación 0 Tiempo de espera de recuperación de direcciones URL 0 ...... ...... Escenario de no trabajo
Configuración Setting IP:port 0.0.0.0:443 Hash de certificado Identificador de la aplicación {00000000-0000-0000-0000-000000000000} CertStoreName My Comprobar la revocación de certificados de cliente 0 Hora de actualización de revocación 0 Tiempo de espera de recuperación de direcciones URL 0 ...... ...... El valor hash que se ve en el escenario de trabajo es la huella digital del certificado SSL. Observe que el GUID es cero en un escenario que no funciona. Es posible que vea que el hash tiene algún valor o está en blanco. Incluso si quita el certificado del sitio web y, a continuación, ejecuta
netsh http show ssl
, el sitio web seguirá enumerando el GUID como todos los 0s. Si ve el GUID como "{0000...............000}", hay un problema.Para quitar esta entrada, ejecute el siguiente comando:
netsh http delete sslcert ipport=<IP Address>:<Port>
Por ejemplo:
netsh http delete sslcert ipport=0.0.0.0:443
Para determinar si se muestran direcciones IP, abra un símbolo del sistema y ejecute el siguiente comando:
netsh http show iplisten
Si el comando devuelve una lista de direcciones IP, quite cada dirección IP de la lista mediante el siguiente comando:
netsh http delete iplisten ipaddress=<IP Address>
Nota:
Reinicie IIS después de esto mediante el
net stop http /y
comando .
Escenario 5
A pesar de todo esto, si todavía no puede examinar el sitio web en HTTPS, capture un seguimiento de red desde el cliente o servidor. Filtre el seguimiento por "SSL o TLS" para examinar el tráfico SSL.
Esta es una instantánea de seguimiento de red de un escenario que no funciona:
Esta es una instantánea de seguimiento de red de un escenario de trabajo:
Este es el método de cómo se examina un seguimiento de red. Debe expandir los detalles del marco y ver qué protocolo y cifrado ha elegido el servidor. Seleccione "Server Hello" en la descripción para ver esos detalles.
En el escenario no operativo, el cliente se ha configurado para usar solo TLS 1.1 y TLS 1.2. Sin embargo, el servidor web iiS se configuró para admitir hasta TLS 1.0, por lo que se produjo un error en el protocolo de enlace.
Compruebe las claves del Registro para determinar qué protocolos están habilitados o deshabilitados. Esta es la ruta de acceso:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
La DWORD habilitada debe establecerse en 1. Si se establece en 0, el protocolo está deshabilitado.
Por ejemplo, SSL 2.0 está deshabilitado de forma predeterminada.
Más información
- Configuración de SSL en IIS
- El servidor Hello que falta en el protocolo de enlace TLS
- Support for SSL/TLS protocols on Windows (Compatibilidad con protocolos SSL/TLS en Windows)