Request Let's Encrypt Certificate with PowerShell
Hallo zusammen,
In diesem Blog Artikel zeige ich euch, wie man ein SSL/TLS Zertifikat mit PowerShell von Let's Encrypt bereitstellt.
Es braucht einen ACME Client. Für Windows stehen da mehrere Optionen zur Verfügung. Ich habe mich für eines der zwei PowerShell Module entschieden.
Find-Module Posh-ACME
Mit folgenden Befehlen wird das PowerShell Modul installiert und die cmdlets vom Modul angezeigt.
Import-Module Posh-ACME
Es muss ein Account mit der Emailadresse angelegt werden.
Nun kann ein Zertifikat angefordert werden. Die Validierung erfolgt über einen DNS TXT Record.
New-PACertificate edge.serveralive.ch -AcceptTOS -Contact "a.bohren@icewolf.ch" -DnsSleep 15
Den TXT Record habe ich in meiner DNS Zone in Azure gemacht. Kleiner Tipp: Den TTL möglichst tief halten. So kann man ohne Caching Probleme rasch einen neuen Versuch starten.
Nach erfolgreicher Verifikation kann man sich das Zertifikat mit folgendem Befehl anzeigen lassen.
Get-PACertificate | fl
Unter dem Pfad sind die Zertifikate abgelegt (cer, key oder PFX sowie die Certificate Chain).
Wie man sieht, ist das Zertifikat von einer Fake Intermediate ausgestellt - ich habe also das Zertifikat also von der Staging CA erhalten.
Mit Get-PACertificate wurde auch ein Pfad zum PFX File und das Password (allerdings als SecureString) mitgeliefert.
Der Import vom PFX in den Local Machine Certificate Store erfolgt mit folgenden PowerShell Befehlen:
$Cert = Get-PACertificate
$PFX = "C:\Users\Administrator\AppData\Local\Posh-ACME\acme-staging-v02.api.letsencrypt.org\17671122\edge.serveralive.ch\cert.pfx"
Import-PfxCertificate -FilePath $PFX -CertStoreLocation Cert:\LocalMachine\My -Password $cert.PfxPass -Exportable
Man beachte den Parameter "-Exportable" beim Import-PfxCertificate. Damit kann man das Zertifikat inklusive Private Key wieder exportieren.
Das Zertifikat ist nun mit dem Private Key im Certificate Store
Da nun alle Schritte vom Anfordern des Zertifikats bis zur Installation im Certificate Store funktionieren, kann das nun auf der produktiven Certification Authority ausgefürt werden.
Mit Get-PAServer sieht man, welcher Server für die Ausstellung des Zertifikats benutzt wird. Mit "LE_Prod" ist "Let's Encrypt Produktion" gemeint.
Get-PAServer
Set-PAServer LE_Prod
Get-PAServer
Nun kann das Zertifikat angefordert werden.
New-PACertificate edge.serveralive.ch -AcceptTOS -Contact "a.bohren@icewolf.ch" -DnsSleep 15
Ich lasse mir das Zertifikat anzeigen
$Cert = Get-PACertificate
$Cert | fl
Der Import in den Certificate Store erfolgt mit folgendem Befehl:
Import-PfxCertificate -FilePath $Cert.PfxFile -CertStoreLocation Cert:\LocalMachine\My -Password $cert.PfxPass -Exportable
Danach muss man das Zertifikat noch dem jeweiligen Service zuordnen. Kommt dann halt darauf an was das für ein Service ist, deshalb sehe ich in diesem Artikel davon ab.
Hier die Details vom Zertifikat
Wer will, kann auch noch den Export in ein PFX mit eigenem Passwort machen.
$mypwd = ConvertTo-SecureString -String "MySecretPFXPassword" -Force -AsPlainText
$Thumbprint = $Cert.Thumbprint
Get-ChildItem -Path cert:\localMachine\my\$Thumbprint | Export-PfxCertificate -FilePath C:\Scripts\Install\edge.serveralive.ch.pfx -Password $mypwd