3

我正在尝试创建一个托管在 IIS 中的 WCF 应用程序。此 WCF 应用程序将调用第三方网站下载 CSV 文件。第三方网站提供了一个证书来验证 WCF 调用。我的开发环境是

-操作系统:Windows 2008R2 -工具:Visual Studio 2010 (.Net 4.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();

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

4

1 回答 1

1

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

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

我相信您只需要允许读取访问权限即可将私钥用于 TLS 连接。

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

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

于 2011-02-22T18:17:38.263 回答