0

我正在使用 .Net Webapi 2,在使用“Https”调用另一个 Web 服务时出现以下错误。

Could not establish trust relationship for the SSL/TLS secure channel

我也找到了临时解决方案。在执行 httpwebresponse 之前添加这行代码

ServicePointManager
    .ServerCertificateValidationCallback = 
    RemoveCertificateValidationCallback (delegate { return true; }); 

首先,我不知道该代码是什么意思,但至少该代码有效,并且我成功命中了 Https Web 服务。但是该代码在验证码扫描中被检测到,并且存在中等缺陷安全问题。

veracode 文档说:我必须监控证书是否过期。因为它可以例外。

问题是。我有什么解决方案可以从服务器调用 https 网络服务吗?不使用该代码?还是我必须安装证书,我是否必须在 iis 中配置一些东西才能从服务器端/后端调用 https Web 服务?

4

1 回答 1

2

这实际上意味着您的代码运行的地方不信任安装在远程站点上的证书。

尽管您发布的代码绕过了所有身份验证检查,但这并不是一个真正的好做法,因为 SSL 可以让您确信您正在与之交谈的网站是合法的,并且没有人在进行中间人攻击例如拦截您的数据。


第一个诊断步骤是在浏览器中访问该页面并查看证书。

在此处输入图像描述

确保您的浏览器认为它是安全的——如果它不安全,它会告诉你为什么不安全。常见原因:

  1. 已过期(检查有效期从 .. 到
  2. 域名不匹配(检查Issued ToSubject Alternative Name
  3. 不受信任的机构颁发

在 (1) 和 (2) 的情况下,这确实是远程服务需要处理的服务器问题。

"www.example.com"使用 (2) 有时人们只为而不是"example.com"(或"*.example.com",不包括)颁发证书,"example.com"因此一个简单的解决方法是访问具有匹配域名的站点。

在 (3) 的情况下,一个常见的原因是自签名证书。这就像在为自己做担保,显然不是很值得信赖。您也可能根本不信任签署证书的有效 CA(证书颁发机构)。有几种方法可以解决这个问题:

于 2018-10-23T05:04:48.313 回答