将应用程序证书添加到 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 -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
如果希望将证书放置在群集中的多个节点上,应针对每个应具有证书的节点类型重复此脚本的第二个和第三部分。
脚本说明
此脚本使用以下命令:表中的每条命令均链接到特定于命令的文档。
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 示例。