Dodawanie certyfikatu aplikacji do klastra usługi Service Fabric

Ten przykładowy skrypt przeprowadzi cię przez proces tworzenia certyfikatu w Key Vault, a następnie wdrażania go w jednym z zestawów skalowania maszyn wirtualnych uruchomionych w klastrze. Ten scenariusz nie korzysta bezpośrednio z usługi Service Fabric, ale zależy od Key Vault i zestawów skalowania maszyn wirtualnych.

Uwaga

Aby korzystać z platformy Azure, zalecany jest moduł Azure Az programu PowerShell. Zobacz Instalowanie Azure PowerShell, aby rozpocząć pracę. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

W razie potrzeby zainstaluj program Azure PowerShell, korzystając z instrukcji w przewodniku programu Azure PowerShell, a następnie uruchom polecenie Connect-AzAccount, aby utworzyć połączenie z platformą Azure.

Tworzenie certyfikatu w Key Vault

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

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

Lub przekaż istniejący certyfikat do 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

Aktualizowanie profilu zestawów skalowania maszyn wirtualnych przy użyciu certyfikatu

$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

Aktualizowanie zestawu skalowania maszyn wirtualnych

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

Jeśli chcesz, aby certyfikat umieszczony w wielu typach węzłów w klastrze, druga i trzecia część tego skryptu powinna zostać powtórzona dla każdego typu węzła, który powinien mieć certyfikat.

Objaśnienia dla skryptu

W tym skrypcie użyto następujących poleceń. Każde polecenie w tabeli stanowi link do dokumentacji polecenia.

Polecenie Uwagi
New-AzKeyVaultCertificatePolicy Tworzy zasady w pamięci reprezentujące certyfikat
Add-AzKeyVaultCertificate Wdraża zasady w usłudze Key Vault Certificates
Set-AzKeyVaultSecret Wdraża zasady w celu Key Vault wpisów tajnych
New-AzVmssVaultCertificateConfig Tworzy konfigurację w pamięci reprezentującą certyfikat na maszynie wirtualnej
Get-AzVmss
Add-AzVmssSecret Dodaje certyfikat do definicji w pamięci zestawu skalowania maszyn wirtualnych
Update-AzVmss Wdraża nową definicję zestawu skalowania maszyn wirtualnych

Następne kroki

Aby uzyskać więcej informacji na temat modułu Azure PowerShell, zobacz dokumentację programu Azure PowerShell.

Dodatkowe przykłady Azure PowerShell dla usługi Azure Service Fabric można znaleźć w przykładach Azure PowerShell.