1

我在 IIS 网站上有一个需要客户端证书的 web 服务,我的证书是自签名的,我可以在安装所有颁发/需要的证书后从我的开发计算机访问该网站而没有任何警告,我的问题是我需要访问来自服务器内部的 web 服务,但它不工作,我可以通过加载证书 pfx 文件从我的开发机器上做到这一点,但在服务器上它会爆炸,我已经拥有应用程序池访问商店证书的权利,但仍然没有去吧,我很感激任何建议。谢谢

在开发机器上,此代码有效: svc.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(Server.MapPath("Certs/MyFile.pfx"), "mypfxpassword"));

但是在服务器上编码炸弹: System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(....

所以我在服务器上尝试了这段代码: X509Certificate2 cert = new X509Certificate2(Server.MapPath("Certs/MyFile.pfx"), "mypfxpassword", X509KeyStorageFlags.MachineKeySet); svc.ClientCertificates.Add(cert);

并且出现了一个新错误: “无法为 SSL/TLS 安全通道建立信任关系。”

我已经试过这个 winhttpcertcfg.exe -g -c LOCAL_MACHINE\My -s MyCertName -a "MYMACHINENAME\Name Of App Pool"

而这个 ICACLS /grant "IIS AppPool\DefaultAppPool":R

我用我的服务器参数替换了命令中的参数,它们成功执行,但仍然没有出现“无法为 SSL/TLS 安全通道建立信任关系。”。

任何帮助深表感谢。谢谢

4

1 回答 1

0

我是如何让它工作的。

错误:

无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?

无法为 SSL/TLS 安全通道建立信任关系"

1) IIS

  • 打开 IIS
  • 选择应用程序池
  • 选择您的游泳池
  • 点击“高级设置”
  • 将“加载用户配置文件”设置为“真”(我的设置为假)

2) 代码修复(必需的原因是客户端证书是自签名的,而 .NET 不信任该证书

  • ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

代码感谢这个网站,从Matt Probstfeld II的评论中复制了代码。

于 2013-07-09T19:59:15.183 回答