我们在azure上托管一些网站,在天蓝色的vm上托管一些网站。我们希望尽可能多地重用代码。在azure应用程序服务(网站)中,可以使用此代码段在CurrentUser / Personal商店中找到已安装的证书:
using (var certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
var certCollection =
certStore.Certificates.Find(
X509FindType.FindByThumbprint,
thumbprint,
false);
}
我也希望在IIS上使用完全相同的代码段。应用程序池标识设置为ApplicationPoolIdentity
。我已经尝试在各个地方安装证书,但我无法检索所需的证书...我还尝试在LocalComputer / Personal商店中安装证书并授予私钥的权限
我应该在MMC管理单元中使用哪个标识?我在那里找不到ApplicationPoolIdentity
用户帐户。只有一个Application Identity
帐户无法解决我的问题...
答案 0 :(得分:0)
暂时我正在创建一个新用户,将证书添加到用户My
商店并将该用户用作应用程序池标识。不过,其他解决方案非常受欢迎!
答案 1 :(得分:0)
如果要使用本地计算机存储而不是命名用户的个人存储,则在调用O(n*2^n)
构造函数时需要使用StoreLocation.LocalMachine
,Enum由两个值和在上面的代码中,您正在使用另一个-X509Store
。如果您使用证书的私钥,则CurrentUser
用户将需要访问本地计算机存储中的相关证书,可以通过将IIS AppUser\ApplicationPoolIdentity
用户添加到相关证书的私钥的允许用户中来授予此权限。密钥权限对话框。可从证书的上下文菜单中依次访问DefaultAppPool
和All Tasks
。
我目前不确定是否可以为Manage Private Keys
用户安装证书,我目前正在尝试自己找到答案。根据{{3}},ApplicationPoolIdentity
帐户是为整个池期创建的虚拟帐户,因此我开始得出结论,对于这种类型的帐户,可能无法使用ApplicationPoolIdentity
存储用户。如果可以确定,我会回来并更新答案。