====== PKCS12/PFX Zertifikat und Schlüssel ====== siehe auch: [[::EDV:SSL-Schlüssel generieren#Zugehörigkeiten verifizieren]] (PEM/DER) [[https://wikipedia.org/wiki/PKCS_12]] Das PKCS #12 Format hat die Dateiendungen ''.pfx'' oder ''.p12'' OpenSSL Dokumentation: https://openssl.org/docs/ ===== PKCS12/PFX -> PEM/DER ==== * **Achtung:** Die folgenden Befehle nutzen ''-nodes'', d.h. die Ausgabe ist unverschlüsselt, man kann die Option weglassen, um eine verschlüsselte Ausgabe zu erhalten * Die Option ''-nodes'' ist neu in OpenSSL 3.0 und ersetzt die nun deprecated Option ''-nodes'', für ältere OpenSSL Versionen einfach die alte Option verwenden * Weitere interessante Optionen: ''clcerts'', ''-cacerts'', ''-chain'' PFX-Datei in eine PEM-Datei konvertieren, die sowohl das Zertifikat als auch den privaten Schlüssel enthält > openssl pkcs12 -in filename.pfx -out filename.pem -nodes Zertifikat und privaten Schlüssel trennen > openssl x509 -in filename.pem -out certificate.pem > openssl rsa -in filename.pem -out key.pem Zertifikat aus einer PFX-Datei extrahieren: > openssl pkcs12 -in filename.pfx -nodes -nokeys -out certificate.key Alternative, bei der keine Bag Attributes ausgegeben werden > openssl pkcs12 -in filename.pfx -nodes -nokeys | openssl x509 -out certificate.pem Privater Schlüssel aus einer PFX-Datei extrahieren: > openssl pkcs12 -in filename.pfx -nodes -nocerts -out filename.key Alternative, bei der keine Bag Attributes ausgegeben werden > openssl pkcs12 -in filename.pfx -nodes -nocerts | openssl rsa -out key.pem #!/bin/bash #------------------------------------------------------------------------------# # # entpackt eine PFX-Datei zu einer PEM-Datei im DER-Format # #------------------------------------------------------------------------------# # openssl pkcs12 -in www.domain.de.pfx -out www.domain.de.pem -nodes # openssl x509 -in www.domain.de.pem -noout -text # openssl x509 -in www.domain.de.pem -out server-cert.pem # openssl rsa -in www.domain.de.pem -out server-key.pem if [ -r "${1}" ] ; then PFXDATEI="${1}" PEM_NAME="${1%.*}" openssl pkcs12 -in ${PFXDATEI} -out ${PEM_NAME}.pem -nodes && openssl x509 -in ${PEM_NAME}.pem -noout -text if [ -s ${PEM_NAME}.pem ] ; then openssl x509 -in ${PEM_NAME}.pem -out server-cert.pem openssl rsa -in ${PEM_NAME}.pem -out server-key.pem ls -rtlha *.pem else echo "PEM-Datei konnte nicht erstellt werden." fi else echo "${0} www.domain.de.pfx" fi > PFX-PKCS12_zu_DER-PEM.sh www.domain.de.pfx Enter Import Password: Certificate: Data: Version: 3 (0x2) Serial Number: ... ===== PEM/DER -> PKCS12/PFX ==== > openssl pkcs12 -export -out filename.p12 -inkey filename.key -in filename.crt -certfile intermediate.filename.crt > openssl pkcs12 -info -in filename.p12