我在IIS网站上有一个需要客户端证书的网络服务,我的证书是自签名的,我可以在安装所有已颁发/要求的证书后从我的开发计算机访问该网站而没有任何警告,我的问题是我需要要从服务器内部访问web服务并且它无法正常工作,我可以通过加载证书pfx文件从我的开发机器中执行此操作,但是在服务器上它会炸弹,我已经拥有应用程序池访问商店证书的权限但仍然没有去,我感谢任何建议。 感谢
在开发机器上,此代码有效: svc.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(Server.MapPath(“Certs / MyFile.pfx”),“mypfxpassword”));
但在服务器上用以下代码编码炸弹: System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(....
中的System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)所以我在服务器上尝试了这个代码: 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 \ App Pool的名称”
和 ICACLS / grant“IIS AppPool \ DefaultAppPool”:R
我将命令中的参数替换为我的服务器参数,并且它们已成功执行,但仍未执行“无法为SSL / TLS安全通道建立信任关系。”。
非常感谢任何帮助。 感谢
答案 0 :(得分:0)
我是如何运作的。
<强>错误:强>
无法创建SSL / TLS安全通道 - 问题可能是代理 服务器
无法为SSL / TLS安全建立信任关系 信道“
1)IIS
2)代码修复(必需原因客户端证书是自签名的,.NET不信任
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
代码感谢this website,复制了来自 Matt Probstfeld II 评论的代码。