Microsoft IIS (Internet Information Services) usa formato PFX para certificados SSL, diferente de los archivos PEM que producen GetHTTPS y la mayoría de las herramientas basadas en Linux. Esta guía cubre la conversión del certificado y su instalación en IIS 10.
Requisitos previos
- Windows Server con IIS 10 instalado
- Archivos de certificado de GetHTTPS:
cert.pem,privkey.pem,chain.pem - OpenSSL instalado (viene con Git for Windows, o instalar por separado)
Paso 1: Convertir PEM a PFX
IIS no puede leer archivos PEM directamente. Convierte al formato PFX usando OpenSSL:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
Se te pedirá establecer una contraseña de exportación; recuérdala para el paso de importación.
¿No tienes OpenSSL? Si tienes Git for Windows instalado, OpenSSL está en
C:\Program Files\Git\usr\bin\openssl.exe. O descárgalo desde slproweb.com/products/Win32OpenSSL.html.
Para más información sobre formatos de certificados: PEM, PFX, DER explicados
Paso 2: Importar el PFX en IIS
- Abre IIS Manager (ejecuta
inetmgr) - Haz clic en el nombre de tu servidor en el panel izquierdo
- Haz doble clic en Server Certificates en el panel central
- Haz clic en Import… en el panel de acciones de la derecha
- Busca tu archivo
certificate.pfx - Ingresa la contraseña de exportación que estableciste en el Paso 1
- Selecciona el almacén de certificados: Web Hosting (o Personal)
- Haz clic en OK
El certificado ahora aparece en la lista de Server Certificates.
Paso 3: Vincular HTTPS a tu sitio
- En IIS Manager, expande Sites en el panel izquierdo
- Haz clic derecho en tu sitio web → Edit Bindings…
- Haz clic en Add…
- Configura:
- Type: https
- Port: 443
- Host name:
yourdomain.com(dejar en blanco para todos los nombres de host) - SSL certificate: selecciona el certificado que acabas de importar
- Haz clic en OK
- Repite para
www.yourdomain.comsi es necesario
Paso 4: Redirigir HTTP a HTTPS
Instala el módulo URL Rewrite (si no está instalado ya), luego añade al web.config de tu sitio:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Paso 5: Verificar
Abre https://yourdomain.com en un navegador. Haz clic en el candado para verificar los detalles del certificado.
Verificación con PowerShell:
# Check the certificate bound to port 443
netsh http show sslcert
Solución de problemas
«A specified logon session does not exist»
La clave privada no se importó correctamente. Vuelve a exportar el archivo PFX con:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem -passout pass:YourPassword
Asegúrate de que el PFX se creó a partir de archivos de clave + certificado que coincidan.
El certificado no aparece en el desplegable de vinculación
La importación pudo haber fallado silenciosamente. Revisa Event Viewer → Windows Logs → Application en busca de errores. Asegúrate de que la contraseña del PFX sea correcta y que el archivo no esté corrupto.
«This site is not secure» después de vincular
Verifica que la cadena de certificados esté completa. El archivo chain.pem debe incluirse en la conversión a PFX (-certfile chain.pem). Sin él, los navegadores no pueden verificar la cadena de confianza.
Preguntas frecuentes
¿Puedo usar un certificado de Let’s Encrypt con IIS?
Sí. Los certificados de Let’s Encrypt funcionan con cualquier servidor, incluyendo IIS. El único paso extra es convertir de PEM a PFX. GetHTTPS te da archivos PEM; el comando de OpenSSL anterior los convierte.
¿Existe una herramienta como Certbot para IIS?
win-acme (anteriormente letsencrypt-win-simple) es el cliente ACME más popular para Windows/IIS. Gestiona la emisión de certificados, la conversión a PFX, la vinculación en IIS y la renovación automática en una sola herramienta. Úsalo si quieres Let’s Encrypt completamente automatizado en IIS.
¿Cómo renuevo en IIS?
- Obtén un nuevo certificado desde GetHTTPS
- Convierte a PFX:
openssl pkcs12 -export -out new.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem - Importa el nuevo PFX en IIS Manager → Server Certificates
- Actualiza la vinculación del sitio para usar el nuevo certificado
- Elimina el certificado antiguo de Server Certificates
Para renovación automatizada, considera win-acme, que gestiona todo el ciclo automáticamente.
¿IIS soporta certificados ECDSA/ECC?
IIS 10 en Windows Server 2016+ soporta certificados ECDSA. GetHTTPS genera ECDSA P-256 por defecto, lo cual funciona con IIS moderno. Las versiones anteriores de IIS (8.5 y anteriores) pueden requerir certificados RSA.
¿Puedo usar IIS con múltiples sitios en la misma IP?
Sí. IIS 8+ soporta SNI (Server Name Indication), que permite múltiples certificados SSL en la misma dirección IP. Al añadir la vinculación HTTPS, marca «Require Server Name Indication» e ingresa el nombre de host. Cada sitio puede tener su propio certificado.
¿Cómo encuentro OpenSSL en Windows?
OpenSSL no viene incluido con Windows por defecto. Fuentes comunes:
- Git for Windows lo incluye en
C:\Program Files\Git\usr\bin\openssl.exe - Chocolatey:
choco install openssl - Compilaciones Win32/Win64: descargar desde slproweb.com
Después de instalar, añádelo a tu PATH o usa la ruta completa en los comandos.