【发布时间】:2013-07-09 18:10:55
【问题描述】:
我在 IIS 网站上有一个需要客户端证书的 web 服务,我的证书是自签名的,我可以在安装所有颁发/需要的证书后从我的开发计算机访问该网站而没有任何警告,我的问题是我需要要从服务器内访问 Web 服务但它不工作,我可以通过加载证书 pfx 文件从我的开发机器上做到这一点,但在服务器上它会爆炸,我已经拥有应用程序池访问商店证书的权限但仍然不行,我很感激任何建议。 谢谢
在开发机器上,此代码有效: svc.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(Server.MapPath("Certs/MyFile.pfx"), "mypfxpassword"));
但是在服务器上的代码炸弹是: System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) 在 System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(....
所以我在服务器上尝试了这段代码: X509Certificate2 证书 = 新 X509Certificate2(Server.MapPath("Certs/MyFile.pfx"), "mypfx密码", 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 安全通道建立信任关系。”。
非常感谢任何帮助。 谢谢
【问题讨论】:
标签: c# asp.net web-services iis client-certificates