【问题标题】:Keyset does not exist - permissions should be OK密钥集不存在 - 权限应该没问题
【发布时间】:2018-01-30 07:16:57
【问题描述】:

我在 Windows Server 2016 上将 WCF 服务部署到 IIS 时遇到问题。 该服务需要一个私钥,其位置配置如下:

<serviceCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" findValue="..." />

我收到了著名的错误“密钥集不存在”,所以我用谷歌搜索并加倍检查了权限等。 证书正确放置在 LocalMachine/Personal/Certificates 中。允许导出主键。

我授予 APPPOOL 身份和 IIS_IUSRS 的主键权限。 我什至尝试授予对“所有人”的完全访问权限。 我还尝试在我的管理员帐户下运行应用程序池。

运气不好。

我尝试创建一个小型 C# 控制台应用程序来读取证书、主键并导出主键。 这行得通。

所以我现在别无选择。 有什么可以解决这个问题的建议吗?

【问题讨论】:

  • 如果您运行certutil -store my,您会看到什么?如果证书关联了私钥,则会出现Encryption test passedSignature test passed 之类的内容。
  • 证书在那里,并显示消息“加密测试通过”。
  • 好的,那么当您查看您的 IIS 应用程序池时。它以什么身份运行(池->高级设置>身份)?它应该是 ApplicationPoolIdentity。
  • 这就是身份,没错。
  • 那么需要权限的用户应该是IIS APPPOOl\XYZ 其中XYZ 是您的池的名称。我使用certlm.msc 设置权限,右键单击证书,然后单击所有任务->管理私钥。

标签: wcf iis permissions certificate


【解决方案1】:

应用程序作为父站点的应用程序运行,但具有自己的专用应用程序池。向父站点的应用程序池授予私钥权限可解决此问题。这对我来说没有任何意义,但至少它现在有效......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 2016-07-29
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2023-03-20
    • 2012-08-19
    相关资源
    最近更新 更多