W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Come ottenere un certificato per IIS 5.0 per Windows 2000 e IIS 5.0 dalla CA INFN Paolo Pierini, INFN Sezione di Milano ([email protected]) Il meccanismo di generazione di richieste di certificati utilizzato dal wizard di Windows 2000 non genera richieste di certificato conformi alla policy della Certification Authority (CA) INFN. In particolare, non sembra possibile specificare il campo “Server Manager’s Email Address”, richiesto dalla policy. Poichè la CA INFN gestisce i certificati tramite OpenSSL e ne fornisce il file di configurazione, è possibile compilare gli eseguibili di OpenSSL sotto win2k per generare una richiesta di certificato conforme alla policy della CA. Sul sito http://www.openssl.org sono disponibili i sorgenti e i link a tutte le istruzioni necessarie per compilare openssl sotto windows (workspace per Microsoft Visual C++ compresi). Una volta compilati gli eseguibili la procedura di generazione della richiesta è sostanzialmente analoga a quella per macchine Unix. NOTA: Questo testo non si vuole sostituire in alcun modo alle informazioni contenute nella policy della CA INFN, accessibile da http://security.fi.infn.it/CA/CPS/, rappresenta solo un ricettario, basato sulla mia esperienza, sulle modalità di generazione e installazione dei certificati per W2000 e IIS 5.0. Le informazioni contenute qui sono la sintesi di una ricerca sui siti MSDN (http://msdn.microsoft.com) e OpenSSL (http://www.openssl.org). Installazione del certificato della CA INFN Innanzitutto occorre scaricare il certificato della CA dalle pagine della CA INFN (https://security.fi.infn.it/CA/mgt/getCA.php) e installarlo come descritto. Scaricando il file in formato DER in locale e facendo doppio clic da explorer viene visualizzata la seguente schermata, da cui è possibile scegliere Install Certificate... Paolo Pierini- INFN MI 1 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 A questo punto parte il wizard di installazione del certificato, da cui è possibile scegliere di installare il certificato tra le Trusted Root Certification Authorities dell’utente. L’ultima schermata visualizza la richiesta di conferma per l’installazione del certificato, riportandone i thumbprint per verificarne l’autenticità. Per la corretta installazione del certificato server occorre poi che il certificato della CA venga inserito tra le Trusted Root Certification Authorities della macchina. A queste fine è necessario utilizzare lo snap-in “Certificates” della Microsoft Managment Console (MMC). Quindi occorre dal menu Start di Windows, Start->Run->MMC Viene visualizzata la console di MMC, da cui bisogna scegliere il gestore dei certificati per il computer: Console->Add/Remove Snap-in...->Standalone->Add… ->Certificates->Add->Computer Account->Finish Ripetere la procedura per installare il gestore dei certificati personali: Paolo Pierini- INFN MI 2 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Console->Add/Remove Snap-in...->Standalone->Add… ->Certificates->Add->My User Account->Finish La seguente figura illustra la procedura: Ora è necessario copiare il certificato della CA dalla Trusted Root Certification Authorities dell’utente locale (dove viene installata di default facendo doppio clic dal file di certificato in forma DER scaricato dalla CA) all’account del computer. Questa operazione è possibile mediante una semplice operazione di drag e drop del certificato da una cartella all’altra in MMC. Alla fine di questa procedura il certificato della CA INFN è considerato tra le CA riconosciute dal sistema operativo, come si vede dalla figura seguente. Paolo Pierini- INFN MI 3 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Compilazione di OpenSSL Sul sito http://www.openssl.org sono disponibili tutte le informazioni necessarie per la compilazione di OpenSSL per macchine windows tramite i compilatori Microsoft o gcc-win32. E’ necessario, se non erro, scaricare anche un compilatore PERL per la configurazione. Io ho trovato un link alle configurazioni di developer studio già predisposte per la compilazione delle librerie e degli eseguibili. A chi fosse interessato posso fornire gli eseguibili e le librerie necessarie, contattatemi. Generazione della coppia chiave privata/richiesta di certificato Avendo scaricato il file di configurazione srv.cnf dalle pagine della CA INFN, riportato in seguito, è possibile generare una richiesta di certificato conforme alla policy INFN. # config file per richiesta certificati server (1/7/00) default_days = 365 # how long to certify for default_md = md5 # which md to use. preserve = no # keep passed DN ordering ####################################################### [ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name [ req_distinguished_name ] countryName = Country Name countryName_value = IT localityName = Locality Name localityName_min = 2 Paolo Pierini- INFN MI 4 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 organizationName = Organization Name organizationName_default = INFN organizationalUnitName = Server type (e.g. www server) organizationalUnitName_default = " " organizationalUnitName_min = 4 commonName = Server DNS Name commonName_default = " " commonName_min = 10 commonName_max = 64 emailAddress = Server Manager's Email Address emailAddress_default = " " emailAddress_min = 10 emailAddress_max = 60 Per generare la chiave privata è necessario inizializzare il randomizzatore (ad esempio con un file binario o di testo dal contenuto pressoché casuale), per creare il file di richiesta: openssl genrsa -out privkey.pem -passout pass:xxx -des3 -rand file 1024 openssl req -config srv.cnf -new -key privkey.pem -out richiesta.pem In questo caso xxx rappresenta una password con cui eseguire l’encoding della chiave nel file privkey.pem, file è il file da utilizzare per il randomizzatore e richiesta.pem è il file da inviare alla CA. La CA INFN a questo punto, e secondo le modalità descritte nella Policy e CPS, restituisce un file PEM che rappresenta la chiave pubblica associata alla chiave privata contenuta in privkey.pem. Creazione del certificato PKCS/12 per Windows 2000 Non è possibile importare il certificato PEM inviato dalla CA direttamente in Windows, in quanto è necessario associargli la chiave privata. E’ necessario quindi convertire il certificato (in formato PEM) e la chiave privata (in formato PEM) in un formato gestibile dal gestore dei certificati Microsoft, il formato PKCS/12. OpenSSL contiene un tool per la conversione con il quale è semplice eseguire la conversione: openssl pkcs12 -export -in received.pem -inkey privkey.pem -out mycert.pfx Dove received.pem indica il file contenente il certificato inviato dalla CA sulla base della richiesta. L’esecuzione di questo comando richiede: 1 la password con cui è stato protetto il file privkey.pem 2 di scegliere una password per il certificato PKCS12. A questo punto dallo snap-in dei certificati di MMC è possibile installare il certificato, importandolo nella cartella Personal del Computer Account (vedi sotto). Paolo Pierini- INFN MI 5 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Il sistema richiede di selezionare il file pfx (PKCS/12) da inserire. Al momento dell’importazione viene richiesta la password per accedere al certificato (che è stata specificata nell’ultimo comando OpenSSL). E’ anche possibile selezionare se si desidera rendere esportabile la chiave privata del certificato. A questo punto è possibile verificare la correttezza della procedura facendo doppio clic sul certificato ricevuto dallo snap-in dei certificati di MMC. Paolo Pierini- INFN MI 6 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Se la procedura è stata eseguita correttamente, Windows2000 riconosce che il sistema possiede la chiave privata associata al certificato e visualizza correttamente il percorso di certificazione, a partire dal certificato della CA INFN, come mostrato nelle due figure successive: Il certificato è quindi installato correttamente, ed ora è possibile copiare i file pem e pfx su cdrom e cancellarli dalla macchina. Paolo Pierini- INFN MI 7 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Utilizzo del certificato in IIS 5.0 Visto che il certificato è ora riconosciuto tra i certificati personali del sistema, è possibile usarlo nella configurazione SSL dei siti gestiti da Internet Information Server 5.0. Per usare il certificato in un sito di IIS occorre aprire lo snap-in Internet Services Manager di MMC: Start->Settings->Control Panel->Administrative Tools-> Internet Services Manager Da qui, dopo avere selezionato il sito da gestire, fare clic sul pulsante destro, scegliere Properties e selezionare il tab Directory Security dalla pagina di proprietà. Fare infine clic sul pulsante Server Certificate... e selezionare l’opzione Assign an existing certificate prima di premere il pulsante Next>. Se il certificato è stato installato correttamente il sistema presenta una finestra di dialogo contenente i certificati disponibili. Selezionare il certificato rilasciato dalla CA. Dopo avere associato il certificato al sito web, selezionare dalla stessa pagina di proprietà il pulsante Edit... per selezionare le impostazioni di sicurezza (vedi figura successiva), in particolare: Require secure channel (SSL) In questo modo il sito è accessibile solamente tramite connessioni https sicure. Require 128 bit encryption Se questo viene selezionato non sarà possibile connettersi con vecchi client che supportano encryption a 40 bit. Paolo Pierini- INFN MI 8 W2K/IIS5.0 e la CA INFN BOZZA 9 ottobre 2001 Infine, è necessario verificare che sulla pagina Web Site sia presente la porta SSL standard (443), o altra porta su cui si voglia ottenere la connessione sicura. Nel caso la porta non sia presente o si vogliano installare più porte SSL o TCP è possibile utilizzare il pulsante Advanced... per la configurazione. Una nota di precauzione nel caso sia necessario gestire più siti su una unica macchina con un unico indirizzo IP: è consigliabile consultare la knowledge base Microsoft Q284984, per non incorrere nel problema “Event ID 115: The service could not bind instance x.” (consultare http://support.microsoft.com/support/kb/articles/Q284/9/84.asp). Paolo Pierini- INFN MI 9