我有一个 ASP.NET webservice,它使用客户端证书与另一个 webservice 进行通信。该证书位于 LOCAL_MACHINE 存储中。我已通过 winhttpcertcfg.exe 授予“网络服务”对该证书的访问权限。我知道我授予的权限是正确的,因为我在开发箱上让一切都运行正常,而权限是让它正常工作的步骤。
因此,我试图找出我的开发箱和生产箱之间的区别。它们都安装了 IIS 6.0。它们都安装了我的 Web 服务。它们都在本地机器存储中拥有相同的证书,且具有“网络服务”权限。当选择证书时,它们都能够通过 IE 查看其他 Web 服务。它们都能够使用 CURRENT_USER 中的证书通过非 IIS 应用程序使用其他 Web 服务。我已经直观地查看了我所知道的每个 IIS 设置,它们似乎都是一样的。
那么,是否有某些设置可能导致“网络服务”在 LOCAL_MACHINE 存储之外的某个地方查找证书?还是我可能忽略了其他什么?
答案1
答案2
我尝试了 Jack B Nimble 列出的将证书添加到网络服务帐户的步骤,但似乎没有帮助。
我最终通过以下方式解决了我的问题:1. 在 IIS 中,转到我的网站下的“目录安全”选项卡 2. 单击“服务器证书” 3. 通过向导导入我的证书
我认为这一步是多余的,因为它处理的是服务器端证书。即使证书已经在 LOCAL_MACHINE 中,上述过程的某些方面也会导致“网络服务”看到它。即使在使用向导“删除”证书后也是如此。
这是一个在我的开发箱中已经完成(实验性)的步骤,但是在我的生产箱中还没有完成。
“网络服务”现在肯定正在使用 LOCAL_MACHINE 证书,因为切换权限也会切换我的 web 服务的通信能力。