我有一个 C# 应用程序,它调用使用证书进行身份验证的 Web 服务方法。 该代码有效,因为当它安装在服务器 A(没有代理)上时,它会进行身份验证。
当我在客户端站点的服务器 B 上安装代码时,它安装在代理后面。我确实尝试了几乎所有方法,但我不断收到此错误:
无法创建 SSL/TLS 安全通道
您认为这个问题可能是由代理服务器引起的吗?如果您有这方面的个人经验,请分享。
根据我的经验,几乎所有此类消息都是由于链中的某些机器(客户端、代理、服务器)由于某种原因不“喜欢”证书。
为了详细说明 twk 所说的内容,如果您使用自签名证书或您自己的 CA,则至少需要在服务器上(也可能在代理上)的受信任颁发机构存储中安装签名证书。
我遇到的常见问题:
我也遇到了同样的问题。就我而言,证书需要网络服务访问权限。您可以通过
查看如果您的证书不受信任(是自签名的),则 C# 客户端将拒绝连接。
我的回答和Snakebyte类似。就我而言,证书的私钥需要 IIS_IUSRS 用户访问权限。
将其添加到构造函数中:
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;