Este tutorial lo guiará a través de la extracción de información de un archivo PKCS # 12 con OpenSSL. PKCS # 12 (también conocido como PKCS12 o PFX) es un formato binario para almacenar una cadena de certificados y una clave privada en un único archivo cifrado. Los archivos PKCS # 12 se usan comúnmente para importar y exportar certificados y claves privadas en computadoras Windows y macOS, y generalmente tienen las extensiones de nombre de archivo .p12
or .pfx
.
Para obtener instrucciones más útiles y las últimas noticias sobre seguridad cibernética, suscríbase al boletín de SSL.com aquí:
¿Qué es OpenSSL?
OpenSSL es un juego de herramientas de línea de comandos de código abierto muy útil para trabajar con X.509 certificados, solicitudes de firma de certificados (CSRs) y claves criptográficas. Si está utilizando una variante de UNIX como Linux o macOS, es probable que OpenSSL ya esté instalado en su computadora. Si desea utilizar OpenSSL en Windows, puede habilitar Subsistema Linux de Windows 10 o instalar Cygwin. También puedes fácilmente Para crear un archivo PKCS # 12 con openSSL.
SSL.com proporciona una amplia variedad de SSL /TLS certificados de servidor para sitios web HTTPS.
Video
En todos los ejemplos que se muestran a continuación, sustituya los nombres de los archivos con los que realmente está trabajando INFILE.p12
, OUTFILE.crt
y OUTFILE.key
.
Ver información PKCS # 12 en pantalla
Para volcar toda la información en un archivo PKCS # 12 a la pantalla en Formato PEM, use este comando:
openssl pkcs12 -info -in INFILE.p12 -nodos
A continuación, se le pedirá la contraseña del archivo PKCS # 12:
Ingrese la contraseña de importación:
Escriba la contraseña ingresada al crear el archivo PKCS # 12 y presione enter
. OpenSSL mostrará en la pantalla todos los certificados y claves privadas del archivo:
Atributos de la bolsa localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 subject = / CN = Aaron Russell/emailAddress=*********@gmail.com issuer = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com certificado de cliente Intermedio CA RSA R1 ----- BEGIN CERTIFICATE ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg 1Ml2R83 ----Sf0-Ufc6
Cifrar clave privada
Si desea cifrar la clave privada y protegerla con una contraseña antes de la salida, simplemente omita el -nodes
bandera del comando:
openssl pkcs12 -info -en INFILE.p12
En este caso, se le pedirá que ingrese y verifique una nueva contraseña después de que OpenSSL emita los certificados, y la clave privada se cifrará (tenga en cuenta que el texto de la clave comienza con -----BEGIN ENCRYPTED PRIVATE KEY-----
):
Introduzca PEM frase de: Verificación - Introduzca PEM frase de: ----- BEGIN clave cifrada PRIVADO ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- END ENCRYPTED LLAVE PRIVADA-----
Extraer solo certificados o clave privada
Si solo desea generar la clave privada, agregue -nocerts
al comando:
openssl pkcs12 -info -in INFILE.p12 -nodos -nocerts
Si solo necesita los certificados, use -nokeys
(y dado que no nos preocupa la clave privada, también podemos omitir con seguridad -nodes
):
openssl pkcs12 -info -in INFILE.p12 -nokeys
Guardar certificados y claves privadas en archivos
Puede exportar los certificados y la clave privada de un archivo PKCS # 12 y guardarlos en formato PEM en un nuevo archivo especificando un nombre de archivo de salida:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nodos
Nuevamente, se le pedirá la contraseña del archivo PKCS # 12. Como antes, puede cifrar la clave privada eliminando el -nodes
marca desde el comando y / o agregar -nocerts
or -nokeys
para generar solo la clave privada o los certificados. Entonces, para generar un archivo de clave privada, podemos usar este comando:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -nodes -nocerts
Y para crear un archivo que incluya solo los certificados, use esto:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
Convertir clave privada al formato PKCS # 1
Los ejemplos anteriores generan la clave privada en el valor predeterminado de OpenSSL PKCS # 8 formato. Si sabes que necesitas PKCS # 1 en su lugar, puede canalizar la salida de la utilidad PKCS # 12 de OpenSSL a su utilidad RSA o EC, según el tipo de clave. Los dos comandos siguientes generarán un archivo de clave en formato PKCS # 1:
RSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl ec -out OUTFILE.key
Nota: Puede ver la diferencia entre los archivos de clave privada PKCS # 8 y PKCS # 1 mirando la primera línea de texto. Los archivos PKCS # 1 especificarán el algoritmo:
-----BEGIN RSA PRIVATE KEY-----
Los archivos PKCS # 8 no muestran el algoritmo y también pueden estar encriptados:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----