【发布时间】: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 passed或Signature test passed之类的内容。 -
证书在那里,并显示消息“加密测试通过”。
-
好的,那么当您查看您的 IIS 应用程序池时。它以什么身份运行(池->高级设置>身份)?它应该是 ApplicationPoolIdentity。
-
这就是身份,没错。
-
那么需要权限的用户应该是
IIS APPPOOl\XYZ其中XYZ是您的池的名称。我使用certlm.msc设置权限,右键单击证书,然后单击所有任务->管理私钥。
标签: wcf iis permissions certificate