2017-03-15 18 views
0

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!

+1

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

+0

Ja und in meiner Antwort ging ich basierend auf diesen Informationen ein paar Schritte weiter, um meine Aufgabe zu erfüllen. –

Antwort

0

Ich war vollständig erfolgreich nach dem Download und der Installation des .net 4.6 Targeting Pack von Microsoft. Dadurch wurde das vollständige .net-Upgrade hinzugefügt, das die TLS 1.2-Unterstützung enthält und .Net 4.6 als Veröffentlichungsoption hinzugefügt. Nach dem Upgrade und der Veröffentlichung funktionierte der obige Code mit dem auf TLS 1.2 festgelegten Sicherheitsprotokoll.