PEM SSL Zertifikate in PKCS# 12 konvertieren

Don-DCH

Commander
Registriert
Aug. 2009
Beiträge
3.059
Guten Abend,

Ich würde gerne mein Lets Enrypt Zertifikat von meinem Synology NAS als PKCS #12 exportieren, das ist aber soweit ich das sehe nicht möglich.
Ich bekomme über den Export in der GUI nur 6 Dateien
  • ECC-cert.pem
  • ECC-chain.pem
  • ECC-privkey.pem
  • RSA-cert.pem
  • RSA-chain.pem
  • RSA-privkey.pem

Ist es möglich damit ein PKCS #12 SSL Zertifikat zu generieren, wenn ja wie mache ich das am besten unter Windows?
Ich habe nur gefunden, das es unter Linux und MAC sehr einfach gehen soll, aber keine verständliche Anleitung für Windows.
Oft ist auch die rede von .cert und .key Dateiendungen. Bei mir ist allerdings alles .pem ist es trotzdem möglich diese zu verwenden?
Leider weiß ich die Verschlüsselungsstärke nicht, was Synology da wählt.

Über Hillfe würde ich mich freuen :)
Geht das eventuell sogar leicht mit der PowerShell?

Viele Grüße und einen guten Start ins Wochenende :)
 
https://stackoverflow.com/a/808742

openssl pkcs12 -inkey RSA-privkey.pem -in RSA-cert.pem -certfile RSA-chain.pem -export -out certificate.pfx

windows-versionen von openssl sind hier verlinkt. die antwort von stackoverflow empfiehlt den ersten link.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Don-DCH und PHuV
Vielen Herzlichen Dank!
Das hat super funktioniert!
 
Als kleine Ergänzung: Falls man nur das Zertifikat als .pem hat aber kein private key als .pem File:
Den private Key kann man aus dem CSR (Zertifikatsanforderung) exportieren:
CSR exportieren als pfx Datei.
dann:
Code:
openssl pkcs12 -in csr.pfx -nocerts -out key.pem
mit diesem key.pem kann man dann den Befehl von 0x8100 nutzen.
 
@h00bi Du hast da etwas missverstanden. Der Private Key lässt sich aus einem CSR nicht auslesen, er ist gar nicht enthalten. Das ist ja gerade der Sinn eines CSR, du kannst ein Zertifikat siginieren lassen ohne den Privatekey aus der Hand zugeben. Du liest mit dem von dir genannten Befehl lediglich den Public Key aus.

@Don-DCH Ich kann dir das Tool XCA empfehlen, damit kannst du all deine Zertifikate und Keys verwalten und in ein beliebiges Format exportieren.
 
seyham schrieb:
Du liest mit dem von dir genannten Befehl lediglich den Public Key aus.
mag sein dass ich das falsch verstanden habe, ergab für mich aber Sinn. Der public Key ergibt für mich keinen Sinn.

Ich erstelle am IIS eine Zertifikatsanforderung. Die gebe ich z.B. an rapidssl bei der Zertifikatsbestellung.
Zurück erhalte ich 3 pem Files.
CAIntermediate.pem
CARoot.pem
EndUserCertificate.pem

Um daraus ein pfx zu generieren verwende ich:
Code:
openssl pkcs12 -export -out EndUserCertificate.pfx -in EndUserCertificate.pem

Dann sagt openssl, dass der key fehlt, was ja nach dem Posting von 0x8100 der private key sein soll.

Den benötigten Key bekomme ich aus dem CSR, welches ich aus dem IIS als pfx exportiere und dann per openssl umwandle:
https://www.hasslinger.com/index.php/de/blog/ssl-zertifikate-mit-openssl-konvertieren sagt auch dass hier der private key extrahiert wird:
Private key extrahieren (encrypted):
openssl pkcs12 -in certname.pfx -nocerts -out certname.key

Die certname.key kann ich dann verwenden um mit dem EndUserCertificate.pem eine pfx zu bauen:
Code:
openssl pkcs12 -export -out EndUserCertificate.pfx -inkey certname.key -in EndUserCertificate.pem

Wo ist mein Denkfehler?
Oder wurstelt der IIS beim Export des CSR in ein pfx den private key rein, er ist aber nicht teil es CSR an sich?
 
der private key darf niemals das eigene system verlassen. wenn dein csr einen privaten key enthält und du das z.b. an rapidssl schickst, dann ist das erhaltene zertifikat wertlos, da rapidssl im besitz deines privaten keys wäre und damit im nachhinein verschlüsselte daten entschlüsseln könnte.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Zensai
Der Private Key existiert zunächst NUR auf der Maschine die den CSR erstellt hat.

Der CSR die Zertifikatsdaten (CN, SAN, Org, Valid Dates etc)

openssl pkcs12 -in certname.pfx -nocerts -out certname.key

Bedingt, dass du in der PFX den private Key mit drin hast. Eine PFX mit private Key wiederum bekommst du nur von der Maschine die den CSR erstellt hat und auch nur, wenn diese Maschine den Export des privaten Keys erlaubt.

1. Maschine generiert CSR und Private Key
2. CSR geht zu CA und wird gesigned
3. du erhältst eine Antwortdatei OHNE Private Key.
4. du spielst das Zertifikat auf der Maschine ein, dir den CSR gemacht hat 5. 5. Du kannst ERST DANN die ganze Kette als PFX inkl Private Key exportieren und auf anderen Maschinen nutzen.

Der private Key darf NIE aus der Hand gegeben werden und man sollte genau überlegen, was man tut wenn man damit hantiert.
Hier eim bisschen Material dazu:
https://www.bjoern.info/2020/12/ssl-tls-zertifikate-und-private-key-verschluesselung/
 
  • Gefällt mir
Reaktionen: h00bi
Zensai schrieb:
Bedingt, dass du in der PFX den private Key mit drin hast. Eine PFX mit private Key wiederum bekommst du nur von der Maschine die den CSR erstellt hat und auch nur, wenn diese Maschine den Export des privaten Keys erlaubt.
Danke für die Erklärung, dann mauschelt wie vermutet der IIS beim PFX Export den Key mit rein.
 
Zurück
Oben