Azure service fabric 在没有私钥的服务结构群集中安装证书

Azure service fabric 在没有私钥的服务结构群集中安装证书,azure-service-fabric,azure-resource-manager,azure-keyvault,Azure Service Fabric,Azure Resource Manager,Azure Keyvault,我需要在使用ARM模板创建的服务结构集群中安装证书。我能够使用以下helper powershell命令安装带有私钥的证书: > Invoke-AddCertToKeyVault 一旦此证书位于Azure Key Vault中,我可以修改我的ARM模板以在群集中的节点上自动安装证书: "osProfile": { "secrets": [ { "sourceVault": { "id": "[paramet

我需要在使用ARM模板创建的服务结构集群中安装证书。我能够使用以下helper powershell命令安装带有私钥的证书:

> Invoke-AddCertToKeyVault

一旦此证书位于Azure Key Vault中,我可以修改我的ARM模板以在群集中的节点上自动安装证书:

"osProfile": {
    "secrets": [
        {
            "sourceVault": {
                "id": "[parameters('vaultId')]"
            },
            "vaultCertificates": [
                {
                    "certificateStore": "My",
                    "certificateUrl": "https://mykeyvault.vault.azure.net:443/secrets/fabrikam/9d1adf93371732434"
                }
            ]          
        }
    ]
}
问题是Invoke AddCertToKeyVault希望我提供一个pfx文件,假设我有私钥

脚本正在创建以下JSON blob:

$jsonBlob = @{
    data = $base64
    dataType = 'pfx'
    password = $Password
} | ConvertTo-Json
我修改了脚本以删除密码并将数据类型更改为“cer”,但当我在Azure中部署该模板时,它表示该数据类型不再有效

如何将证书部署到不包含私钥的服务结构群集?

1)SF并不真正关心您是否使用.cer或.pfx。SF所需要的只是证书在VM的本地证书存储中可用

2) 您遇到的问题是CRP代理(它将证书从keyvault安装到VM中的本地证书存储)现在只支持.pfx

现在你有两个选择

1) 创建一个没有私钥的pfx文件并使用它

下面是如何通过C#(或powershell)实现的 将证书加载到X509Certificate2对象中 然后使用X509ContentType=Pfx的导出方法

2) 使用自定义VM扩展部署.cer。因为.cer只是一个公钥证书,所以不应该有隐私要求。您只需将证书上载到blob,并使用自定义脚本扩展将其下载并安装到计算机上