共用方式為

将应用程序证书添加到服务Fabric群集

此示例Azure PowerShell脚本逐步讲解如何在Key Vault中创建证书,然后将其部署到群集上运行的虚拟机规模集之一。 该方案不直接使用 Service Fabric,它依赖于 Key Vault 和虚拟机规模集。

注意

建议使用 Azure Az PowerShell 模块与Azure交互。 若要开始,请参阅 Install Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 Migrate Azure PowerShell从 AzureRM 迁移到 Az

如果需要,请使用 Azure PowerShell 指南中找到的说明安装Azure PowerShell,然后运行 Connect-AzAccount -Environment AzureChinaCloud 来创建与Azure的连接。

在 Key Vault 中创建证书

Connect-AzAccount -Environment AzureChinaCloud

$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

如果希望将证书放置在群集中的多个节点上,应针对每个应具有证书的节点类型重复此脚本的第二个和第三部分。

脚本说明

此脚本使用以下命令:表中的每条命令均链接到特定于命令的文档。

命令 说明
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示例。