Immaginate di avere un’applicazione web i cui utenti vengono autenticati tramite un certificato su smartcard e tutto funziona correttamente con IIS 6; avete deciso di migrare il server a Windows 2008 (che è in ogni caso una buona decisione Winking smile) ma improvvisamente i vostri utenti si lamentano di un’improvvisa lentezza nell’uso dell’applicazione, le pagine vengono caricate più lentamente rispetto a quanto succedeva con IIS 6 e non si riscontrano problemi nel funzionamento della rete o di un eventuale database che state utilizzando. Che succede?

Come potete immaginare questo è quanto successo ad un cliente con il quale ho lavorato recentemente: una veloce analisi sul client ha dimostrato che il sistema accedeva alla smartcard al caricamento di ogni frame o ogni volta che era necessario scaricare un nuovo oggetto dal server web (immagini, file di script, CSS ecc…) ed ovviamente questo può portare ad una considerevole perdita di tempo e di performance per l’applicazione.

Per farla breve, questo comportamento è controllato dalla client certificate negotiation, in particolare da SSLAlwaysNegoClientCert che in IIS 7 è stato spostato nel http.sys (http://learn.iis.net/page.aspx/110/changes-between-iis-60-and-iis-7-security/): è possibile configurare l’elemento <access> come descritto nel link precedente o utilizzando netsh con un comando simile a questo:

netsh http add sslcert ipport=0.0.0.0:$port certstorename=MY certhash=$Certhash appid=$Appnr sslctlidentifier=$CTLlijst sslctlstorename=CA clientcertnegotiation=enable

 

Carlo Cardella
Senior Support Engineer
EMEA IIS and Web Developer Support