【问题标题】:Question: C# API Could not establish trust relationship for the SSL/TLS secure channel问题:C# API 无法为 SSL/TLS 安全通道建立信任关系
【发布时间】:2021-01-25 20:13:31
【问题描述】:

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

我用 RemoteCertificateValidationCallback 类修复了它:

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

我刚刚应用了在这里找到的一个 sn-p 代码:How to verify X509 cert without importing root cert?

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

【问题讨论】:

  • 这不是正确的方法。哪个是正确的取决于上下文。为什么会出现此错误?如果这是对等端的错误配置,那么您应该要求他们解决此问题。尝试在您身边修复它很可能会使您容易受到 MITM 攻击。
  • 我收到错误是因为我错过了根证书(我猜是在服务器上?)我刚刚下载了它们(来自 API 文档)并在回调中验证它们。在服务器上添加这些证书,要走的路吗?

标签: c# ssl x509certificate2


【解决方案1】:

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

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

如果这是 Windows 服务器,您可以在受信任的根证书颁发机构中安装它们 - 有一个关于它的解释 here

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

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

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多