derwowusste

Import eines p12-Zertifikates auf einen Yubikey

Moin Zertifikats-Profis, die Yubikeys nutzen!

Die Frage entsteht aus keiner großen Not... eher eine "wäre schön, dies zu verstehen"-Frage.
Ich habe ein p12-Zertifikat bzw. .pfx-Zertifikat mit Kennwort.
Dieses kann ich auf meine Safenet-SmartCard importieren, nicht aber auf meinen Yubikey.
Der Yubikey 5 kann nur Zertifikate bis zur Dateigröße von 3049 bytes importieren laut https://developers.yubico.com/yubico-piv-tool/Actions/key_import.html und da ist die .pfx mit 8KB schon weit drüber.

Die vermeintliche Lösung steht im selben Link:
it is possible to import larger certificates but that requires compression in order for it to fit (see examples bellow).
yubico-piv-tool -a import-certificate -s 9c -k -i cert_large.gz -K GZIP
Successfully imported a new certificate.
...von wegen. gzippen der pfx-Datei verkleinert diese nicht und das Kommando schlägt fehl mit der Ansage, dass das Zert. zu groß ist. Dass das gzippen nichts bringt, ist erklärbar, zumal die .pfx ja verschlüsselt ist und somit verkleinert sich fast nichts.

Frage: gibt es dennoch einen Weg mit Yubikeys?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 672294

Url: https://administrator.de/forum/import-eines-p12-zertifikates-auf-einen-yubikey-672294.html

Ausgedruckt am: 25.04.2025 um 19:04 Uhr

Spirit-of-Eli
Spirit-of-Eli 02.04.2025 um 15:58:23 Uhr
Goto Top
Moin,

was passiert wenn du die Zertifakte der Kette einzeln importierst?
Wobei ich fürchte das diese dann auch um die 4KB groß sind.

Gruß
Spirit
DerWoWusste
DerWoWusste 02.04.2025 um 16:10:51 Uhr
Goto Top
Die EInzelzertifikate sind 2 KB groß, enthalten aber nicht den privaten Schlüssel, der benötigt wird.
Crusher79
Crusher79 02.04.2025 um 16:17:42 Uhr
Goto Top
Hi, pfx sieht schlecht aus.

PEM ist ja nur Text. Zertifkat + Key Datei = 2,82 KB (2.889 Bytes)

Man kann ja auich in einer Datei Cert + Key vereinigen.

Ich denke es geht nur, wenn alles als String vorliegt. Kein Binary. PEM oder ähnliches Format. Kann man ja mit OpenSSL und anderen Tools einfach umwandeln.

Das wäre die enizig logische Erklärung für mich, wie eine Kompression greifen kann.
DerWoWusste
DerWoWusste 02.04.2025 um 17:43:06 Uhr
Goto Top
Gute Idee, läuft leider nicht.

Gewandelt in .pem : 10 KB. Diese datei gegzipped: 6 KB. Noch zu groß.
BiberMan
Lösung BiberMan 02.04.2025 aktualisiert um 17:47:44 Uhr
Goto Top
Nimm EC-Cipher Keys/Certs 😋, die brauchen weniger Speicher als ihre RSA Kollegen ....
Crusher79
Lösung Crusher79 02.04.2025 um 17:59:47 Uhr
Goto Top
Zitat von @DerWoWusste:

Gute Idee, läuft leider nicht.

Gewandelt in .pem : 10 KB. Diese datei gegzipped: 6 KB. Noch zu groß.

Mist... Let's Encypt PEM so 2 kB. Fullchain 4 kB und Key auch 2 kB.

Da würde sich das ausgehen. Sieht so fast unlösbar aus.

Die bieten ja auch biometrische Daten an. Oder ggf. Produkt wechseln? Wenn es nicht gerade mehrere hundert Stück sind.
DerWoWusste
DerWoWusste 02.04.2025 um 18:04:18 Uhr
Goto Top
Nimm EC-Cipher Keys/Certs
Ja, beim nächsten Mal ist man schlauer. Hier wurden RSA4096 geordert.

