Zum Inhalt springen

PowerShell: CA-Zertifikat und Zertifikate erzeugen

Mit Windows 11 und PowerShell CA-Zertifikat und weitere Zertifikate erstellen.

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

12 + 5 =