Fügen Sie ein Anwendungszertifikat zu einem Service Fabric-Cluster hinzu

Dieses Beispielskript veranschaulicht Schritt für Schritt, wie Sie ein Zertifikat in Key Vault erstellen und dieses anschließend für eine der VM-Skalierungsgruppen bereitstellen, auf denen Ihr Cluster basiert. In diesem Szenario wird Service Fabric nicht direkt verwendet. Stattdessen werden Key Vault und VM-Skalierungsgruppen verwendet.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Installieren Sie bei Bedarf Azure PowerShell mithilfe der Anleitung im Azure PowerShell-Handbuch, und führen Sie dann Connect-AzAccount aus, um eine Verbindung mit Azure herzustellen.

Erstellen eines Zertifikats in Key Vault

$VaultName = ""
$CertName = ""
$SubjectName = "CN="

$policy = New-AzKeyVaultCertificatePolicy -SubjectName $SubjectName -IssuerName Self -ValidityInMonths 12
Add-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName -CertificatePolicy $policy

Oder: Hochladen eines vorhandenen Zertifikats in Key Vault

$VaultName= ""
$CertName= ""
$CertPassword= ""
$PathToPFX= ""

$bytes = [System.IO.File]::ReadAllBytes($PathToPFX)
$base64 = [System.Convert]::ToBase64String($bytes)
$jsonBlob = @{
   data = $base64
   dataType = 'pfx'
   password = $CertPassword
   } | ConvertTo-Json
$contentbytes = [System.Text.Encoding]::UTF8.GetBytes($jsonBlob)
$content = [System.Convert]::ToBase64String($contentbytes)

$SecretValue = ConvertTo-SecureString -String $content -AsPlainText -Force

# Upload the certificate to the key vault as a secret
$Secret = Set-AzKeyVaultSecret -VaultName $VaultName -Name $CertName -SecretValue $SecretValue

Aktualisieren des Profils von VM-Skalierungsgruppen mit dem Zertifikat

$ResourceGroupName = ""
$VMSSName = ""
$CertStore = "My" # Update this with the store you want your certificate placed in, this is LocalMachine\My

# If you have added your certificate to the keyvault certificates, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName).SecretId -CertificateStore $CertStore

# Otherwise, if you have added your certificate to the keyvault secrets, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultSecret -VaultName $VaultName -Name $CertName).Id -CertificateStore $CertStore

$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMSSName

# If this KeyVault is already known by the virtual machine scale set, for example if the cluster certificate is deployed from this keyvault, use
$VMSS.virtualmachineprofile.osProfile.secrets[0].vaultCertificates.Add($CertConfig)

# Otherwise use
$VMSS = Add-AzVmssSecret -VirtualMachineScaleSet $VMSS -SourceVaultId (Get-AzKeyVault -VaultName $VaultName).ResourceId  -VaultCertificate $CertConfig

Aktualisieren der VM-Skalierungsgruppe

Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName

Wenn Sie das Zertifikat auf mehreren Knotentypen in Ihrem Cluster platzieren möchten, müssen der zweite und dritte Teil dieses Skripts für jeden Knotentyp wiederholt werden, der über das Zertifikat verfügen soll.

Erläuterung des Skripts

Das Skript verwendet die folgenden Befehle: Jeder Befehl in der Tabelle ist mit der zugehörigen Dokumentation verknüpft.

Get-Help Notizen
New-AzKeyVaultCertificatePolicy Erstellt eine In-Memory-Richtlinie, die das Zertifikat darstellt.
Add-AzKeyVaultCertificate Stellt die Richtlinie für Key Vault-Zertifikate bereit.
Set-AzKeyVaultSecret Stellt die Richtlinie für Key Vault-Geheimnisse bereit.
New-AzVmssVaultCertificateConfig Erstellt eine In-Memory-Konfiguration, die das Zertifikat auf einem virtuellen Computer darstellt.
Get-AzVmss
Add-AzVmssSecret Fügt das Zertifikat der In-Memory-Definition der VM-Skalierungsgruppe hinzu.
Update-AzVmss Stellt die neue Definition der VM-Skalierungsgruppe bereit.

Nächste Schritte

Weitere Informationen zum Azure PowerShell-Modul finden Sie in der Azure PowerShell-Dokumentation.

Zusätzliche Azure PowerShell-Beispiele für Azure Service Fabric finden Sie unter Azure PowerShell-Beispiele.