从密钥存储到 VM 的证书部署需要存储为特定的 json 文档,我没有在 ARM 模板中完成,但在 Powershell 中我使用以下内容:
$cert = Get-Content $certLocation -Encoding Byte;
$cert = [System.Convert]::ToBase64String($cert);
$json = @"
{
"data" : "$cert",
"dataType": "pfx",
"password": "$password"
}
"@
$package = [System.Text.Encoding]::UTF8.GetBytes($json);
$package = [System.Convert]::ToBase64String($package);
$secret = ConvertTo-SecureString -String $package -AsPlainText -Force;
从理论上讲,如果您可以接受此操作,然后将 $secret 值注入您的 ARM 模板,您应该能够实现您想要做的事情。
请记住,此时的 $password 是计划文本,而不是安全字符串,因此 Azure Compute 可以使用它来安装证书。
然后在您的集群 ARM 模板中,您可以引用 VMSS 操作系统配置文件中的证书和密钥库:
"osProfile": {
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"computernamePrefix": "[parameters('vmNodeType0Name')]",
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVault')]"
},
"vaultCertificates": [
{
"certificateStore": "My",
"certificateUrl": "[parameters('clusterCertificateUrl')]"
},
{
"certificateStore": "My",
"certificateUrl": "[parameters('adminCertificateUrl')]"
}
]
}
]
}
然后在 Service Fabric 资源属性下的同一 ARM 模板中引用您要使用的特定证书。
"certificate": {
"thumbprint": "[parameters('clusterCertificateThumbPrint')]",
"x509StoreName": "My"
},
"clientCertificateCommonNames": [],
"clientCertificateThumbprints": [{
"CertificateThumbprint": "[parameters('adminCertificateThumbPrint')]",
"IsAdmin": true
}],
如果有帮助,这里是我在 github 上尝试的链接