C#无法从服务器中访问需要客户端证书的Web服务
本文关键字:客户端 证书 服务 Web 访问 服务器 | 更新日期: 2023-09-27 18:21:46
我在IIS网站上有一个需要客户端证书的Web服务,我的证书是自签名的,在安装了所有颁发/需要的证书后,我可以从我的开发计算机访问该网站,而不会有任何警告,我的问题是我需要从服务器内访问Web服务,但它不工作,我可以在我的开发机器上通过加载证书pfx文件来做到这一点,但在服务器上它会爆炸,我已经拥有应用程序池访问存储中证书的权限,但仍然无法访问,我感谢任何建议。感谢
在开发机器上,此代码可以工作:svc。ClientCertificates.Add(新的System.Security.Cryptography.X509Certificate2(Server.MapPath("Certs/MyFile.pfx"),"mypfxpassword");
但它在服务器上用以下代码轰炸:System.Security.Cryptography.CryptographicException。在System.Security.CCryptography.X509Certificates.X509Utils._LoadCertFromFile(….
所以我在服务器上尝试了这个代码:X509Certificate2 cert=新的X509Certification2(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''应用程序池名称"
这个ICACLS/grant"IIS AppPool''DefaultAppPool":R
我用我的服务器参数替换了命令上的参数,它们成功地执行了,但仍然没有通过"无法为SSL/TLS安全通道建立信任关系"。
非常感谢您的帮助。感谢
我是如何让它工作的。
错误:
无法创建SSL/TLS安全通道-问题可能是代理服务器
无法建立SSL/TLS安全的信任关系通道";
1)IIS
- 打开IIS
- 选择应用程序池
- 选择您的游泳池
- 单击";高级设置"
- 设置";加载用户配置文件";至";真"(我的设置为False)
2)代码修复(必需原因是客户端证书是自签名的,并且.NET不信任该
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
代码感谢这个网站,从Matt Probsfeld II的评论中复制了代码。