Vamos a ver en este tutorial simple, como generar un certificado .p12, donde necesitaremos 2 cosas, por una lado la clave pública y por otro la clave privada para por unirlos en un solo archivo de extensión .p12.
Como dije, necesitamos el certificado SSL (archivo con extensión .cer o .crt) y la key del certificado (archivo .key), pero si además tenemos los certificados intermedios (archivos .cer) voy a mostrar como agregarlo.
1- Generar .p12
openssl pkcs12 -export -in certificado_original.cer -inkey llave.key -name personal -out archivo.p12
2- Generar .p12 con certificado intermedio
openssl pkcs12 -export -inkey llave.key -in certificado_original.cer -out archivo.p12 -certfile multi.pem
- llave.key: la clave privada del certificado.
- certificado_original.cer: la clave pública del certificado. Podría ser un archivo .crt.
- name: le podemos dar un nombre.
- archivo.p12: el fichero resultante de unir ambas claves.
- multi.pem: este archivo está compuesto por el contenido de los archivos .cer «extra» que nos envían desde la entidad certificadora; se trata de certificados propios de la entidad que validan que el certificado que vamos a usar ha sido emitido por ellos.
3- Comprobar fecha de caducidad de un .p12
openssl x509 -enddate -noout -in archivo.p12
4- Saber fecha de creación de un certificado .p12
openssl x509 -dates -noout -in archivo.p12
5- Solución a error Unable to load certificate
Si nos da un error al validad el certificado es porque debemos usar otra opción, el mensaje de error por ejemplo es el siguiente
Could not read certificate from archivo.p12 40972A2A9B7F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0), Properties () Unable to load certificate
La solución es usar la opción -legacy
openssl pkcs12 -in archivo.p12 -legacy -nodes