Aber das werde ich ausprobieren mit unserer internen CA. Wenn das klappt, weiß ich Bescheid beim nächsten Mal. Hier wurden lediglich 2 Zertifikate bestellt, halb so wild, es muss nicht zwingend auf yubikey passen.
Danke soweit, morgen mache ich den Test und melde.
aqui
aqui 02.04.2025 aktualisiert um 18:49:04 Uhr
Goto Top
Nimm EC-Cipher Keys/Certs 😋, die brauchen weniger Speicher als ihre RSA Kollegen ....
Z.B. wenn man sich testweise einmal ein .p12 Container erstellt ganz klassisch mit OpenSSL wie es HIER beschrieben ist mit ("ecparam -name prime256v1"):
root@server:/Mini-CA/Test# ll
total 44
-rw-r--r-- 1 root root 1005 Apr  2 17:03 Client1.crt
-rw-r--r-- 1 root root  566 Apr  2 17:00 Client1.csr
-rw------- 1 root root  227 Apr  2 16:58 Client1.key
-rw------- 1 root root 1214 Apr  2 17:05 Client1.p12
-rw-r--r-- 1 root root 1480 Jun  6  2023 TestCA.crt
-rw-r--r-- 1 root root 1704 Jun  6  2023 TestCA.key 
1214 Bytes passen leicht und locker in den Yubikey. 😉
BiberMan
BiberMan 02.04.2025 aktualisiert um 18:48:35 Uhr
Goto Top
Zitat von @aqui:

Nimm EC-Cipher Keys/Certs 😋, die brauchen weniger Speicher als ihre RSA Kollegen ....
Z.B. wenn man sich testweise einmal ein .p12 Container erstellt ganz klassisch mit OpenSSL wie es HIER beschrieben ist:
root@server:/Mini-CA/Test# ll
total 44
-rw-r--r-- 1 root root 1005 Apr  2 17:03 Client1.crt
-rw-r--r-- 1 root root  566 Apr  2 17:00 Client1.csr
-rw------- 1 root root  227 Apr  2 16:58 Client1.key
-rw------- 1 root root 1214 Apr  2 17:05 Client1.p12
-rw-r--r-- 1 root root 1480 Jun  6  2023 TestCA.crt
-rw-r--r-- 1 root root 1704 Jun  6  2023 TestCA.key 
1214 Bytes passen leicht und locker in den Yubikey. 😉

Aber nicht mit RSA4096 wie der TO uns mitteilt, da hat allein schon der private Key 3,2kb ...
Wenn du dann noch ne CA mit nem langen RSA Schlüssel hast und mit in den Container packst (was im Normalfall bei selbst signierten CAs best practice ist) ist endgültig Ende Gelände ...

Aber mal ehrlich, das Ding ist ja nicht gerade billig und dann so mit dem Speicher geizen, ist ja lächerlich .... Hauptsache die Marge stimmt.
DerWoWusste
DerWoWusste 03.04.2025 um 08:55:14 Uhr
Goto Top
Soo... habe nun ein Zertifikat mit ECDSA_P521 erzeugt, als pfx exportiert (4KB) und das dann zu .pem gewandelt (5 KB). Nun mit gzip gezippt und dann liegt es mit 2709 Bytes auch unter der Höchstgröße für Yubikeys. Sauber!
Habe den Yubikey im Büro liegen lassen, der eigentliche test kommt dann morgen.
aqui
aqui 03.04.2025 um 10:55:51 Uhr
Goto Top
als pfx exportiert (4KB)
Holla die Waldfee! Die oben als Beispiel mit EC erzeugten Zertikate und .pfx Dateien liegen ja ganz ohne GZIP usw. noch deutlich darunter. Fragt sich was da bei dir noch mit drin ist. Bei 4k ist vermutlich noch ein kleines Video embedded?! 🤣
BiberMan
BiberMan 03.04.2025 aktualisiert um 11:02:00 Uhr
Goto Top
Zitat von @aqui:

als pfx exportiert (4KB)
Holla die Waldfee! Die oben als Beispiel mit EC erzeugten Zertikate und .pfx Dateien liegen ja ganz ohne GZIP usw. noch deutlich darunter. Fragt sich was da bei dir noch mit drin ist. Bei 4k ist vermutlich noch ein kleines Video embedded?! 🤣

