问题:C# API 无法为 SSL/TLS 安全通道建立信任关系

问题描述

我刚刚在调用 API 时遇到以下错误。 “无法为 SSL/TLS 安全通道建立信任关系”

我使用 RemoteCertificateValidationCallback 类修复了它:

ServicePointManager.ServerCertificateValidationCallback += 
            new RemoteCertificateValidationCallback(Helpers.CertificateHelper.ValidateCertificates);

然后我就应用了这里找到的一段代码How to verify X509 cert without importing root cert?

现在它工作正常,但是..这是要走的路吗?可以吗,还是不应该用这个方法

解决方法

当您的服务器根据请求检查证书时,它会尝试验证整个证书链。 您使用的代码基本上告诉您的服务器跳过验证根 ca。您不应该这样做,因为正如 Crypt32 所说,这会让您更容易受到攻击。

如果您收到的错误提示您缺少根证书,您应该确保您的服务器信任这些证书

如果这是 Windows 服务器,您可以将它们安装在受信任的根证书颁发机构中 - 对此有一个说明here

注意您信任哪些证书 - 确保您的来源是可信的

如果这不起作用,您应该在此处发布您遇到的确切错误,我们可能能够更好地理解问题