tls para instalar gratuitos generar crear como certificados certificado autofirmado activar vba https ssl-certificate

vba - para - generar certificado autofirmado linux



VBA ServerXMLHTTP solicitud https con certificado autofirmado (2)

Estoy usando un objeto ServerXMLHTTP para realizar algunas solicitudes http en un script Excel 2007 vba.

Pero necesito conectarme a un servidor https que use un certificado SSL autofirmado, así que de forma predeterminada, aparece el mensaje "La autoridad de certificación no es válida o es incorrecta". ¿Hay alguna forma de configurar el objeto ServerXMLHTTP para que no requiera un certificado de CA?

A continuación un código de ejemplo:

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 ("")


Solía ​​tener este problema por un tiempo, y solo pude superarlo gracias a esto:

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 ("")

He encontrado esto aquí Método setOption y Método getOption

Aquí, en este código, acabo de usar SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS pero puedes probar con otros más específicos:

  • 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 ("")

Consiguió la solución anterior para trabajar con un cambio menor. En lugar de:

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

Solía:

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

De lo contrario me sale un error de:

Error de compilación de Microsoft VBScript ''800a0414'' No se pueden usar paréntesis al llamar a un objeto SubjjHTTP.SetOption (2, objHTTP.GetOption (2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)

referenciado desde: SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS