Los formatos
- PFX / P12 (PKCS#12): un contenedor protegido con contraseña con certificado, intermedios y clave privada. Estándar en Windows, IIS, Exchange y Azure.
- PEM: archivos de texto con bloques como
-----BEGIN CERTIFICATE-----. Estándar en Linux, nginx, Apache y HAProxy. Las extensiones.pem,.crt,.cery.keysuelen ser PEM. - DER: lo mismo que PEM, pero en binario. En Windows,
.cersuele ser DER. - P7B (PKCS#7): solo certificados, sin clave; la CA lo entrega a menudo como cadena.
Sin OpenSSL: convertir en el navegador
Suelta el archivo PFX en el conversor de certificados e introduce la contraseña. Después puedes descargar certificado, cadena y clave por separado o en un bundle. En sentido contrario, el conversor toma certificado y clave en PEM y crea un PFX, completando automáticamente los intermedios que falten. Todo ocurre en el navegador.
PFX → PEM con OpenSSL
# todo en un archivo (clave sin cifrar) openssl pkcs12 -in archivo.pfx -out todo.pem -nodes # solo el certificado del servidor openssl pkcs12 -in archivo.pfx -clcerts -nokeys -out server.crt # solo los intermedios openssl pkcs12 -in archivo.pfx -cacerts -nokeys -out chain.crt # solo la clave privada openssl pkcs12 -in archivo.pfx -nocerts -nodes -out server.key
Error «unsupported» con OpenSSL 3
error:0308010C:digital envelope routines::unsupported
Los PFX antiguos están cifrados con RC2 o 3DES. OpenSSL 3 solo carga estos algoritmos en modo legacy. La solución es la opción -legacy:
openssl pkcs12 -legacy -in antiguo.pfx -out todo.pem -nodes
PEM → PFX con OpenSSL
openssl pkcs12 -export -out server.pfx \ -inkey server.key -in server.crt -certfile chain.crt
Windows dice que la contraseña es incorrecta
OpenSSL 3 cifra los PFX con AES-256 por defecto. Windows Server 2016 y versiones anteriores no pueden abrirlos y avisan de una contraseña incorrecta («The password you entered is incorrect») aunque sea correcta. Los archivos creados con 3DES funcionan en todas partes:
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile chain.crt \ -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg sha1
El conversor de certificados crea los PFX directamente con 3DES y lee tanto archivos AES como RC2 antiguos.
¿Qué formato para qué servidor?
- nginx: PEM:
ssl_certificatecon certificado del servidor y cadena en un archivo,ssl_certificate_keycon la clave. - Apache 2.4.8+: PEM:
SSLCertificateFilecon certificado y cadena,SSLCertificateKeyFilecon la clave. - HAProxy: un único archivo PEM con certificado, cadena y clave.
- IIS, Exchange, servicios de Windows: PFX.
- Tomcat y Java 9+: PKCS#12 directamente como keystore (
keystoreType="PKCS12").
FAQ
He olvidado la contraseña del PFX. ¿Y ahora?
Un PFX no se puede abrir sin contraseña. Si el certificado sigue instalado en un servidor Windows y la clave es exportable, vuelve a exportarlo allí con una contraseña nueva. Si no, solo queda la reemisión.
¿Por qué faltan los intermedios tras la conversión?
Algunos PFX solo contienen el certificado del servidor. El conversor descarga automáticamente los intermedios que faltan mediante la entrada AIA del certificado.
¿.cer es lo mismo que .crt?
Ambas son solo extensiones para certificados. El contenido puede ser PEM (texto) o DER (binario). Abre el archivo en un editor de texto: si empieza por -----BEGIN CERTIFICATE-----, es PEM.