Blog
home > blog > ASP: chiamare un web service con un certificato scaduto

Tag: asp, web service, Programmazione

ASP: chiamare un web service con un certificato scaduto

Potrebbe causare questo errore: msxml3.dll error '80072f0c' A certificate is required to complete client authentication. Vediamo come evitarlo.
di Maurizio Ceravolo
Questo è un post decisamente tecnico, che solleverà l'interesse di pochi su un caso molto particolare, però dato che è un problemino che ci è capitato ieri mentre lavoravamo, vogliamo lasciare la soluzione a chi dovesse incorrere nello stesso inconveniente.

Generalmente lavoriamo su più progetti in parallelo e spesso anche su tecnologie diverse. Rimanendo in ambito web, a seconda delle esigenze del cliente, come tecnologia server-side possiamo usare asp.net, php, asp o anche jsp. In questo caso si trattava di asp classico.

Dovevamo interfacciarci con un web service non prodotto da noi, realizzato in .net, che veniva erogato tramite https. Il problema era che il certificato era scaduto, e noi non potevamo in alcun modo intervenire sul server dove era installato questo servizio.

Richiamando il web service da asp ci veniva sollevato il seguente errore:

msxml3.dll error '80072f0c' A certificate is required to complete client authentication

Questo perchè ovviamente il certificato era scaduto. Cosa fare in questo caso? Non potendo intervenire sul server del web service, l'unica cosa che potevamo fare era modificare il nostro codice per ignorare il certificato scaduto.

Dato che da ASP per interagire con un web service dobbiamo utilizzare l'oggetto MSXML2.ServerXMLHTTP, quello che va fatto è modificarlo tramite uno dei suoi metodi, il metodo setOption. I valori delle costanti da usare sono spiegati nel metodo getOption.

Quindi il codice per richiamare il web service va scritto così:

set xmldoc = Server.CreateObject("MSXML2.ServerXMLHTTP")
webservicelurl="https://server/webservice"
xmldoc.setOption 2,13056
xmldoc.open "GET", webservicelurl, false
xmldoc.send
output = xmldoc.responseText
Set xmldoc = nothing

Il significato dei due numeri su setOption è il seguente:
  • 2: SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS. Ovvero l'opzione per settare il comportamento sugli errori di certificato.
  • 13056: SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS. Ovvero settare sull'opzione 2 il valore che significa di ignorare ogni errore server.
La soluzione al problema, quindi, è molto semplice. Basta sapere dove andare a cercare nella documentazione. :-)

Happy coding.
Post correlati
2011
15
Febbraio
.net: instanziare un web service con certificato scaduto
Maurizio Ceravolo
Richiamare un web service sotto https con certificato scaduto porta l'applicazione a sollevare un eccezione. Vediamo come ignorarla e fruire lo stesso del servizio.
2010
9
Dicembre
TSQL: concatenare più record senza usare un cursore
Maurizio Ceravolo
Concatenare più record di una tabella in un'unica stringa necessita un cursore, che però è poco performante. Vediamo un metodo tramite FOR XML PATH per concatenare con una query secca.
2010
24
Novembre
UrlRewrite e Postback: il problema sull'action del form in asp.net
Maurizio Ceravolo
Sperimentando l'UrlRewrite in un sito .net ci si scontra con un errore sui postback. Vediamo come risolverlo
2010
13
Ottobre
Inviare fax da una applicazione usando .net
Maurizio Ceravolo
Descrizione di due opzioni per mandare fax attraverso una proprio applicazione: collegandosi ad un servizio esterno o usando WinFax in interoperabilità
2011
5
Luglio
Formattare e indentare le query SQL
Maurizio Ceravolo
Programmando con editor avanzati si può sfruttare l'indentazione automatica del codice. Cosa che manca nelle interfacce per i database. Vediamo come aggirare il problema.


Archivio Mensile Blog
Tag Cloud
Apple bug Eye Tracking Facebook finanza Firefox geek Geolocalizzazione Google Google+ Groupon humor innovazione marketing Microsoft Programmazione social network video Windows Phone 7 Xbox
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post