Mit Windows 11 und PowerShell CA-Zertifikat und weitere Zertifikate erstellen.
Inhaltsverzeichnis
Einsatzwecke
Die hier vorgestellte Lösung ist vor allem für Test- und Entwicklungszwecke interessant und stellt keine vollwertige Alternative zu Active Directory Zertifikatdiensten dar.
CA-Zertifikat / Root-Zertifikat erstellen
Test.internal mit 10 Jahren Laufzeit erzeugen:
$caCert = New-SelfSignedCertificate -Type Custom -KeyUsage CertSign, CRLSign, DigitalSignature `
-Subject "CN=Test.internal" -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm SHA256 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable `
-NotAfter (Get-Date).AddYears(10) -TextExtension @("2.5.29.19={critical}{text}ca=true")Code-Sprache: PHP (php)CA-Zertifikat exportieren/sichern
Test.internal.cer muss auf Clients verteilt bzw. installiert werden, die der neuen CA vertrauen sollen.
Test.internal-PRIVAT.pfx enthält den privaten Schlüssel der CA.
$caCert = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object { $_.Subject -eq "CN=Test.internal" }
# Öffentliches Zertifikat:
Export-Certificate -Cert $caCert -FilePath "C:\temp\Test.internal.cer"
# CA-Zertifikat zum Erzeugen weiterer Zertifikate - PRIVATER SCHLÜSSEL!
Export-PfxCertificate -Cert $caCert -FilePath "C:\temp\Test.internal-PRIVAT.pfx" -Password (ConvertTo-SecureString -String "PASSWORT" -Force -AsPlainText)Code-Sprache: PHP (php)Zertifikat erstellen
Zertifikat für server.test.internal mit einer Laufzeit von 2 Jahren erstellen und exportieren.
$caCert = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object { $_.Subject -eq "CN=Test.internal" }
$cert = New-SelfSignedCertificate -Type Custom `
-Subject "CN=server.test.internal" `
-KeyAlgorithm RSA -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-Signer $caCert `
-TextExtension @("2.5.29.19={text}CA=false") `
-NotAfter (Get-Date).AddYears(2)
# als PFX exportieren - PRIVATER SCHLÜSSEL!
Export-PfxCertificate -Cert $cert -FilePath "C:\temp\server.test.internal-PRIVAT.pfx" -Password (ConvertTo-SecureString -String "PASSWORT" -Force -AsPlainText)Code-Sprache: PHP (php)server.test.internal-PRIVAT.pfx kann nun auf dem Server installiert werden. Clients die Test.internal.cer als Vertrauenswürdige Stammzertifizierungsstelle installiert haben, werden mit server.test.internal sichere und vertrauenswürdige Verbindungen herstellen können.
.PEM und .KEY
Mit Windows-Bordmitteln können die Zertifikate derzeit nicht als .PEM und .KEY exportiert werden. OpenSSL kann .PFX aber zu .PEM und .KEY konvertieren.
Warum .internal?
.internal ist die offizielle Top-Level-Domain (TLD) für interne private Domains.