VBA ServerXMLHTTP demande https avec un certificat auto-signé
j'utilise un objet ServerXMLHTTP pour faire des requêtes http sur un script VBA excel 2007.
mais je dois me connecter à un serveur https qui utilise un certificat SSL auto-signé, donc par défaut je reçois le message "l'autorité de certificat est invalide ou incorrecte". Y a-t-il un moyen de configurer L'objet ServerXMLHTTP pour qu'il n'ait pas besoin d'un certificat de L'AC?
un exemple de code suivante:
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 ("")
2 réponses
j'ai eu ce problème pendant un certain temps, et j'ai seulement réussi à la surmonter grâce à ceci:
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 ("")
j'ai trouvé ce ici Méthode setOption et méthode getOption
ici dans ce code je viens d'utiliser SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
mais vous pouvez essayer avec d'autres plus spécifiques:
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 ("")
Obtenu la solution ci-dessus pour travailler avec un changement mineur. Au lieu de:
objHTTP.SetOption(2, objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
j'ai utilisé:
objHTTP.SetOption(2) = (objHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
Sinon, j'obtiens une erreur:
Microsoft VBScript erreur de compilation '800a0414' ne peut pas utiliser les parenthèses lors de l'appel D'un Sub objHTTP.SetOption(2, objHTTP.GetOption(2)) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS)
référencés de: SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS