1.2K
Ayer necesitábamos convertir los certificados SSL x.509 de CRT a PEM recibidos de una CA autorizada. Lo hace compatible con software específico. En este artículo, le mostraremos la forma más fácil de convertir su archivo de certificado de .crt a . formato pem.
Los certificados SSL X.509 se pueden emitir en varios formatos:
- CRT o CER — Certificado;
- DER: reglas de codificación distinguidas;
- PEM: correo con privacidad mejorada;
- P7B (PKCS#7) — Archivo de certificado Pkcs #7;
- PFX (PKCS#12) — Formato de intercambio personal.
PEM (PAGrivalidad mimejorado METROail) es el formato de certificado SSL X.509 más popular emitido por los centros de autoridad de certificación con diferentes extensiones de archivo como .pem, .crt, .cer o .key. Los archivos de certificado tienen la extensión .pem, .crt, .cer y .key. Los archivos están codificados en Base64 y necesariamente comienzan con la línea “—– BEGIN CERTIFICATE —–” y terminan con la línea “—– END CERTIFICATE —–“.
De hecho, el formato de archivo PEM es un contenedor que también puede contener el certificado público o toda la cadena de certificados (claves públicas y privadas, certificados raíz) en el mismo archivo.
Si el archivo del certificado PEM contiene una clave privada, contendrá una sección adicional:
----- BEGIN PRIVATE KEY ----- ----- END PRIVATE KEY ------
El formato de clave pública PEM contiene las siguientes líneas de encabezado y pie de página:
— — -BEGIN PUBLIC KEY — — - — — -END PUBLIC KEY — — —
Los certificados PEM están codificados en formato de texto ASCII Base64 y puede verlos en cualquier editor de texto. Apache, Nginx y servidores web similares utilizan certificados SSL en el formato de archivo PEM.
Nota. Web Server IIS en Windows Server utiliza un formato de certificado diferente: .pfx.
DER es un archivo de certificado binario. Los archivos de certificado en este formato a menudo tienen una extensión de archivo .cer, pero también puede encontrar una extensión .der. Por regla general, el formato de certificado DER se utiliza en las plataformas Java.
P7B/PKCS#7. Los archivos de certificado P7B están codificados en Base64 y tienen una extensión .p7b o .p7c. Dicho archivo contiene solo un certificado y una cadena de certificados, pero no una clave privada. Puede instalar certificados P7B en Windows y Java Tomcat.
Los archivos de certificado P7B contienen las líneas:
-----BEGIN PKCS7----- -----END PKCS7-----
PFX/ PKCS#12 — este es un certificado en formato binario, incluye un certificado, una cadena de certificados (certificados raíz) y una clave privada. Tienen una extensión .pfx o .p12. Los certificados PFX son adecuados para la instalación en Internet Information Services (IIS) en Windows Server.
Nota. Consulte nuestro artículo sobre cómo renovar el certificado SSL en Exchange Server.
Extensiones de archivo de certificado comunes:
- .CRT — una extensión para archivos de certificados. El certificado en sí puede ser binario (.DER) o ASCII (.PEM). Las extensiones .CER y .CRT son sinónimos. Este tipo de archivo de certificado se usa más comúnmente en los sistemas operativos UNIX/Linux;
- .CER — forma alternativa de .CRT de Microsoft;
- .LLAVE — esta extensión de archivo se usa para claves públicas y privadas PKCS#8, que se pueden almacenar en formato binario .DER o ASCII .PEM;
- .PFX — archivo de certificado en formato binario PFX;
- .P7B — archivo de certificado en formato PKCS#7 base64.
En primer lugar, verifique si su archivo de certificado no está ya en formato PEM, pero el archivo en sí tiene una extensión .crt. Intente abrir su archivo .crt con cualquier editor de texto o enumere su contenido con PowerShell:
Get-Content .\cert.crt
Si el contenido del archivo comienza con —– BEGIN y puede leerlo en un editor de texto, esto indica que el archivo ya usa el formato base64, que se puede leer en ASCII (el archivo no está en formato binario).
Esto significa que su certificado ya está en formato PEM. Simplemente cambie la extensión del archivo de .crt a .pem en el Explorador de archivos de Windows.
Para convertir archivos de certificados SSL, debe utilizar herramientas de terceros. La herramienta de conversión más utilizada es OpenSSL.
Nota. OpenSSL es un conjunto de herramientas para los protocolos Transport Layer Security (TLS) y Secure Sockets Layer (SSL) (también una biblioteca criptográfica de propósito general). La conversión de certificados utilizando la biblioteca OpenSSL se considera una de las formas más seguras: todos los datos se guardarán directamente en el dispositivo en el que se realizarán las operaciones de conversión.
Puede ver la información del archivo del certificado usando OpenSSL:
openssl x509 -in /root/cert.pem –text
¿Cómo convertir un certificado CRT SSL a PEM en Windows?
En Windows, hay varias formas de convertir un archivo de certificado SSL de un formato a otro.
- Con asistente de exportación de certificados incorporado;
- Usando el módulo PSPKI PowerShell;
- Con puertos openssl para Windows.
Utilice el asistente de exportación de certificados para cambiar el formato de archivo CRT
En Windows 10/11 y Windows Server 2022/2019/2016, puede convertir CER al formato de archivo de certificado DER (PEM) desde la herramienta de exportación de certificados integrada de Windows.
- Ejecute el Explorador de archivos, localice y haga doble clic en su archivo .cer;
- En la ventana de propiedades del certificado, vaya a la Detalles pestaña y haga clic en el botón «Copiar a archivo»;
- Prensa Próximo en el primer paso del Asistente de exportación de certificados;
- Ahora debe seleccionar el formato de exportación del certificado. Seleccione la opción “X.509 codificado en BASE-64 (.CER)” y haga clic en Siguiente;
- Especifique el nombre del archivo;
- presione el Finalizar botón;
- Ahora puede cambiar la extensión del archivo de su certificado de .cer a .pem. Puede usar el siguiente comando de PowerShell:
rename-item C:\PS\new_cert.cer c:\ps\new_cert.pem
- Asegúrese de que el formato de archivo sea Base64:
cat c:\ps\new_cert.pem
Convierta certificados SSL en Windows usando PowerShell
Varios cmdlets de PowerShell integrados están disponibles para exportar certificados instalados desde el almacén de certificados local a varios formatos de archivo. Para exportar un certificado, debe especificar su FriendlyName o Thumbprint:
Exportar certificado a PFX:
$mycert= cert:\LocalMachine\my\15DA70574DDE43177B6F6F6F00BF44231A1CF07E $mypwd = ConvertTo-SecureString -String "123456" -Force -AsPlainText $mycert | Export-PfxCertificate -FilePath C:\ps\mypfx.pfx -Password $mypwd
Exportar certificado a CER:
$mycert | Export-Certificate -Type cer -FilePath c:\ps\mypfx.cer -Force
Exportar certificado a P7B:
$mycert |Export-Certificate -Type p7b -FilePath c:\ps\mypfx.p7b -Force
Exportar certificado a SST (como CER):
$mycert | Export-Certificate -Type SST -FilePath c:\ps\mypfx.sst -Force
Para administrar y convertir certificados SSL en Windows, puede usar el módulo PSPKI (PowerShell PKI Module). Puedes instalar PSPKI desde PSGallery:
Install-Module -Name PSPKI
Después de la instalación, debe importar el módulo a la sesión:
Import-Module PSPKI
Hay dos cmdlets disponibles en el módulo PSPKI para cambiar el formato del archivo del certificado:
- Convertir-PemToPfx
- Convertir-PfxToPem
Puede obtener información sobre el archivo del certificado:
Show-Certificate -Certificate "C:\PS\Certs\server1-der.cer"|fl
Para convertir un certificado PFX a formato PEM, ejecute el comando:
Convert-PfxToPem -InputFile "C:\PS\Certs\server1.cer” -OutputFile ‘"C:\PS\Certs\server1.pem"
Si intenta convertir un certificado DER a PEM de esta manera, aparecerá un error:
El archivo de entrada no es un archivo PKCS#12/PFX válido
Conversión de formato de certificado SSL usando OpenSSL para Windows
En caso de que su archivo crt esté en formato binario, puede convertirlo usando la utilidad OpenSSL para Windows (en este caso usamos el puerto SSL abierto gnuwin32, versión 0.9.8h).
Descargue el archivo con los binarios de OpenSSL (openssl-0.9.8h-1-bin.zip) y extráigalo a una carpeta local (por ejemplo, C:\OpenSSL). Copie su archivo .crt en el mismo directorio. Abra el símbolo del sistema como administrador y cambie la carpeta:
cd C:\OpenSSL\bin
Si el archivo crt está en formato binario, ejecute el siguiente comando para convertirlo a formato PEM:
Openssl.exe x509 -inform DER -outform PEM -in my_certificate.crt -out my_certificate.crt.pem
Cambie los nombres de los archivos de certificados por los suyos propios. Este comando lo ayuda a convertir un archivo de certificado DER (.crt, .cer, .der) a PEM.
Nota. Cuando está convirtiendo los archivos de su certificado a diferentes formatos usando OpenSSL, los datos privados de su certificado están protegidos, ya que OpenSSL nunca los almacena durante la conversión del archivo.
Después de ejecutar el comando, el nuevo archivo my_certificate.crt.pem debería aparecer en la misma carpeta. Ábralo y asegúrese de que esté codificado en Base64. Este certificado ahora se puede importar a su servidor web o en cualquier lugar que desee.
Si ejecuta la herramienta openssl.exe y recibe un error No se puede cargar la información de configuración desde /usr/local/ssl/openssl.cnfdebe configurar una nueva variable de entorno de Windows con el siguiente comando:
Set OPENSSL_CONF=C:\openssl\share\openssl.cnf
Luego, vuelva a ejecutar la ventana del símbolo del sistema e intente ejecutar un comando para convertir su archivo de certificado del formato de archivo CRT a PEM.
Convierta el certificado SSL CRT al formato PEM en Linux
Veamos cómo convertir un archivo de certificado CRT/DER al formato PEM en Linux. Primero, debe instalar el paquete OpenSSL.
En RedHat/CentOS/Fedora puede instalar OpenSSL de la siguiente manera:
yum install openssl
Nota. En este caso el paquete openssl-1:1.1.1c-2.el8.x86_64 ya está instalado.
En las distribuciones Debian/Ubuntu, puede instalar este paquete usando APT:
apt-get install openssl
Para convertir su archivo CER a formato PEM usando OpenSSL, ejecute el siguiente comando:
openssl x509 -inform der -in /home/tstcert.cer -out /home/tstcert.pem
tstcert.cer — archivo de certificado de origen;
tstcert.pem: archivo pem de destino.
Algunos ejemplos más del uso de OpenSSL para convertir varios formatos de archivo de certificado:
- PEM a DER: openssl x509 -outform der -in certificado.pem -out certificado.der
- PKCS#12 con clave privada para PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodos
- PEM y archivos de clave privada para PKCS#12: openssl pkcs12 -exportar -salir certificado.pfx -inkey clave privada.clave -in certificado.crt -certfile CACert.crt
- PEM a DER: openssl x509 -outform der -in certificado.pem -out certificado.der
- PEM a PKCS#7 (.p7b, .p7c): openssl crl2pkcs7 -nocrl -certfile certificado.pem -out certificado.p7b -certfile CAcert.cer
- PEM a PFX: openssl pkcs12 -export -out site.pfx -inkey site.key -in site.crt -certfile site.ca-bundle (se le pedirá que configure la contraseña para la clave).
- DER a PEM: openssl x509 -inform der -in site.der -out site.crt
- P7B a PEM: openssl pkcs7 -print_certs -in site.p7b -out site.cer
- P7B a PFX: openssl pkcs7 -print_certs -in site.p7b -out certificate.ceropenssl pkcs12 -export -in site.cer -inkey site.key -out site.pfx -certfile site.ca-bundle
- PFX a PEM: openssl pkcs12 -in site.pfx -out site.crt -nodos
Uso de Openssl-ToolKit para convertir un archivo de certificado CRT
Si no se siente cómodo con la línea de comandos de OpenSSL, puede usar el Kit de herramientas de OpenSSL script para convertir los certificados. El script OpenSSL ToolKit es una herramienta contenedora simple para la CLI de OpenSSL que ayuda a automatizar las tareas comunes de administración de certificados. Al usar este script, los certificados y las claves se procesan directamente en el host y no se transfieren a ningún lado.
- Ejecute el siguiente comando para instalar el script OpenSSL ToolKit en Linux:
echo https://github.com/tdharris/openssl-toolkit/releases/download/1.1.0/openssl-toolkit-1.1.0.zip \ | xargs wget -qO- -O tmp.zip && unzip -o tmp.zip && rm tmp.zip && ./openssl-toolkit/openssl-toolkit.sh
- Para convertir un archivo de certificado, seleccione 2 > Intro.
- Seleccione el tipo de conversión (4. DER a PEM).
- Introduzca el nombre del archivo de certificado: /root/cert.cer.
- Especifique el nombre del archivo a convertir y presione Entrar.
- El script convertirá el archivo del certificado.