我需要导入我的合作伙伴'我所有服务结构集群节点上的X509客户端证书(以及完整链),以便我可以验证每个传入请求并根据客户端证书对每个伙伴进行身份验证。这意味着当我导入客户端证书时,我希望将相关的中间证书(签署了客户端证书)和相关的根证书(签署中间证书)自动安装到适当的证书库中,例如“中级证书颁发机构”和#39;和'受信任的根证书颁发机构'在本地机器商店。
我希望整个链存储在证书存储中的适当位置的原因是因为我打算使用服务身份验证管道组件中的System.Security.Cryptography.X509Certificates命名空间中的X509Chain验证传入的客户端证书。 X509Chain似乎依赖于“受信任的根证书颁发机构”'存储以完成根证书验证。
有很多关于如何保护节点到节点以及b)管理客户端到群集通信的信息,例如:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-security。但是,没有太多关于保护服务(托管在服务结构集群中)与使用客户端证书的最终用户消费者之间的通信的信息。如果我错过了这些信息,请告诉我。
我没有很多合作伙伴客户端证书可供配置。合作伙伴的数量在可管理的范围内。每次有新的合作伙伴客户端证书要添加时,我都无法重新创建群集。
更新 我尝试了在osProfile部分下面的上述link中所述的添加客户端证书的建议方法。这看起来非常简单。
为了能够做到这一点,我首先需要将相关证书(作为机密)推送到相关的密钥保险库,如此link所述。在本文中,它描述了(在#34;格式化Azure资源提供程序使用的证书")中如何将证书信息格式化为Json格式,然后将其作为密钥保存在密钥库中。这个json有以下格式用于上传pfx文件字节:
{
"dataType": "pfx",
"data": "base64-encoded-cert-bytes-go-here",
"password": "pfx-password"
}
然而,由于我正在处理客户端证书的公共部分,我不是处理pfx文件,而是处理windows中的base64 cer文件(显然与其他地方的pem文件相同)。公共部分证书没有密码。所以我将Json格式改为以下:
{
"dataType": "pem",
"data": "base64-encoded-cert-bytes-go-here"
}
当我使用相关的ARM模板调用New-AzureRmResourceGroupDeployment并在osProfile部分下进行适当的更改时,我收到以下错误:
New-AzureRmResourceGroupDeployment : 11:08:11 PM - Resource Microsoft.Compute/virtualMachineScaleSets 'nt1vm' failed with message '{
"status": "Failed",
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource operation completed with terminal provisioning state 'Failed'.",
"details": [
{
"code": "CertificateImproperlyFormatted",
"message": "The secret's JSON representation retrieved from
https://xxxx.vault.azure.net/secrets/ClientCert/ba6855f9866644ccb4c436bb2b7675d3 has data type pem which is not
an accepted certificate type."
}
]
}
}'
我也尝试过使用' cer'数据类型如下所示:
{
"dataType": "cer",
"data": "base64-encoded-cert-bytes-go-here"
}
它也导致了同样的错误。
我做错了什么?