將應用程式憑證新增到 Service Fabric 叢集

此範例指令碼會逐步解說如何在 Key Vault 中建立憑證,然後將其部署至叢集執行所在的其中一個虛擬機器擴展集。 此案例不會直接使用 Service Fabric,而是會依賴 Key Vault 和虛擬機器擴展集。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

您可以視需要使用 Azure PowerShell 指南 (英文) 中的指示來安裝 Azure PowerShell,然後執行 Connect-AzAccount 來建立與 Azure 的連線。

在 Key Vault 中建立憑證

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

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

或將現有憑證上傳至 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

使用憑證更新虛擬機器擴展集設定檔

$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

更新虛擬機器擴展集

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

如果您想要將憑證放在叢集中的多個節點類型上,則應對每個應有憑證的節點類型重複執行此指令碼的第二個和第三個部分。

指令碼說明

此指令碼會使用下列命令:下表中的每個命令都會連結至命令特定的文件。

Command 注意
New-AzKeyVaultCertificatePolicy 建立代表憑證的記憶體內部原則
Add-AzKeyVaultCertificate 將原則部署至 Key Vault 憑證
Set-AzKeyVaultSecret 將原則部署至 Key Vault 祕密
New-AzVmssVaultCertificateConfig 建立代表 VM 中的憑證的記憶體內部設定
Get-AzVmss
Add-AzVmssSecret 將憑證新增至虛擬機器擴展集的記憶體內部定義
Update-AzVmss 部署虛擬機器擴展集的新定義

下一步

如需有關 Azure PowerShell 模組的詳細資訊,請參閱 Azure PowerShell 文件

您可以在 Azure PowerShell 範例中找到適用於 Azure Service Fabric 的其他 Azure PowerShell 範例。