Errore msxml3.dll error ‘80072f0d’ : The certificate authority is invalid or incorrect in ASP classico – Come Risolvere

Se vi siete imbattuti in questo post è probabile che vi siate imbattuti – nel corso delle attività di manutenzione di una delle vecchie pagine ASP di un qualche vostro cliente – nel classico problema che si verifica quando si prova ad effettuare una request a una URL in HTTPS:

msxml3.dll error ‘80072f0d’ : The certificate authority is invalid or incorrect.

O (alternativamente):

Error 80072F06 in msxml3.dll: The host name in the certificate is invalid or does not match.

Questo errore può verificarsi a seguito di qualsiasi chiamata HTTP realizzata utilizzando un oggetto  : VBScript, pagine ASP, web service SOAP o REST e via dicendo. A prescindere dalla modalità di utilizzo, questi messaggi indicano la presenza di problemi nel certificato SSL installato sul server. Ad esempio, problemi di naming tra hostname del sito e subject name del certificato, validità del certificato, certificate chain non valida – o non verificabile – e così via.

Il problema dovrebbe essere evidente anche se si prova ad aprire la URL con un browser: nella maggior parte dei casi il client utilizzato ci presenterà una pagina di avviso che ci informerà della problematica con il certificato in questione,  offrendoci la possibilità di Procedere Comunque all’apertura del sito – con la consapevolezza del caso – o interrompere la navigazione: sfortunatamente, questa scelta non può essere effettuata quando l’errore riguarda uno script o altro processo automatizzato, che si limiterà a fallire.

Per risolvere il problema è necessario configurare una opzione particolare nell’oggetto XMLHTTP utilizzato:     , da implementare nel seguente modo:

L’opzione in questione consentirà all’oggetto XMLHTTP di accedere alla pagina chiamata, ignorando qualsiasi errore di certificato. E’ importante comprendere che il valore utilizzato – 13056 – farà sì che tutti gli errori saranno ignorati. Nel caso in cui si volesse avere un controllo maggiore, e/o ignorare soltanto alcune tipologie di errore, sarà necessario utilizzare dei valori meno restrittivi, come ad esempio::

  • SXH_SERVER_CERT_IGNORE_UNKNOWN_CA = 256 : Unknown certificate authority
  • SXH_SERVER_CERT_IGNORE_WRONG_USAGE = 512 : Malformed certificate such as a certificate with no subject name.
  • SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID = 4096 : Mismatch between the visited hostname and the certificate name being used on the server.
  • SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID = 8192 : The date in the certificate is invalid or has expired.
  • SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056 : All certificate errors.

La funzione    può essere utilizzata anche per impostare altri aspetti della request HTTP, come ad esempio la tabella codici utilizzata, la gestione del carattere speciale % e così via. Per maggiori informazioni, consigliamo la lettura di questo articolo ufficiale sul sito MSDN.

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane.

View all posts by Ryan