SSL TLS 1.2 通道创建 VB.net HTTPS WebRequest
SSL TLS 1.2 Channel creation VB.net HTTPS WebRequest
我有一个遗留 Visual Studio 2010 vb.net 应用程序,我需要更新 SSL TLS 通道以支持 TLS 1.2。我尝试了几个不同的选项(请参阅注释代码以了解尝试),但都导致我遇到相同的错误,"Could not create SSL/TLS secure channel." 我错过了什么?
Public Shared Function processCCRequest(ByVal strRequest As String) As String
'declare the web request object and set its path to the PayTrace API
Dim ThisRequest As WebRequest = WebRequest.Create("https://beta.paytrace.com/api/default.pay")
'configure web request object attributes
ThisRequest.ContentType = "application/x-www-form-urlencoded"
ThisRequest.Method = "POST"
'encode the request
Dim Encoder As New System.Text.ASCIIEncoding
Dim BytesToSend As Byte() = Encoder.GetBytes(strRequest)
'declare the text stream and send the request to PayTrace's API
Dim StreamToSend As Stream = ThisRequest.GetRequestStream
StreamToSend.Write(BytesToSend, 0, BytesToSend.Length)
StreamToSend.Close()
''ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
''allows for validation of SSL conversations
''ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf)
ServicePointManager.Expect100Continue = True
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
''| SecurityProtocolType.Tls11 | SecurityProtocolType.Tls
''var(response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse())
''var(body = New StreamReader(response.GetResponseStream()).ReadToEnd())
'Catch the response from the webrequest object
Dim TheirResponse As HttpWebResponse = ThisRequest.GetResponse
Dim sr As New StreamReader(TheirResponse.GetResponseStream)
Dim strResponse As String = sr.ReadToEnd
'Out put the string to a message box - application should parse the request instead
' MsgBox(strResponse)
sr.Close()
Return strResponse
End Function
提前感谢您的建议!
从 Microsoft 下载并安装 .net 4.6 Targeting Pack 后,我完全成功了。这增加了完整的 .net 升级,包括 TLS 1.2 支持,并添加了 .Net 4.6 作为发布选项。一旦我升级并发布,上面的代码就可以使用设置为 TLS 1.2 的安全协议。
如果您使用的是 .net 3.5,请使用此脚本
ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType)
我有一个遗留 Visual Studio 2010 vb.net 应用程序,我需要更新 SSL TLS 通道以支持 TLS 1.2。我尝试了几个不同的选项(请参阅注释代码以了解尝试),但都导致我遇到相同的错误,"Could not create SSL/TLS secure channel." 我错过了什么?
Public Shared Function processCCRequest(ByVal strRequest As String) As String
'declare the web request object and set its path to the PayTrace API
Dim ThisRequest As WebRequest = WebRequest.Create("https://beta.paytrace.com/api/default.pay")
'configure web request object attributes
ThisRequest.ContentType = "application/x-www-form-urlencoded"
ThisRequest.Method = "POST"
'encode the request
Dim Encoder As New System.Text.ASCIIEncoding
Dim BytesToSend As Byte() = Encoder.GetBytes(strRequest)
'declare the text stream and send the request to PayTrace's API
Dim StreamToSend As Stream = ThisRequest.GetRequestStream
StreamToSend.Write(BytesToSend, 0, BytesToSend.Length)
StreamToSend.Close()
''ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
''allows for validation of SSL conversations
''ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf)
ServicePointManager.Expect100Continue = True
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
''| SecurityProtocolType.Tls11 | SecurityProtocolType.Tls
''var(response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse())
''var(body = New StreamReader(response.GetResponseStream()).ReadToEnd())
'Catch the response from the webrequest object
Dim TheirResponse As HttpWebResponse = ThisRequest.GetResponse
Dim sr As New StreamReader(TheirResponse.GetResponseStream)
Dim strResponse As String = sr.ReadToEnd
'Out put the string to a message box - application should parse the request instead
' MsgBox(strResponse)
sr.Close()
Return strResponse
End Function
提前感谢您的建议!
从 Microsoft 下载并安装 .net 4.6 Targeting Pack 后,我完全成功了。这增加了完整的 .net 升级,包括 TLS 1.2 支持,并添加了 .Net 4.6 作为发布选项。一旦我升级并发布,上面的代码就可以使用设置为 TLS 1.2 的安全协议。
如果您使用的是 .net 3.5,请使用此脚本
ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType)