HttpWebRequest客户端证书在IIS中不工作

HttpWebRequest客户端证书在IIS中不工作,iis,httpwebrequest,certificate,x509certificate2,Iis,Httpwebrequest,Certificate,X509certificate2,我正在尝试创建托管在IIS中的WCF应用程序。此WCF应用程序将调用第三方网站下载CSV文件。第三方网站已提供证书以验证WCF呼叫。我的发展环境是, -操作系统:Windows 2008R2 -工具:VisualStudio2010(.net4.x) 在开发过程中,使用HttpWebRequest进行调用没有问题,但在IIS中部署相同的东西后,即使我使用IIS作为开发服务器运行Visual Studio 2010,也会出现以下错误 \r\n证书信息与登录不匹配,连接被拒绝 安装期间的证书需要密码

我正在尝试创建托管在IIS中的WCF应用程序。此WCF应用程序将调用第三方网站下载CSV文件。第三方网站已提供证书以验证WCF呼叫。我的发展环境是,

-操作系统:Windows 2008R2 -工具:VisualStudio2010(.net4.x)

在开发过程中,使用HttpWebRequest进行调用没有问题,但在IIS中部署相同的东西后,即使我使用IIS作为开发服务器运行Visual Studio 2010,也会出现以下错误

\r\n证书信息与登录不匹配,连接被拒绝

安装期间的证书需要密码。我已经在“我的用户帐户”和“计算机帐户”中安装了它。它也安装在IE中。在所有安装中,它都安装在“受信任的根证书颁发机构”中。但是,我还是收到了错误信息。我在下面给出了我的代码片段

        X509Certificate2 xc = new X509Certificate2(CertPath, GetCertificatePassword());

        HttpWebRequest wc = (HttpWebRequest)WebRequest.Create(QryUrl);
        wc.ClientCertificates.Add(xc);
        Stream str = wc.GetResponse().GetResponseStream();

如果有人能给我提供任何信息,那就太好了,再次感谢,

这只是一个猜测:检查运行IIS的用户帐户是否有权访问与证书关联的私钥

如果您使用MMC证书管理单元,选择证书,然后右键单击->所有任务->管理私钥,如果您没有看到列出的IIS用户帐户,您可以通过单击添加将其添加到其中,然后在弹出的对话框中(例如,如果您将IIS作为网络服务运行),键入“网络服务”(带空格)然后单击检查名称,当您返回管理私钥时,可以设置安全访问

我相信您只需要允许读取访问就可以使用TLS连接的私钥

您可以设置对私钥的访问权限,无论私钥是安装在本地计算机还是当前用户中,但除非它作为您的用户帐户运行,否则IIS将无权访问您的当前用户


此外,如果它是带有私钥的客户端证书,则几乎可以肯定它应该放在个人存储中,而不是放在受信任的根证书颁发机构中。因此,请尝试使用本地计算机、个人计算机,并授予对运行IIS(或应用程序)的帐户的私钥的访问权限。

您说得对,我刚刚将IIS应用程序池标识更改为具有本地管理员角色的系统帐户。然后我就可以访问证书存储。@Suvro:您可以将证书的信任权限(通过MMC)设置为IIS AppPool\DefaultAppPool,而不是更改池标识。而且它也应该起作用。。。