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