VBA ServerXMLHTTP запрос https с самозаверяющим сертификатом

Вопрос:Я использую объект ServerXMLHTTP для создания некоторых HTTP-запросов на excel 2007 vba script. Но мне нужно подключиться к серверу https, который использует самоподписанный SSL-сертификат, поэтому по умолчанию я получаю сообщение "Недопустимый или неправильный орган сертификации". Есть ли способ настроить объект ServerXMLHTTP, чтобы он не требовал сертификата CA? Ниже приведен пример кода: Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")

Вопрос:

Я использую объект ServerXMLHTTP для создания некоторых HTTP-запросов на excel 2007 vba script.

Но мне нужно подключиться к серверу https, который использует самоподписанный SSL-сертификат, поэтому по умолчанию я получаю сообщение “Недопустимый или неправильный орган сертификации”. Есть ли способ настроить объект 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 («») Лучший ответ:

У меня была эта проблема некоторое время, и мне удалось ее преодолеть только благодаря этому:

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 («»)

Я нашел это здесь setOption Method и getOption Method

Здесь в этом коде я только что использовал 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

Ответ №1Set 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 («»)

Получено вышеупомянутое решение для работы с небольшим изменением. Вместо:

objHTTP.SetOption(2, objHTTP.GetOption(2) — SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)

Я использовал:

objHTTP.SetOption(2) = (objHTTP.GetOption(2) — SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)

В противном случае я получаю сообщение об ошибке:

Ошибка компиляции 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

Оцените статью
Добавить комментарий