P7b Zertifikate automatisiert exportieren
Hallo,
gibt es eine möglichkeit die einzelnen Zertifikate (Root, SubCA und End-Zertifikat) aus einem p7b Zertifikatpaket zu extrahieren?
=> ich habe leider nur einen Windows-Rechner zur Verfügung.
Am liebsten wäre es mir ohne extra Software (also z.B. mit Powershell oder Certutil...) <- geht hierbei um die gewerbliche Nutzung.
Vielen Dank
edit: leider habe ich kein openssl zur verfügung (so ne Anleitung hab ich im Internet schon gefunden)...
gibt es eine möglichkeit die einzelnen Zertifikate (Root, SubCA und End-Zertifikat) aus einem p7b Zertifikatpaket zu extrahieren?
=> ich habe leider nur einen Windows-Rechner zur Verfügung.
Am liebsten wäre es mir ohne extra Software (also z.B. mit Powershell oder Certutil...) <- geht hierbei um die gewerbliche Nutzung.
Vielen Dank
edit: leider habe ich kein openssl zur verfügung (so ne Anleitung hab ich im Internet schon gefunden)...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 344013
Url: https://administrator.de/contentid/344013
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
7 Kommentare
Neuester Kommentar
Servus @it4baer ,
kein Problem, Powershell hat das .NET Framework zur Verfügung damit geht so ziemlich alles
(Ausgabe-Ordner und Dateiname der Datei angeben.)
Die extrahierten Zertifikate erhalten als Namen den Thumbprint, das kannst du aber nach Gusto mit den verfügbaren Eigenschaften der Certs anpassen.
Sollte das Zertifikats-Paket (P7B/PFX/P12) passwortgeschützt sein dann muss die Zeile 4 so aussehen und das Passwort angegeben werden:
Mehr dazu kann in der Referenz der obigen NET-Klassen nachgelesen werden.
Grüße Uwe
kein Problem, Powershell hat das .NET Framework zur Verfügung damit geht so ziemlich alles
(Ausgabe-Ordner und Dateiname der Datei angeben.)
$targetpath = "C:\Ausgabepfad"
$certfile = "C:\Pfad\certificate_chain.p7b"
$col = new-object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$col.Import($certfile)
$col | %{[IO.File]::WriteAllBytes("$targetpath\$($_.Thumbprint).crt",$_.Export('Cert'))}
Sollte das Zertifikats-Paket (P7B/PFX/P12) passwortgeschützt sein dann muss die Zeile 4 so aussehen und das Passwort angegeben werden:
$col.Import($certfile,'PASSWORT',[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::PersistKeySet)
Grüße Uwe
kann man via PowerShell aus p12 (also private Zertifikate) den öffentlichen Schlüssel exportieren? <- ohne dieses zu Installieren?
Den hast du doch schon mit den exportierten Zertifikaten . Die exportierten Zertifikate sind ja die öffentlichen Teile des P12-Containers, und installieren musst du es mit obigem Skript ja sowieso nicht.Die einzelnen Eigenschaften der Zertifikate erhältst du ja aus der Collection, also bspw. den Public-Key des ersten Zertifikats aus der Collection
$col.GetPublicKey()
Ein p12/pfx ist kein einzelnes Zertifikat in dem Sinne sondern nur ein Container für eins/mehrere Zertifikate
https://en.wikipedia.org/wiki/PKCS_12
Und> Zitat von @it4baer:
hm,
vermutlich stell ich mich zu blöd an...
=> das mit der Collection und dem "GetPublicKey()" versteh ich... aber beim Import will er mein privates Kennwort:
<- was natürlich beim Automatisierten Entpacken von 30 Files oder mehr ziemlich viel Copy-Paste-Arbeit machen würde (vorallem weil ich ja nur die Öffentlichen und nicht die Privaten brauche).
Der Container ist Passwort geschützt, deswegen musst du auch um an die öffentlichen Schlüssel zu kommen das Passwort für den Import in das Collectionobjekt angeben!
In der Referenz stehts ja ebenfalls was die Flags bedeuten.
2. s.o. Wenn du eine Liste der Kennwörter hast hinterlege sie in einer Hashtable so dass man sie den Files zuordnen kann.
hm,
vermutlich stell ich mich zu blöd an...
=> das mit der Collection und dem "GetPublicKey()" versteh ich... aber beim Import will er mein privates Kennwort:
Ausnahme beim Aufrufen von Import mit 1 Argument(en): Das angegebene Netzwerkkennwort ist falsch.
<- was natürlich beim Automatisierten Entpacken von 30 Files oder mehr ziemlich viel Copy-Paste-Arbeit machen würde (vorallem weil ich ja nur die Öffentlichen und nicht die Privaten brauche).
wenn ich $col.Import($certFile, $password) eingebe gefällt ihn das auch nicht... in der Beschreibung will er noch eine "flag" aber auch das versteh ich leider nicht ganz.
Les doch bitte meine Zeile von oben mal ganz genau!$col.Import($certFile, $password, X509KeyStorageFlags.Exportable)
$col.Import($certfile,'PASSWORT',[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::PersistKeySet)
also bleiben "leider" noch 2 Fragen offen.
1. ist ein Export ohne Kennwort möglich?
2. wie :D ... <- sorry...
1. Nein1. ist ein Export ohne Kennwort möglich?
2. wie :D ... <- sorry...
2. s.o. Wenn du eine Liste der Kennwörter hast hinterlege sie in einer Hashtable so dass man sie den Files zuordnen kann.