Name: Max Mustermann
Mailadresse: Max.Mustermann@t-online.de
openssl ecparam -genkey -name prime256v1 | openssl ec -aes256 -out Max.Mustermann\@t-online.de.keyopenssl req -new -sha256 -key Max.Mustermann\@t-online.de.key -subj "/C=DE/ST=BW/L=Offenburg/CN=Max.Mustermann/emailAddress=Max.Mustermann\@t-online.de" -out Max.Mustermann\@t-online.de.csropenssl pkcs12 -export -out Max.Mustermann.p12 -inkey Max.Mustermann\@t-online.de.key -in Max.Mustermann\@t-online.de.crtDas Zertifikat läuft nach 2 Jahren aus. Es bietet sich an, sich selbst eine Erinnerung einzustellen, um es rechzeitig vom Vorstand verlängern zu lassen. Danach muss man mit der neuen .crt Datei Schritt 5 und 6 erneut ausführen.
PKCS#12 ist ein Containerformat, das unterschiedlich verschlüsselte Schlüssel und Zertifikate enthalten kann. Moderne OpenSSL-Versionen (z. B. auf aktuellen Linux-Distributionen) verwenden beim Erzeugen von PKCS#12-Dateien standardmäßig neue Verfahren (PBES2, PBKDF2 mit SHA-256 und AES-256-CBC).
Die Apple-Keychain auf macOS und iOS-Geräten mit IOS Version < 18 akzeptiert beim Import jedoch praktisch nur PKCS#12-Dateien, die mit den „alten“ PKCS#12-Algorithmen (SHA-1, 3DES/RC2) erzeugt wurden. Wenn eine .p12-Datei auf einem Linux-Rechner mit aktuellem OpenSSL erstellt wird und später auf einem iOS-Gerät funktionieren soll, muss sie daher explizit mit der Option -legacy erzeugt werden.
Um zu prüfen, welche Algorithmen in einer .p12-Datei verwendet wurden (ggf. Passwort notwendig):
openssl pkcs12 -info -legacy -noout -in Max.Mustermann.p12
Output mit modernem OpenSSL (>=openssl@3.0):
MAC: sha256, Iteration 2048
MAC length: 32, salt length: 8
PKCS7 Encrypted data: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256
Certificate bag
PKCS7 Data
Shrouded Keybag: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256
Output mit legacy Crypto (<=openssl@1.1, libressl):
MAC: sha1, Iteration 2048
MAC length: 20, salt length: 16
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Um einen Key mit legacy-Crypto zu erstellen nutzt man die -legacy Option:
openssl pkcs12 -export -legacy \
-inkey Max.Mustermann@t-online.de.key \
-in Max.Mustermann@t-online.de.crt \
-out Max.Mustermann.p12
Mit IOS >=18 funktioniert der import von Keys mit neuer Crypto, mit IOS 17 jedoch nicht.
Aktuelles MacOS nutzt wohl LibreSSL und das gibt es nur mit alter Crypto (Stand 2025 - Sequoia).