Este documento, pretende mostrar de una forma fácil y simple la manera de convertir certificados en los diferentes formatos posibles.
-
Conversión de certificados X.509 o claves RSA desde formato PEM hacia DER y viceversa.
-
Conversión de certificados X.509 o claves RSA en certificados Public-Key Cryptography Standard #12
(PKCS#12).
X.509 o claves RSA ---> Certificados PEM o DER
Lo primero es tener una instalación de OpenSSL activa y operativa para pode ejecutar el comandos "openssl"
desde una consola o terminal. Los certificados X.509 y las claves RSA
pueden ser almacenados en diferentes formatos. Dos formatos comunes son
DER (un formato binario utilizado principalmente por Java y plataformas
Macintosh) y PEM (una representación base64 de los certificados DER con
información de cabecera y pie final, que es utilizado principalmente
por plataformas UNIX y Linux). Existe otro formato de certificado
obsoleto llamado NET (Netscape Certificate) que ha sido utilizado en
las primeras versiones de IIS (hasta la 4, incluida) y algunos otros
formatos que no se cubren en este documento.Una clave y su correspondiente certificado así como el certificado root y certificados intermedios, pueden ser almacenados en un único PKCS#12 (extensiones .P12 o .PFX), como explicaremos más adelante.
Utilizaremos el comando "openssl" para convertir los certificados entre los diferentes formatos de la siguiente manera.
-
Para convertir un certificado X.509 de PEM a DER:
# openssl x509 –in input.crt –inform PEM –out output.crt –outform DER
- Para convertir un certificado X509 de DER a PEM
# openssl x509 –in input.crt –inform DER –out output.crt –outform PEM
- Para convertir una clave RSA de PEM a DER:
# openssl rsa –in input.key –inform PEM –out output.key –outform DER
- Para convertir una clave RSA de DER a PEM:
# openssl rsa –in input.key –inform DER –out output.key –outform PEM
Si las claves que estamos importando, estuviesen cifradas con algún algoritmos de cifrado simétrico conocido, se solicitará la password en la ejecución del comando.
Para convertir una clave a o desde el formato obsoleto NET, sustituiremos NET por PEM o DER como queramos. La clave será almacenada de forma cifrada utilizando un algoritmo de cifrado simétrico pobre llamado RC4, de modo que una passphrase será pedida, aunque passphrase en blanco son aceptadas.
Las claves son información sensible que deben de ser almacenadas de forma cuidadosa y cifradas utilizando cifradores robustos y passphrase adecuadas. Podemos utilizar cualquiera de los siguientes cifradores simétricos DES, TripleDES, IDEA, 128AES, 192AES o 256AES, para proteger nuestro certificado, simplemente añadiendo el flag correspondiente (des, des3, idea, aes128, aes192 o aes256) en la línea de comando.
Si no se dispone de acceso a a passphrase de una clave cifrada, no será posible recuperar la clave y será necesario generar una nueva clave con sus correspondientes certificados.
X.509 o claves RSA ---> Certificados PKCS#12
Explicamos como convertir certificados X.509 o claves RSA en formato Public-Key Cryptography Standard #12
(PKCS#12). Para ello necesitaremos al igual que antes una instalación activa de OpenSSL.El estándar PKCS#12, especifica un formato portable para almacenar y transportar certificados, claves privadas y secretos varios. Es el formato preferido por muchos operaciones de gestión de certificados y es soportado por la mayoría de browsers y familias recientes de sistema operativo Windows. Tiene la ventaja de que es capaz de almacenar el certificado con su correspondiente clave, con el certificado root (de la CA) y otros certificados posibles de la cadena en un único fichero.
Primero nos aseguraremos de que el certificado esta en formato PEM. Para ello deberemos de realizar cualquiera de las operaciones descritas en el apartado anterior para convertir el certificado X.509 o clave RSA en formato DER hacia formato PEM. Si tuviesemos que convertir una clave RSA de NET a PEM, necesitariamos la passphrase, en caso negativo no podríamos recuperar el certificado, en caso de que la tengamos, ejecutamos:
# openssl rsa –in input.key –inform NET –out output.key –outform PEMUna vez que tenemos el certificado en formato PEM, utilizaremos de nuevo el comando "openssl" para leer el certificado codificado PEM y sus correspondientes claves para exportarlo en un único certificado PKCS#12.
# openssl pkcs12 -export -in input.crt -inkey input.key -out bundle.p12Por defecto, la clave será cifrada utilizando TripleDES de modo que nos solicitará un password para el certificado exportado (por supuesto puede dejarse en blanco).
El certificado PEM formateado y cualquier otro certificado de la cadena serán concatenados en un único fichero (por ejemplo, root.crt) e incluidos en el fichero PKCS#12 de la siguiente manera.
# openssl pkcs12 -export -in input.crt -inkey input.key -certfile root.crt -out bundle.p12
No hay comentarios:
Publicar un comentario