IIS7& X.509证书:从asp.net连接到Web服务 - 存储证书的位置?

时间:2009-08-16 18:36:01

标签: iis-7 x509

我必须从Web应用程序连接到XMLRPC站点,该应用程序使用X.509证书进行身份验证。在我的开发机器(Vista)上,我在我的用户下安装了密钥,它位于我的个人证书存储中;如果我运行我的代码,它运行良好(从文件加载密钥):

 X509Certificate clientcert = new X509Certificate(this.certFile, this.password);
 request.ClientCertificates.Add(clientcert);

但我需要在Windows 2008 Web服务器上安装此应用程序,但我没有找到如何使其使用此证书文件。

我以为我需要导入所有相应的“父”键,所以我做了。 我尝试将所有这些导入到受信任的根证书存储区,但没有运气:它仍然说它不合适。

我应该使用模拟帐户,并拥有所有证书吗? 是否应该配置IIS7以使用此用户/证书存储?

2 个答案:

答案 0 :(得分:0)

我相信IIS可以访问两个证书存储:机器商店及其服务存储。在mmc.exe中,打开证书管理单元,然后连接到本地计算机的存储。在Personal \ Certificates中,您应该找到服务器证书。尝试将证书和私钥放在旁边。或者,连接到服务的商店(万维网发布服务),并将证书放在个人。

答案 1 :(得分:0)

唯一的解决方案是

1)将根密钥导入LOCAL_MACHINE \ Root Certificates store

2)将根密钥导入(您的用户)\ Root Certificates store

3)在asp.net代码中,使用模拟,如:

<identity impersonate="true" userName="(your user)" password="(your password)" />

出于某种原因,然而IIS7的所有进程都在NT_AUTHORITY \ NETWORK用户下运行,将证书安装到NETWORK用户的商店没有任何用处。