当前位置: 首页 > news >正文

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

 

目录

问题现象 

范例运行环境

WebService 类

类介绍

增加参数

实现

小结


     

问题现象 

最近在访问开发的微信支付功能时遇到了无法访问令牌的错误,这个错误是公司内部应用程序接口返回的访问错误。经过排查是访问 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方法增加了参数, 使用说明见如下表格:

序号参数名类型说明
1secValidbool

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

实现

关键实现代码如下:

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证书时,可以自定义验证逻辑。

该方法实现代码如下:

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

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

http://www.lryc.cn/news/444247.html

相关文章:

  • 【超详细】基于YOLOv8训练无人机视角Visdrone2019数据集
  • VUE项目在Linux子系统部署
  • 开源 | 如何在产品上扩展大储存?合宙LuatOS外挂SPI Flash库轻松搞定
  • 20 基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)
  • spring自定义属性编辑器
  • 在VMware16中安装Windows 10:完整教程
  • MATLAB系列09:图形句柄
  • 把设计模式用起来!(4) 用不好模式?之原理不明
  • 安卓13去掉下拉菜单的Dump SysUI 堆的选项 android13删除Dump SysUI 堆
  • vue3常用的组件间通信
  • Windows 查找特定进程的ID并杀死
  • Snapchat API 访问:Objective-C 实现示例
  • ps证件照蓝底换白底
  • 阿里云kafka消息写入topic失败
  • 图像放大效果示例【JavaScript】
  • 【C#生态园】云端之C#:全面解析6种云服务提供商的SDK
  • 远程升级又双叒叕失败?背后原因竟然是。。。
  • 【测试】——Selenium API (万字详解)
  • Redis:原理+项目实战——Redis实战3(Redis缓存最佳实践(问题解析+高级实现))
  • 刚刚,Stable Diffusion 2024升级,最强Ai绘画整合包、部署教程(解压即用)
  • 【AIGC】ChatGPT提示词助力高效文献处理、公文撰写、会议纪要与视频总结
  • centos7更换国内下载源
  • 【Linux】常用指令【更详细,带实操】
  • 力扣3290.最高乘法得分
  • Python | Leetcode Python题解之第413题等差数列划分
  • 深入理解 ClickHouse 的性能调优与最佳实践
  • Elasticsearch——介绍、安装与初步使用
  • FreeRTOS保姆级教程(以STM32为例)—任务创建和任务控制API说明
  • Go语言现代web开发14 协程和管道
  • Llama3.1的部署与使用