我正在尝试创建一个在IIS中托管的WCF应用程序。此WCF应用程序将调用第三方网站下载CSV文件。第三方网站提供了证书以验证WCF呼叫。我的开发环境是,
-OS:Windows 2008R2 -Tools:Visual Studio 2010(.Net 4.x)
在开发过程中我使用HttpWebRequest进行调用没有问题,但是在IIS中部署相同的东西之后,即使我使用IIS作为开发服务器运行Visual Studio 2010,它也会出现以下错误,< / p>
“\ r \ n证书信息与登录不匹配,连接被拒绝。”
安装期间的证书需要密码。我已将其安装在“我的用户帐户”和“计算机帐户”中。它也安装在IE中。在所有安装中,它都安装在“受信任的根证书颁发机构”中。但是,我仍然收到错误消息。我在下面给出了我的代码片段,
X509Certificate2 xc = new X509Certificate2(CertPath, GetCertificatePassword());
HttpWebRequest wc = (HttpWebRequest)WebRequest.Create(QryUrl);
wc.ClientCertificates.Add(xc);
Stream str = wc.GetResponse().GetResponseStream();
如果有人可以向我提供任何信息,那就太好了,再次感谢,
答案 0 :(得分:1)
这只是一个猜测:检查运行IIS的用户帐户是否可以访问与证书关联的私钥。
如果您使用MMC证书管理单元,请选择证书,然后右键单击 - &gt;所有任务 - &gt;管理私钥,如果您没有看到列出的IIS用户帐户,可以从那里单击添加,然后在出现的对话框中(例如,您将IIS作为网络服务运行),键入“网络” service(带空格)并单击Check Names,然后当您返回Manage Private Keys时,您可以设置安全访问权限。
我相信您只需要允许读访问权限就可以使用私钥进行TLS连接。
您可以设置对私钥的访问权限,无论是安装在本地计算机还是当前用户,但IIS除非作为您的用户帐户运行,否则无权访问当前用户。
此外,如果它是带有私钥的客户端证书,它几乎肯定应该进入个人存储,而不是进入受信任的根证书颁发机构。因此,尝试本地计算机,个人,并访问IIS(或应用程序)运行的帐户的私钥。