none
WinHttp TLS1.2 possible? RRS feed

  • Question

  • Hi


    I'm using Excel VBA to push data through a web service API.

    The service provider is changing to TLS shortly.

    I notice that WinHttp (in VBA) only handles TLS1.0 which is insecure.  I did try an undocumented setting (SecureProtocols = 2056) to try and get TLS1.2 but this doesn't work.

    url2="https://www.howsmyssl.com/a/check"
    
    Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")
    WHTTP.Open "POST", url2, False
    WHTTP.setRequestHeader "Content-Type", "application/xml;charset=UTF-8"
    'WHTTP.Option WinHttpRequestOption_SecureProtocols = 2056
    WHTTP.send
    
    mess = WHTTP.responseText

    Are there any workarounds to this problem or are Microsoft ever going to update their client tools?

    Lee


    Lee Hawthorn ACMA, CGMA View my Performance Management blog at leehbi.com

    Friday, March 27, 2015 10:35 AM

All replies

  • Did you ever get a solution to this question? I've searched all over looking for a way to get WinHTTP.WinHTTPreqeust.5.1 to use TLS 1.2 with no success. 

    Thanks,

    Rory

    Thursday, April 23, 2015 10:38 PM
  • Hi Rory,

    I never found a solution to this, in the end I used an R script for the plumbing.

    Lee


    Lee Hawthorn ACMA, CGMA View my Performance Management blog at leehbi.com

    Monday, April 27, 2015 8:11 AM
  • I've rewritten to this JScript:

    try
    {
    	var WinHttpRequestOption_SecureProtocols = 9;
    	var hreq = new ActiveXObject("WinHTTP.WinHTTPrequest.5.1");
    	hreq.Open("GET", "https://www.howsmyssl.com/a/check", false);
    	hreq.setRequestHeader("Content-Type", "application/xml;charset=UTF-8");
    	hreq.Option(WinHttpRequestOption_SecureProtocols) = 512; //2048 for TLS 1.2
    	hreq.Send();
    	WScript.Echo(hreq.responseText);
    	WScript.Echo("Protocol: " + hreq.Option(WinHttpRequestOption_SecureProtocols)); //doesn't work?!?
    }
    catch(e)
    {
    	WScript.Echo("Error processing data.\nError: " + e.number + "\nInfo: "+ e.description);
    }

    And it seems to be working, except reading of the protocol set.

    Tested on Win 8.1



    Tuesday, July 14, 2015 6:22 PM
  • 2048
    Thursday, December 21, 2017 11:51 PM