带有自签名证书的VBA ServerXMLHTTP https请求

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

  • 谢谢!带有VBA的XMLHTTP记录得非常糟糕,有时您只需要希望某人有时已经遇到过相同的问题.很高兴我能帮助你!:) (3认同)
  • SetOption非常有用,正是我需要的.在我的系统上,我必须在SetOption生效之前使用"MSXML2.ServerXMLHTTP.3.0". (2认同)
  • 如果您无法访问常量,请使用:objHTTP.setOption(2)= 13056 (2认同)

Ian*_*ynn 6

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