PowerShell-Modul · 17.5
Zertifikat erstellen und Deployment hinzufügen
Erstellen Sie zuerst das Zertifikat und fügen Sie ihm dann ein oder mehrere Deployments hinzu.
- Erstellen Sie das Zertifikat. Verwenden Sie den vollqualifizierten Domainnamen als Namen. Er wird zum Subject des ausgestellten Zertifikats und in die Liste der Domains aufgenommen, zum Beispiel:
$cert = New-TLSPilotCertificate -Name 'web01.example.com' `
-Domain 'web01.example.com' -Source PrivateCa
-Source akzeptiert LetsEncrypt, ZeroSsl, Acme, WindowsEnterpriseCa und PrivateCa. Ohne -Source wird LetsEncrypt verwendet. Die übrigen Parameter hängen von der gewählten Quelle ab: ein DNS-Provider und ein Credential für eine Dns01-Challenge; -Http01Mode Listener (Standard) oder WebRoot mit -WebRoot für Http01; -ListenAddress (Standard 0.0.0.0, Port 443) für TlsAlpn01; eine Vorlage für die Enterprise CA; die CA-ID für die Private CA; und für -Source Acme der Provider mit -AcmeAuthorityId, der ID, die Get-TLSPilotAcmeProvider anzeigt. Get-Help New-TLSPilotCertificate -Full listet alle Kombinationen auf.
Bei einem ACME-Zertifikat wählt -Profile ein ACME-Profil der CA, zum Beispiel tlsserver. Ohne diesen Parameter verwendet TLSPilot CA default. -RenewOnCaEmergency setzt die Notfalloption des Zertifikats auf Global, On oder Off. Get-TLSPilotAcmeProvider listet die konfigurierten ACME-Provider mit ihrer ID auf. Global entspricht Global setting im Dialog. -RenewalWindow (ein TimeSpan, zum Beispiel (New-TimeSpan -Days 20) oder (New-TimeSpan -Hours 12)) setzt das Erneuerungsfenster. Ohne diesen Parameter verwendet TLSPilot denselben Vorschlag wie der Dialog, abgeleitet von der Laufzeit des Profils bzw. der Vorlage, höchstens 30 Tage. Bei einem Enterprise-CA-Zertifikat schaltet -RenewalWindow zudem Follow template renewal period aus.
Für DNS-01 Alias Mode (Kapitel DNS-01 Alias Mode einrichten) ergänzen Sie -DnsValidation Alias und die Alias-Zone mit -DnsAliasDomain. -DnsValidation akzeptiert RealDomain (Standard) und Alias; mit Alias ist -DnsAliasDomain Pflicht, sonst bricht der Befehl mit Alias domain is required for DNS-01 Alias Mode. ab. -DnsProvider und -DnsCredentialTarget beziehen sich dann auf die Alias-Zone:
$cert = New-TLSPilotCertificate -Name 'shop.example.com' `
-Domain 'shop.example.com','www.example.org' -ChallengeType Dns01 `
-DnsProvider cloudflare -DnsCredentialTarget 'dns/cloudflare' `
-DnsValidation Alias -DnsAliasDomain 'servicedomain.net'
Vor dem Speichern listet der Befehl die benötigten CNAME-Records auf, eine Zeile pro Name in der Form _acme-challenge.shop.example.com → _acme-challenge.shop.example.com.servicedomain.net, gefolgt von TLSPilot writes the TXT record in the alias zone only. See the User Manual for details. Danach prüft er die Records und meldet jeden fehlenden oder falschen Record als Warnung (DNS-01 Alias Mode: …). Eine Warnung verhindert das Speichern nicht, aber die Bestellung wird verweigert, bis die Records korrekt sind. Set-TLSPilotCertificate nimmt dieselben zwei Parameter entgegen, um ein bestehendes Zertifikat in den Alias Mode oder zurück umzustellen, und führt dieselbe Auflistung und Prüfung aus. Set-TLSPilotCertificate erwartet die Konfiguration des Zertifikats aus Get-TLSPilotConfig, nicht eine Zeile von Get-TLSPilotCertificate, und speichert sofort, ohne -WhatIf:
$c = (Get-TLSPilotConfig).certificates | Where-Object name -eq 'shop.example.com'
Set-TLSPilotCertificate -Certificate $c -DnsValidation Alias `
-DnsAliasDomain 'servicedomain.net'
- Fügen Sie ein Deployment hinzu. Es teilt TLSPilot mit, wo das Zertifikat installiert werden soll. Wählen Sie das Ziel mit
-Method, zum Beispiel:
$dep = New-TLSPilotDeployment -CertificateId $cert.id `
-Method WindowsIisBinding -Host 'web01' -SiteName 'Default Web Site'
Die Parameter eines Ziels erscheinen erst, wenn -Method gesetzt ist. Um zu sehen, was ein Ziel braucht, drücken Sie nach dem Methodennamen die Tabulatortaste. Die folgende Tabelle listet alle Ziele und ihre Parameter auf. Mit einem Sternchen markierte Parameter sind für das Ziel Pflicht.
| Parameter | Deployment-Methoden |
|---|---|
-Host | WindowsCertificateStore, WindowsNps, WindowsExchange, WindowsAdfs, LinuxSshNginx, LinuxSshApache, LinuxSshHaproxy, LinuxSshTomcat, LinuxSshPostgreSql, LinuxSshMySql |
-Host -Instance | WindowsRds, WindowsSqlServer |
-Host -SiteName* -Instance | WindowsIisBinding, WindowsWinRmIis |
-Host -DestinationPath | WindowsWinRmFile, WindowsPfxFile, LinuxSshPem |
-Host -DestinationPath* | LinuxSshFile |
-Host -Instance -Port | F5IcontrolRest |
-Host -Instance -Vsys -Port | PaloAltoPanos |
-Host -Port | OmnissaUag |
-Instance -Folder -TsgId* | PaloAltoScm |
-UncPath* | WindowsUncShare |
-VaultName* -CertificateName | AzureKeyVault |
-ProjectId* -CertificateName | GoogleCertificateManager |
-CertificateName | AzureAppService, AzureAppGateway, AzureFrontDoor, AzureApiManagement, AzureAppProxy, EntraAppCertificate |
-CertificateName* | AwsCertificateManager |
none | TlsPilotWebUi, CustomScript |
Ohne -Host verwenden hostbasierte Ziele localhost, also den Management-Host.
Die Dateiziele WindowsWinRmFile (File Path (WinRM)), WindowsUncShare (UNC share) und LinuxSshFile (File Path (SSH)) nehmen fünf zusätzliche Parameter entgegen, die den Inhalt der Dateien festlegen, siehe Kapitel Ketten-Optionen. Andere Ziele ignorieren sie.
| Parameter | Standard | Wirkung |
|---|---|---|
-IncludePrivateKey | $true | Schreibt den privaten Schlüssel. |
-IncludeChain | $true | Schreibt die Intermediates nach dem Zertifikat. $false schreibt nur das Leaf und setzt zudem -IncludeRoot und -ReverseChainOrder zurück. |
-SeparateFiles | $true | Schreibt den Schlüssel in eine eigene Datei. |
-IncludeRoot | $false | Hängt das Root-Zertifikat an, das in den lokalen Zertifikatsspeichern des Management-Hosts gesucht wird, wenn es nicht in der Kette ist. Wird nur als $true gespeichert, wenn die Kette eingeschaltet ist. |
-ReverseChainOrder | $false | Umgekehrte Reihenfolge der Kette (Root zuerst). Wird nur als $true gespeichert, wenn die Kette eingeschaltet ist. |
New-TLSPilotDeployment -CertificateId $cert.id -Method WindowsUncShare `
-UncPath '\\fs01\certs' -CredentialTarget 'unc-lab' `
-IncludeChain $true -IncludeRoot $true
Set-TLSPilotDeployment nimmt dieselben Parameter entgegen und ändert nur die, die Sie übergeben. Bei den Dateizielen legt -FileFormat (pfx, pkcs8, pkcs1, encrypted-pem) das Format fest, -KeyPassword (SecureString) das Passwort, -PemKeyFormat (asIssued, rsa, pkcs8) das Schlüsselformat und -WritePasswordFile die .pwd-Datei. -KeyPassword ist Pflicht bei pfx, bei encrypted-pem mit Schlüssel und bei LinuxSshTomcat, wo es zum certificateKeystorePassword wird. Ohne -FileFormat speichert ein neues Dateiziel pkcs8; ein bestehendes Format wird nicht überschrieben. -SeparateFiles ist bei Deployments standardmässig $true und beim Export $false.
- Testen Sie das Ziel, bevor Sie sich darauf verlassen.
Test-TLSPilotDeploymentöffnet eine echte Verbindung und authentifiziert sich, installiert das Zertifikat aber nicht:
Test-TLSPilotDeployment -CertificateId $cert.id -DeploymentId $dep.id
Sie können ein Ziel auch testen, bevor das Deployment existiert. Übergeben Sie dazu statt -DeploymentId die Parameter -CertificateId, -Method und die Parameter des Ziels. Um ein Deployment später zu ändern oder es zu deaktivieren, ohne es zu löschen, verwenden Sie Set-TLSPilotDeployment:
Set-TLSPilotDeployment -CertificateId $cert.id -Id $dep.id -Enabled $false