Inhaltsverzeichnis

PKCS12/PFX Zertifikat und Schlüssel

siehe auch: 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

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
PFX-PKCS12_zu_DER-PEM.sh
#!/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