问题
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