C# 如何解决 HtppWebResponse return Could not establish trust relationship for the [SSL/TLS] secure channel?
C# How to solve HtppWebResponse return Could not establish trust relationship for the [SSL/TLS] secure channel?
我正在使用 .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 扫描中被检测到,并且存在中等缺陷安全问题。
veracode 文档说:
我必须监视证书是否过期。因为它可以例外。
问题是。
有什么解决方案可以让我从服务器调用 https 网络服务吗?
不使用该代码?
还是我必须安装证书并且我必须在 iis 中配置一些东西才能从服务器端/后端调用 https 网络服务?
这字面意思是您的代码所在的地方运行不信任远程站点上安装的证书。
虽然您发布的代码绕过了所有身份验证检查,但这并不是一个好的做法,因为 SSL 可以让您稍微确信您所访问的网站是合法的,并且没有人进行非法侵入-中间攻击,例如拦截您的数据。
诊断的第一步是在浏览器中访问该页面并查看证书。
确保您的浏览器认为它是安全的——如果不安全,它会告诉您为什么不安全。常见原因:
- 已过期(检查有效期从..到)
- 不匹配的域名(检查颁发给和主题备用名称)
- 由 不受信任的机构颁发
对于(1)和(2)的情况,它确实是远程服务需要处理的服务器问题。
使用 (2) 有时人们只为 "www.example.com"
而不是 "example.com"
(或 "*.example.com"
,不包括 "example.com"
)颁发证书,所以很容易解决方法是访问具有匹配域名的站点。
在 (3) 的情况下,一个常见的原因是自签名证书。这就像给自己作担保,显然不太值得信赖。也有可能您根本不信任签署证书的有效 CA(证书颁发机构)。有几种方法可以解决这个问题:
- 让 Web 服务从 trusted CA (LetsEncrypt 获取新证书现在是一个不错的选择,而且是自动且免费的)
- 更新您的信任根(例如,如果您的系统没有最新更新):Win 7/10, Windows Server
- Import the root CA certificate(请参阅证书路径 选项卡)将此证书签署到您的系统并将其标记为受信任。
我正在使用 .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 扫描中被检测到,并且存在中等缺陷安全问题。
veracode 文档说: 我必须监视证书是否过期。因为它可以例外。
问题是。 有什么解决方案可以让我从服务器调用 https 网络服务吗? 不使用该代码? 还是我必须安装证书并且我必须在 iis 中配置一些东西才能从服务器端/后端调用 https 网络服务?
这字面意思是您的代码所在的地方运行不信任远程站点上安装的证书。
虽然您发布的代码绕过了所有身份验证检查,但这并不是一个好的做法,因为 SSL 可以让您稍微确信您所访问的网站是合法的,并且没有人进行非法侵入-中间攻击,例如拦截您的数据。
诊断的第一步是在浏览器中访问该页面并查看证书。
确保您的浏览器认为它是安全的——如果不安全,它会告诉您为什么不安全。常见原因:
- 已过期(检查有效期从..到)
- 不匹配的域名(检查颁发给和主题备用名称)
- 由 不受信任的机构颁发
对于(1)和(2)的情况,它确实是远程服务需要处理的服务器问题。
使用 (2) 有时人们只为 "www.example.com"
而不是 "example.com"
(或 "*.example.com"
,不包括 "example.com"
)颁发证书,所以很容易解决方法是访问具有匹配域名的站点。
在 (3) 的情况下,一个常见的原因是自签名证书。这就像给自己作担保,显然不太值得信赖。也有可能您根本不信任签署证书的有效 CA(证书颁发机构)。有几种方法可以解决这个问题:
- 让 Web 服务从 trusted CA (LetsEncrypt 获取新证书现在是一个不错的选择,而且是自动且免费的)
- 更新您的信任根(例如,如果您的系统没有最新更新):Win 7/10, Windows Server
- Import the root CA certificate(请参阅证书路径 选项卡)将此证书签署到您的系统并将其标记为受信任。