openssl - partir - descargar certificado pkcs#12
Convertir el certificado PKCS#12 en PEM usando OpenSSL (5)
Esto funcionará con un archivo .pem
que tenga una clave privada y un certificado en el mismo archivo (lo intenté con el certificado de Apple Push Notification)
( PushNotif.pem
contiene clave privada y cert en un archivo)
$ openssl pkcs12 -export -en PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Ingrese la frase de contraseña para PushNotif.pem:
Ingrese la contraseña de exportación:
Verificación: ingrese la contraseña de exportación:
Una vez que ingrese su contraseña, estará listo.
Tengo OpenSSL x64 en Windows 7 que descargué de openssl-for-windows en Google Code . Estoy intentando correr:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem"
pero obtengo un error
unable to load private key
¿Cómo extraigo el certificado en PEM desde la tienda PKCS # 12 usando OpenSSL?
Si puede usar Python, es aún más fácil si tiene el módulo pyopenssl
. Aquí está:
from OpenSSL import crypto
# May require "" for empty password depending on version
with open("push.p12", "rb") as file:
p12 = crypto.load_pkcs12(file.read(), "my_passphrase")
# PEM formatted private key
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())
# PEM formatted certificate
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())
Solo necesita proporcionar una contraseña. Puede hacerlo dentro de la misma línea de comando con la siguiente sintaxis:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]
Luego se le pedirá una contraseña para encriptar la clave privada en su archivo de salida. Incluya la opción "nodos" en la línea superior si desea exportar la clave privada sin cifrar (texto sin formato):
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes
Más información: http://www.openssl.org/docs/apps/pkcs12.html
Tenía un archivo PFX y necesitaba crear el archivo KEY para NGINX, así que hice esto:
openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes
Luego tuve que editar el archivo KEY y eliminar todo el contenido hasta -----BEGIN PRIVATE KEY-----
. Después de eso, NGINX aceptó el archivo KEY.
Tratar:
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes
Después de eso tienes:
- certificado en newfile.crt.pem
- clave privada en newfile.key.pem
Para poner el certificado y la clave en el mismo archivo, use la siguiente
openssl pkcs12 -in path.p12 -out newfile.pem
Si necesita ingresar la contraseña de PKCS # 12 directamente desde la línea de comando (por ejemplo, una secuencia de comandos), solo agregue -passin pass:${PASSWORD}
:
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -passin ''pass:P@s5w0rD''