前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 关于“您与该网站的连接不是私密连接...”的问题

C# 关于“您与该网站的连接不是私密连接...”的问题

作者头像
初九之潜龙勿用
发布2024-09-25 09:39:35
1090
发布2024-09-25 09:39:35
举报
文章被收录于专栏:技术文章

问题现象

最近在访问开发的微信支付功能时遇到了无法访问令牌的错误,这个错误是公司内部应用程序接口返回的访问错误。经过排查是访问 HTTPS 站点遇到的错误,提示证书风险,在浏览器中显示的调用 URL,显示结果如下图:

如图如果点击 “忽略警告,继续访问” 则可以跳过安全检测,但在 c# 程序隐式的调用 api url 来获取返回结果,就会遇到证书风险错误,而无法继续访问。本文将介绍关于此问题的一些解决方法。

范例运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.0 或以上

开发工具:VS2019 C#

WebService 类

类介绍

WebService 类提供了访问 Web API Url 的能力,方法获取 API 返回的处理结果字串。关于WebService 类请参阅我的文章《C# 实现访问 Web API Url 提交数据并获取处理结果》

增加参数

对 WebService 类的GetResponseResult方法增加了参数, 使用说明见如下表格:

序号

参数名

类型

说明

1

secValid

bool

是否进行安全协议认证,默认值为 true

实现

关键实现代码如下:

代码语言:javascript
复制
public string GetResponseResult(string url, System.Text.Encoding encoding, string method, string postData,string[] headers,string ContentType= "application/x-www-form-urlencoded",bool secValid=true)
{
   method = method.ToUpper();
   if (secValid == false)
   {
                ServicePointManager.ServerCertificateValidationCallback = validSecurity;
   }
  System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;

当 secValid 为 false 的时候,增加了一个 validSecurity 方法。 该方法应用于 ServicePointManager.ServerCertificateValidationCallback,该属性是一个委托属性,它允许你指定一个回调方法,当需要验证服务器SSL证书时,可以自定义验证逻辑。

该方法实现代码如下:

代码语言:javascript
复制
private static bool validSecurity(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}

小结

该方法只是为紧急解决问题的一种被动方式,事因情况紧急,访问的地址又是可信任的地址,因此是一种临时的解决方案,仅供应用参考,当安全证书恢复更新后,我们还是需要采取要求安全协议验证的方式来访问。

关于 System.Net.ServicePointManager.SecurityProtocol 的更多介绍请访问如下链接:

https://learn.microsoft.com/zh-cn/dotnet/api/system.net.securityprotocoltype?view=net-5.0

其它一些相关阅读可访问如下链接:

https://support.microsoft.com/zh-cn/topic/%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%87%E7%BA%A7%E5%88%B0-net-framework-4-6-%E5%90%8E%E4%BD%BF%E7%94%A8-servicepointmanager-%E6%88%96-sslstream-api-1e3a9788-ab0d-7794-204b-6c4678bc5ed5

本文代码仅供您参考使用,感谢您的阅读,希望本文能够对您有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题现象
  • 范例运行环境
  • WebService 类
    • 类介绍
      • 增加参数
        • 实现
        • 小结
        相关产品与服务
        SSL 证书
        腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档