ASP.NET C# VB.NET HTTPS SSL POST 忽略证书真正解决方法

来源:互联网 发布:java三层架构 编辑:程序博客网 时间:2024/05/22 08:06

当你在开发的时候,遇上坑爹的服务商使用了HTTPS但是不提供CRS证书文件,这种坑对程序猿是永远的伤痛!

中文环境报错
由于远程方已关闭传输流,身份验证失败
英文环境报错
SSL Certificate Error - Authentication failed because the remote party has closed the transport stream

无效的解决方法:
加上 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
或者加上 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
或者加上 ServicePointManager.ServerCertificateValidationCallback = Function() True
或者上面的稀里糊涂都乱加上

总之,是没作用的,不管C#还是VB.NET 都不行
不是.NET版本的问题
而是https 端口的问题,
真正的解决方法:

先弄两个模块:

    Private Enum MySecurityProtocolType        Ssl3 = 48        Tls = 192        Tls11 = 768        Tls12 = 3072    End Enum    Public Shared Function CheckValidationResult(sender As Object, certificate As X509Certificate, chain As X509Chain, errors As SslPolicyErrors) As Boolean        Return True    End Function

在提交之前加上下面代码:

ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf CheckValidationResult)System.Net.ServicePointManager.SecurityProtocol = DirectCast(MySecurityProtocolType.Tls12 Or MySecurityProtocolType.Tls11 Or MySecurityProtocolType.Tls, SecurityProtocolType)

完美搞定这个坑爹的问题,这个坑了我几乎24个小时的问题!

阅读全文
0 0