VBA ServerXMLHTTP https request with self signed certificate
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.SetOption(2, objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
objHTTP.Open "POST", "https://invernalia.homelinux.net", False, "user", "password"
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
Got the above solution to work with a minor change. Instead of:
objHTTP.SetOption(2, objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
I used:
objHTTP.SetOption(2) = (objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
Otherwise I get an error of:
Microsoft VBScript compilation error '800a0414' Cannot use parentheses when calling a Sub objHTTP.SetOption(2, objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
referenced from: SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS
I used to have this problem for a while, and I only managed to get past it thanks to this:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.SetOption 2, objHTTP.GetOption(2)
objHTTP.Open "POST", "https://invernalia.homelinux.net", False, "user", "password"
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
I have found this here setOption Method and getOption Method
Here in this code I have just used SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
but you can try with others more specific:
SXH_SERVER_CERT_IGNORE_WRONG_USAGE
SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID
SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID
SXH_SERVER_CERT_IGNORE_UNKNOWN_CA