在没有私钥的情况下在 Service Fabric 群集中安装证书
Install a certificate in a Service Fabric Cluster without a private key
我需要在使用 ARM 模板创建的 Service Fabric 群集中安装证书。我能够使用以下 helper 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
我修改了脚本以删除密码并将数据类型更改为 'cer' 但是当我在 Azure 中部署模板时它说数据类型不再有效。
如何将证书部署到不包含私钥的服务结构集群?
1) SF 并不关心你使用的是.cer 还是.pfx。所有 SF 需要的是证书在 VM 的本地证书存储中可用。
2) 您遇到的问题 运行 是 CRP 代理,它将证书从 keyvault 安装到 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 只是一个 public 密钥证书,因此应该没有隐私要求。您可以只将证书上传到 blob,然后让自定义脚本扩展下载它并将其安装在机器上。
我需要在使用 ARM 模板创建的 Service Fabric 群集中安装证书。我能够使用以下 helper 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
我修改了脚本以删除密码并将数据类型更改为 'cer' 但是当我在 Azure 中部署模板时它说数据类型不再有效。
如何将证书部署到不包含私钥的服务结构集群?
1) SF 并不关心你使用的是.cer 还是.pfx。所有 SF 需要的是证书在 VM 的本地证书存储中可用。
2) 您遇到的问题 运行 是 CRP 代理,它将证书从 keyvault 安装到 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 只是一个 public 密钥证书,因此应该没有隐私要求。您可以只将证书上传到 blob,然后让自定义脚本扩展下载它并将其安装在机器上。