在管道中使用来自 Azure 密钥保管库的证书
Using certificate from Azure key vault in pipeline
我有一个包含证书的密钥库。在 Azure DevOps 中,我创建了一个链接到此密钥保管库的库,并在我的发布管道中创建了一个引用证书的参数。对于以这种方式使用例如密码和用户名,在代码中很容易做到,只需使用 password = Environment.GetEnvironmentVariable("password")
,但是如何使用证书做到这一点?
我当前用于设置安装在本地证书存储中的证书的代码是:
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certificateCollection = store.Certificates.Find(X509FindType.FindByThumbprint, "3333333333333", true);
var handler = new HttpClientHandler();
handler.ClientCertificates.Add(certificateCollection[0]);
我想替换它,以便它在我的密钥保管库中查找和使用证书。有谁知道如何做到这一点?我发现这方面的文档非常少,有人会认为这是一个非常普遍的问题。
编辑:
好的,我发现我可以将证书添加到应用服务的 SSL 设置中:
问题仍然存在,我如何告诉我的代码使用这个证书?
在谷歌搜索一些特定的搜索短语后,我找到了这篇文章:https://docs.microsoft.com/en-us/azure/app-service/configure-ssl-certificate-in-code,它现在似乎有效。
我只是在我的应用程序设置中添加了 WEBSITE_LOAD_CERTIFICATES 作为参数并将其设置为“*”以加载所有证书,然后根据定价层将证书放置在证书存储中:
隔离层 - 在本地 Machine\My。
所有其他等级 - 当前 User\My.
指纹可以正常使用了。
我有一个包含证书的密钥库。在 Azure DevOps 中,我创建了一个链接到此密钥保管库的库,并在我的发布管道中创建了一个引用证书的参数。对于以这种方式使用例如密码和用户名,在代码中很容易做到,只需使用 password = Environment.GetEnvironmentVariable("password")
,但是如何使用证书做到这一点?
我当前用于设置安装在本地证书存储中的证书的代码是:
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certificateCollection = store.Certificates.Find(X509FindType.FindByThumbprint, "3333333333333", true);
var handler = new HttpClientHandler();
handler.ClientCertificates.Add(certificateCollection[0]);
我想替换它,以便它在我的密钥保管库中查找和使用证书。有谁知道如何做到这一点?我发现这方面的文档非常少,有人会认为这是一个非常普遍的问题。
编辑:
好的,我发现我可以将证书添加到应用服务的 SSL 设置中:
问题仍然存在,我如何告诉我的代码使用这个证书?
在谷歌搜索一些特定的搜索短语后,我找到了这篇文章:https://docs.microsoft.com/en-us/azure/app-service/configure-ssl-certificate-in-code,它现在似乎有效。
我只是在我的应用程序设置中添加了 WEBSITE_LOAD_CERTIFICATES 作为参数并将其设置为“*”以加载所有证书,然后根据定价层将证书放置在证书存储中:
隔离层 - 在本地 Machine\My。 所有其他等级 - 当前 User\My.
指纹可以正常使用了。