Jav*_* C. 19 https vba ssl-certificate
我正在使用ServerXMLHTTP对象在excel 2007 vba脚本上发出一些http请求.
但我需要连接到使用自签名SSL证书的https服务器,因此默认情况下我收到消息"证书颁发机构无效或不正确".有没有办法配置ServerXMLHTTP对象,以便它不需要CA证书?
一些示例代码如下:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
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 ("")
Run Code Online (Sandbox Code Playgroud)
Rom*_*ain 29
我曾经有过这个问题已经有一段时间了,而且由于这个原因我只能设法克服它:
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 ("")
Run Code Online (Sandbox Code Playgroud)
我在这里找到了setOption方法和getOption方法
我刚刚使用了这段代码,SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
但您可以尝试更具体的其他代码:
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
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 ("")
Run Code Online (Sandbox Code Playgroud)
得到上述解决方案以进行微小的更改.代替:
objHTTP.SetOption(2, objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
Run Code Online (Sandbox Code Playgroud)
我用了:
objHTTP.SetOption(2) = (objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
Run Code Online (Sandbox Code Playgroud)
否则我得到一个错误:
Microsoft VBScript编译错误'800a0414'调用Sub objHTTP.SetOption时无法使用括号(2,objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
引自: SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS