How to use TLS 1.2 in Visual Basic 6 (vb6) - REST

点点圈 提交于 2019-12-11 04:24:35

问题


APIGee is migrating the request to TLS 1.2

OS: Windows Server 2003 !!!

I have an old application developed in vb6, but it stopped working because of this new migration

Here is my code

Public Function GetCustomerName(ByVal pCPFCliente As String) As String
    Dim xmlhttp As MSXML2.ServerXMLHTTP
    Set xmlhttp = New MSXML2.ServerXMLHTTP


    xmlhttp.Open "GET", const_URL & "/customer=" & pCPFCliente & "&identification.type=CPF", False
    xmlhttp.setRequestHeader "Content-Type", "application/json"
    xmlhttp.setRequestHeader "Authorization", const_TOKEN
    xmlhttp.send

    Dim objJson As Object
    Set objJson = JSON.parse(xmlhttp.responseText)
    Dim lacoRecord As Integer
    Dim customerName As String
    customerName = ""

    If xmlhttp.Status = 200 Then
        For lacoRecord = 1 To objJson.Item("records").Count
            customerName = objJson.Item("records")(lacoRecord).Item("name")
        Next
    ElseIf xmlhttp.Status = 404 Then
        If objJson.Item("errorCode") = 20023 Then
            Call WriteLogManual("CONSULTA CPF", "Cliente não encontrado! " & pCPFCliente, pPedido, 0, 0, 0, 0, 0)
        Else
            Call WriteLogManual("CONSULTA CPF", "Erro ao consultar CPF " & pCPFCliente & " - " & xmlhttp.responseText, pPedido, 0, 0, 0, 0, 0)
        End If
    ElseIf xmlhttp.Status = 503 Then
        MsgBox "Ocorreu um erro 503 ao buscar o CPF do Cliente na API. " & Chr(13) & xmlhttp.responseText
        Call WriteLogManual("CONSULTA CPF", "Erro ao consultar saldo na ApiGee - " & xmlhttp.responseText, pPedido, 0, 0, 0, 0, 0)
    Else
        MsgBox "Ocorreu um erro ao buscar o saldo do Cliente na API. " & Chr(13) & xmlhttp.responseText
        Call WriteLogManual("CONSULTA CPF", "Erro ao consultar saldo na ApiGee - " & xmlhttp.responseText, pPedido, 0, 0, 0, 0, 0)
    End If

    GetCustomerName = customerName
End Function

回答1:


In order to use updated TLS protocols, the underlying WinHTTP services on Windows need to be updated. This really isn't specific to VB6, it's for all applications that use the WinHTTP libraries on Windows.

Microsoft has instructions for applying the update to Windows 7, Windows Server 2008 R2, and Windows Server 2012 in KB 3140245. One also has to update the DefaultSecureProtocols values in the Registry to enable TLS 1.2 (and other desired versions) by default.

If you're using an older version of Windows, the WinHTTP library doesn't support TLS newer than 1.0 (and as you're not getting security updates for the operating system anymore, that's probably the least of your worries). You'd need to use some other HTTPS library that doesn't use the underlying OS Schannel library for handling its encryption, though I don't know of anything easily integrated into VB6 offhand. Upgrading the server to a supported version of Windows may be the easiest approach.



来源:https://stackoverflow.com/questions/51306171/how-to-use-tls-1-2-in-visual-basic-6-vb6-rest

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!