【问题标题】:Install Certificate in IIS CurrentUser/Personal Store在 IIS CurrentUser/Personal Store 中安装证书
【发布时间】:2017-05-08 21:12:30
【问题描述】:

我们在 azure 上托管一些网站,在 azure 的虚拟机上托管一些网站。我们希望尽可能多地重用代码。在 azure 应用程序服务(网站)中,可以使用此 sn-p 在 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 上使用完全相同的 sn-p。应用程序池标识设置为ApplicationPoolIdentity。我已经尝试在各个地方安装证书,但我无法检索所需的证书......我还尝试在 LocalComputer/Personal 商店中安装证书并授予私钥权限

我应该在 MMC 管理单元中使用哪个标识?我在那里找不到ApplicationPoolIdentity 用户帐户。只有一个Application Identity 帐户不能解决我的问题...

【问题讨论】:

    标签: azure ssl iis


    【解决方案1】:

    如果您想使用本地计算机存储而不是指定用户的个人存储,则需要在调用 X509Store 构造函数时使用 StoreLocation.LocalMachine,枚举由两个值组成,并且在您上面的代码中您正在使用另一个 - CurrentUser。如果您使用证书的私钥,IIS AppUser\ApplicationPoolIdentity 用户将需要访问本地计算机存储中的相关证书,这可以通过在相关证书的私钥权限对话框中将DefaultAppPool 用户添加到允许的用户来授予。这可以从证书的上下文菜单中访问,位于All Tasks 下,然后是Manage Private Keys

    我目前不确定是否可以为ApplicationPoolIdentity 用户安装证书,我目前正在尝试自己寻找答案。根据Microsoft's IIS documentationApplicationPoolIdentity 帐户是为池的生命周期创建的虚拟帐户,因此我开始得出结论,可能无法为此类用户使用CurrentUser 存储。如果我最终发现,我会回来更新我的答案。

    【讨论】:

      【解决方案2】:

      目前我正在创建一个新用户,将证书添加到用户 My 商店并将该用户用作应用程序池身份。尽管如此,其他解决方案还是非常受欢迎的!

      【讨论】:

        猜你喜欢
        • 2022-07-15
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        相关资源
        最近更新 更多