Reicht schon wenn die CA noch nen großen RSA Schlüssel hat den man jetzt nicht ad hoc ändern kann und man den je nach Anwendung mitgeben muss.
aqui
aqui 03.04.2025 aktualisiert um 11:02:23 Uhr
Goto Top
Was bei der Vorgehensweise auch nicht ganz verständlich ist warum pfx aka p12 nochmal als .pem gewandelt wird ? Dieses Format ist doch schon das finale Format was man zwischen den Geräten transportiert.
Man erzeugt also Zertifikat in pem oder crt oder was auch immer und den Key und bündelt dann final beides in ein pfx oder p12 was man dann importiert und fertig.
DerWoWusste
DerWoWusste 03.04.2025 um 13:06:55 Uhr
Goto Top
@aqui
Der geneigte Leser wird gelesen haben, dass eine Kompression auf verschlüsselten Daten (.pfx) kaum wirksam arbeiten kann, während sie auf unverschlüsselten (.pem) ja etwa auf 50% schrumpfen konnte.
Du wirst kein .pfx erzeugen können, dass unter 3 KB hat, wenn das CA-zert drin ist und als Verschlüsselung dessen RSA gewählt wurde.
aqui
aqui 03.04.2025 um 13:48:27 Uhr
Goto Top
Da hast du Recht. Das obige CA Zert. womit getestet wurde ist mit EC generiert und hat dementsprechend nur eine Größe von 1480 Bytes.
Ist schon extrem wie da der Unterschied zu RSA ist.
Crusher79
Crusher79 03.04.2025 um 13:56:53 Uhr
Goto Top
Hab mal grob geschaut. Einige empfahlen dann die Chain of Trust weg zu lassen. Spart auch. Kamen aber auf 9 kB.

https://stackoverflow.com/questions/66782004/pfx-size-limit-error-on-azu ...

Aber @DerWoWusste du bist also nicht allein mit dem Problem. Zertifikate sind halt eine neue Erfindung, wie das Internet.
DerWoWusste
DerWoWusste 03.04.2025 um 14:07:11 Uhr
Goto Top
Zertifikate sind halt eine neue Erfindung, wie das Internet
Du sagst es. Auch für Yubico.

@aqui
und schön ist dann auch, wenn man so ein Zertifikat bestellt und gar nicht wissen kann, ob RSA oder EC, da bei einem Reseller von D-Trust bestellt wurde, der das gar nicht angibt.
Aber: wie gesagt, kein Drama

Ich danke Euch für den Ansatz mit .pem und den guten Hinweis mit EC vs. RSA.
aqui
aqui 03.04.2025 aktualisiert um 20:14:27 Uhr
Goto Top
Na ja dem kann man ja immer sicher auf die Finger sehen mit
root@server:/# openssl x509 -in Client1.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 7258463086364123456 (0x64cc3db85604db54)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myCA, C = DE, ST = Bayern, L = M, O = Private, OU = Labor 
... 
Und bei sha256WithRSAEncryption ihm dann gehörig einheizen das er so einen alten Kram noch verwendet. face-wink
Normalerweise kann man das vorgeben.
BiberMan
BiberMan 03.04.2025 aktualisiert um 20:28:43 Uhr
Goto Top
Bei EC-Curves sollte man auch im Hinterkopf behalten, dass bestimmte Funktionen mit diesen zur Zeit noch nicht funktionieren. Unter anderem dann wenn man mit diesen Keys Daten verschlüsseln möchte. Das klappt bei den meisten Diensten und Tools oft nur mit RSA Keys, OpenSSL ist ein prominentes Beispiel. Microsoft etwa möchte bei der Authentifizierung einer App via Zertifikat (EntraID) auch nur welche mit RSA Cipher.
Man sollte also vorher bei den Diensten abklären welche Cipher kompatibel sind.
DerWoWusste
DerWoWusste 04.04.2025 aktualisiert um 12:09:04 Uhr
Goto Top
Nachtrag: ja, ECC521 lässt sich nun importieren. Managementkey des Yubikeys muss dafür zuvor auf non-default gesetz worden sein!
c:\Program Files\Yubico\Yubico PIV Tool\bin>yubico-piv-tool -a import-certificate -s 9c -k -i "C:\temp\t521.pem.gz" -K GZIP  
Enter management key:
Successfully imported a new certificate.
Funktioniert aber zumindest mit dem Testkey danach nicht, signieren ist nicht möglich, kein Zert wird angezeigt.
Auch kann ich den Key nicht einmal mehr im Yubikey Manager vollständig ansprechen - beim Auswählen der PIV-Sektion stürzt die Anwendung nun ab. Somit ist er auch nicht mehr resetbar.

Aber: ykman kann noch was reißen:
"C:\program Files\Yubico\YubiKey Manager\ykman.exe" piv info  
Liefert nun:
ERROR: Compressed certificates are not supported
Doch zumindest der Reset gelingt über
"C:\program Files\Yubico\YubiKey Manager\ykman.exe" piv reset  
Danach geht PIV in der GUI wieder auf.

Gut, es sieht zudem nach weiterer Recherche so aus, dass der Yubikey für PIV RSA 4096 nicht kann bis zur Firmware 5.7, welche ich nicht habe. Infos siehe: https://github.com/Yubico/yubico-piv-tool/issues/58

Wie immer: Augen auf beim Eierkauf.