【问题标题】:Install a certificate in a Service Fabric Cluster without a private key在没有私钥的情况下在 Service Fabric 群集中安装证书
【发布时间】:2016-10-10 12:23:43
【问题描述】:

我需要在使用 ARM 模板创建的 Service Fabric 群集中安装证书。我能够使用以下帮助程序 powershell 命令安装带有私钥的证书:

> Invoke-AddCertToKeyVault

https://github.com/ChackDan/Service-Fabric/tree/master/Scripts/ServiceFabricRPHelpers

此证书在 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

我修改了脚本以删除密码并将 dataType 更改为“cer”,但是当我在 Azure 中部署模板时,它说 dataType 不再有效。

如何将证书部署到不包含私钥的 Service Fabric 集群?

【问题讨论】:

    标签: azure-service-fabric azure-resource-manager azure-keyvault


    【解决方案1】:

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

    2) 您遇到的问题是 CRP 代理,它将证书从密钥库安装到 VM 中的本地证书存储,目前仅支持 .pfx。

    所以现在你有两个选择

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

    这里是如何通过 C#(或 powershell)来做 将证书加载到 X509Certificate2 对象中 然后使用 X509ContentType = Pfx 的导出方法 https://msdn.microsoft.com/en-us/library/24ww6yzk(v=vs.110).aspx

    2) 使用自定义 VM 扩展部署 .cer。由于 .cer 只是一个公钥证书,因此不应该有隐私要求。您可以将证书上传到 blob,然后让自定义脚本扩展下载它并将其安装在机器上。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2019-06-16
      • 2017-01-15
      • 2020-11-11
      • 2017-04-06
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2019-11-29
      相关资源
      最近更新 更多