Ich habe eine veraltete Visual Studio 2010 vb.net-Anwendung, die ich brauche, um das SSL-TLS-Channeling zu aktualisieren, um TLS 1.2 zu unterstützen. Ich habe ein paar verschiedene Optionen ausprobiert (siehe kommentierten Code für Versuche) und alle führen mich zu dem gleichen Fehler, "Konnte keinen sicheren SSL/TLS-Kanal erstellen." Was vermisse ich?SSL TLS 1.2 Kanalerstellung VB.net HTTPS WebRequest
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
Vielen Dank im Voraus für Ihre Vorschläge!
Ich denke, dass TLS 1.2 Unterstützung in .NET 4.5 hinzugefügt wurde, so dass Sie installiert und verwenden Sie dann die 'ServicePointManager.SecurityProtocol = DirectCast (3072, SecurityProtocolType)' Workaround für 4.0-Code. – Mark
Ja und in meiner Antwort ging ich basierend auf diesen Informationen ein paar Schritte weiter, um meine Aufgabe zu erfüllen. –