【问题标题】:HttpWebRequest Client Certificate not working in IISHttpWebRequest 客户端证书在 IIS 中不起作用
【发布时间】:2011-07-01 12:36:24
【问题描述】:

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

-操作系统:Windows 2008R2 -工具:Visual Studio 2010 (.Net 4.x)

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

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

安装过程中的证书需要密码。我已将其安装在“我的用户帐户”和“计算机帐户”中。它也安装在 IE 中。在所有安装中,它都安装在“受信任的根证书颁发机构”中。但是,我仍然收到错误消息。我在下面给出了我的代码 sn-p,

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

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

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

【问题讨论】:

    标签: iis httpwebrequest certificate x509certificate2


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 你是对的,我只是将 IIS 应用程序池标识更改为具有本地管理员角色的系统帐户。然后我就可以访问证书存储了。
    • @Suvro:您可以将证书上的信任权限(通过 MMC)设置为 IIS AppPool\DefaultAppPool,而不是更改池标识。它应该也能正常工作......
    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 2010-10-09
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    相关资源
    最近更新 更多