在我当前的ASP.NET核心项目中,我使用Azure Active Directory身份验证和X509Certificate来访问密钥保管库。需要在机器上安装证书以允许应用程序访问它并最终从Key Vault读取值。现在我正在将此应用程序迁移到Azure Service Fabric。我上传的证书修饰手臂模板库的关键,通过添加:从Azure服务结构中托管的ASP.NET核心应用程序访问Azure密钥保管库
"osProfile": {
"secrets": [
{
"sourceVault": {
"id": "{KeyVaultIdHere}"
},
"vaultCertificates": [
{
"certificateUrl": "{CertificateUrlHere}",
"certificateStore": "My"
}
]
}
]
},
但是当我部署我的应用程序Azure的服务织物好像它没有获得证书。我是否正确理解当我使用此类ARM模板创建群集时,正在安装证书LocalMachine\My
存储?如果是,是否有可能,在哪个应用程序运行的操作系统用户没有权限访问私钥?当我在本地计算机上运行集群时,我必须给予ASF本地集群用户特殊权限才能读取私钥。也许Azure上的ASF需要完成相同的工作?怎么办?提前致谢。
我已经远程从ASF集群虚拟机,事实证明,这个证书上缺少私钥许可。但我无法手动设置它,因为“管理员”对此证书只具有“读取”权限。出于这个原因,我将尝试修改ARM模板,以便“解除”运行ASF群集的NETWORK_SERVICE的私钥。 –
“NETWORK_SERVICE”的ACL应该在配置证书时自动完成。访问KeyVault的代码如何?也许你的方法是默认查看'cert:\ currentuser \ my',这对SF来说当然是不正确的! – Mardoxx
我的方法确实在看'localmachine/my'商店。当我运行ASF本地集群时,它工作正常。有趣的是,你提到的是,NETWORK_SERVICE应该可以访问使用ARM模板安装的这种证书的私钥。显然,它没有。只有'System'完全可以访问它。还提到了'Administrators'组,但只有'Read'权限。 –