Inicio > CFD, CFDi, PHP > Llave .key y Certificado .cer a formato PEM

Llave .key y Certificado .cer a formato PEM

Dentro de la generación de CFD’s (Comprobante fiscal digital) es necesario utilizar el certificado que proporciona el SAT para el sellado de los mismos. Ya se cumplieron 2 años desde la implementación de estos en un sistema PHP por lo que retomo el tener que convertir estos archivos a formato PEM que es el formato con que los algoritmos PHP de OpenSSL pueden manipular. A si es que si ustedes solicitaron certificados recuerden que tienen caducidad de 2 añitos(actualmente me he encontrado con algunos de 4).

Si nos facilitan todos los archivos generados en el proceso nos encontraremos con los siguientes archivos:

  • 00001000000303759245.cer – Certificado (para sellar) el cual siempre incluye la llave pública.
  • aaa010101aaa_yymmdd.key –  La llave privada está en un archivo PKCS8 en formato DER por lo que está encriptada.
    El cifrado de la llave privada puede estar en uno de 3 formatos:DES,Triple DES,RC2
  • aaa010101aaa.txt – Contraseña de la llave o bien te la mandaron escrita.
  • aaa010101aaa_yymmdd.req – archivo de requerimiento del SOLCEDI
  • aaa010101aaa_yymmdd.sdg – archivo de ensobretado del SOLCEDI

Ahora bien solo utilizaremos los 3 primeros:

  1. Llave privada a formato PEM una primera opción la que nos pedirá la contraseña

$ openssl pkcs8 -inform DER -in aaa010101aaa_yymmdd.key -out aaa010101aaa_yymmdd.key.pem
Enter Password:
$

Una segunda opción en la cual podemos especificar la contraseña al hacer el cambio

$ openssl pkcs8 -inform DER -in aaa010101aaa_yymmdd.key -out aaa010101aaa_yymmdd.key.pem -passin pass:a0123456789

Con lo anterior si no tenemos algún error podemos vizualizar el contenido del archivo ( BASE64)

$ cat aaa010101aaa_yymmdd.key.pem
—–BEGIN PRIVATE KEY—–
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKCSggouRhAEl1HU
mOREKr9PQmoHmQ5o3D2dqq+uns6zfIqVZE34ntr1cq5jwfn83KNQVMLYX3fHagRA
mgV8cI1fLkQYTWtnOMcBltXMbHG0i7VlkDG7xRgpt+uNz9RVQaNbuL7msrGtlwQw
k7OmSuyrT4RqTMsEwRm5GO4GyBDrAgMBAAECgYAhBH9A4Kr/eDI1XWXi6jFwDTg2
3UEXuXAwK0+BuIJnNnkRdg6eCdWAaKAgQ9sLMHeeDVKgjiVzV8nw/eet4RyzYbwQ
8+4Ozd98NIkICIY/7UD5GCB/foUblWfoUOXK/VRCwOb/WBiOTFHXPvZdhldpysrB
eWqO3+4x1LjrLnWFoQJBANQJiYChFAmyErzoI13/TXnC6fvlAvDOGhqHvEj4Qt3G
bHYk/t/QnglruVVt1qngay9hnLmaHmJqOyKoJLDF6ScCQQDB3VN6b+E0+039TqOC
I7rE6Vku+f0KQCC80/rSl/gkSjOIAQO/m/imN9aoIUt1JDcggbHP7Y8HJ1gcgVp7
m8ydAkEAxwwU6o1L1DY4ZOG+obTStCUHphG8CvZPhuw5En8LtklY9CeSo+ShFtLr
bojn5RzpQdduWsWVFGoJDWWu28tOLQJAAz66K/19bo6aUpgjYoVIlg014fRrSOWj
5qVBuI60p57aV/d0YZuxwM6EeFH+Wlqd1Zx2Jn3afAsrjWaY5iLIfQJBAKyL5gc8
Vt5Y8irvon5JJ7+LQSkKCaHuSlD8SgfW2BywfP9Qzy9oiFlzg1Mro89t2qwSAMrt
J5CsAFwyItwrOP4=
—–END PRIVATE KEY—–

2. Certificado .CER a Formato PEM

$openssl x509 -inform DER -outform PEM -in 00001000000303759245.cer -pubkey >00001000000303759245.cer.pem

Ahora podemos obtener información del certificado.

$ openssl x509 -in 00001000000303759245.cer.pem -subject -issuer -serial -noout

IMPORTANTE: Al hacer el cambio del .key a .key.pem la llave privada esta descifrada y cualquiera la puede utilizar por lo que es importante resguardarla…

Categorías:CFD, CFDi, PHP
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: