Netz-Weise Logo

Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.
1 Minuten Lesezeit (289 Worte)

Zertifikate mit Powershell Base64-kodiert aus dem Zertifikatsspeicher exportieren

Mit Powershell auf den Zertifikatsspeicher zurückzugreifen, ist sehr simpel, denn Powershell stellt für den Zugriff auf Zertifikate einen Powershell-Provider bereit. Durch den Provider ist es möglich, Zertifikate wie Dateien zu behandeln. Der Provider legt hierfür ein "Laufwerk" mit Namen Cert: an. Möchten Sie z.B. die Zertifikate des aktuellen Benutzers sehen, geben Sie ein:

PS C:\Users\Holger> Get-ChildItem -Path Cert:\CurrentUser\My\

PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                               Subject
----------                               -------
A83FA591D2D909D7465768ED4F7DE4019026F74D CN=Holger
7154EBF108BEB11587B1136B06EC5C24E3E6CAEA CN=NWCertRoot
6C0CEA5EC15CA5E6350CB9E7D02D90C9AA1DEBE3 CN=NwClientCert

Zurückgeliefert wird der eindeutige Thumbprint des Zertifikats, sowie dessen Name. Um ein Zertifikat ins Dateisystem zu exportieren, verwenden Sie das Cmdlet Export-Certificate:

Get-ChildItem -Path Cert:\CurrentUser\My\
  Where-Object { $_.subject -eq "cn=NWCertRoot" } |

  Export-Certificate -Type CERT -FilePath $home\NWCertRoot.cer 

Das klappt ganz wunderbar, allerdings unterstützt Export-Certificate nur den Export des Binärformats. Müssen Sie das Zertifikat Base64-Codiert ausgeben - also Text-kodiert - versagt Export-Certificate. Es ist allerdings einfach, das Zertifikat in seine Base64-kodierte Form zu bringen. Verwenden Sie hierfür die .Net-Klasse [Convert] und kodieren Sie die Eigenschaft .Raw des Zertifikatsobjekts:

$cert = Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object { $_.subject -eq "cn=NWCertRoot" }

$Base64Cert = [convert]::tobase64string(($Cert).RawData,'InsertLineBreaks'

Nun können Sie die Base64-Form direkt aus den Speicher z.B. auf eine Website hochladen - z.B., wenn Sie in Azure ein Point-to-Site VPN erstellen wollen - oder Sie können das Zertifikat in einer Datei speichern. Für die Speicherung in eine Datei müssen allerdings noch die beiden Codes "-----BEGIN CERTIFICATE-----" vor und "-----END CERTIFICATE-----" nach dem Code eingefügt werden:

@"

-----BEGIN CERTIFICATE-----

$Base64Cert

-----END CERTIFICATE-----

"@ | out-file c:\temp\Base64Cert.Cer -Encoding ascii

 

Links:

https://social.technet.microsoft.com/Forums/en-US/37a213b9-f185-482e-b610-295f2056506e/export-certificate-using-base-64-cer-format-with-powershell-?forum=winserversecurity

Zertifikate mit Powershell inklusive des privaten ...
Office 365 (nicht nur) auf einem RDP-Server instal...

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Sonntag, 19. Mai 2024

Sicherheitscode (Captcha)