CONFIGURAZIONE WAMP SERVER + SSL (HTTPS) Questa guida consente di configurare Wampserver per Windows XP, con il protocollo https (ovvero connessione sicura o protetta). Effettuare una copia di backup dei 3 file di configurazione di apache (httpd.conf, php.ini, httpd_ssl.conf). Ad esempio: 1. C:\wamp\bin\apache\apache2.2.11\conf\httpd.conf 2. C:\wamp\bin\apache\apache2.2.11\conf\extra\httpd_ssl.conf 3. C:\wamp\bin\php\php5.3.0\php.ini A CURA DI PASQUALE CARUCCI 1 OPERAZIONE (CREAZIONE DEL CERTIFICATO) Aprire una finestra DOS da Start->Esegui e digitare cmd. Dopo digitare cd \ in modo tale da trovarsi su C:\ A questo punto andiamo nella directory bin come mostrato nell immagine sottostante.
Adesso siamo pronti per creare un certificato con firma digitale. Digitare la seguente riga per creare una chiave criptata a 1024 bits: openssl genrsa des3 out server.key 1024 Dopo l esecuzione vi verrà chiesto di inserire una password a vostra scelta, (2 volte, per evitare errori di digitazione), (vedere figura sottostante). Adesso creiamo una copia di questa chiave (1) e dopo generiamo la chiave in uscita (2), ottenuta dalla copia stessa. Questa operazione ci evita di inserire la password nella successiva fase. 1. copy server.key server.key.org 2. openssl rsa in server.key.org out server.key
L ultima operazione da fare per creare il certificato è digitare la seguente riga, (fare attenzione, è abbastanza lunga quindi si usi copia/incolla). Ovviamente facendo attenzione ad aver usato gli stessi nomi di questa guida per quanto riguarda la chiave (server.key). openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt -config C:\wamp\bin\apache\apache2.2.11\conf\openssl.cnf Per l attributo days è possibile specificare anche 999 come numero, in pratica sarebbe il tempo di validità di questo certificato. Ovviamente a me fra 1 anno scadrà e quindi dovrò rifarne uno nuovo. A questo punto dopo l esecuzione del comando verranno chieste alcune cose. L unica cosa da inserire è il parametro localhost quando vi chiede il Common Name.
Dopo questa operazione abbiamo completato la creazione del certificato che ci servirà per l esecuzione del protocollo HTTPS. Nella directory C:\wamp\bin\apache\apache2.2.11\bin avremo due file necessari per il prosieguo delle operazioni (server.key e server.crt). 2 OPERAZIONE (COPIA DEI DUE FILE NELLA CARTELLA CONF) Creare due directory nel percorso: c:\wamp\bin\apache\apache2.2.11\conf 1. ssl.crt 2. ssl.key e copiare i due file creati in precedenza server.key nella directory ssl.key e server.crt in ssl.crt Risultato finale.
3 OPERAZIONE (MODIFICA FILE HTTPD.CONF E PHP.INI) 1) Andare in c:\wamp\bin\apache\apache2.2.11\conf il file in questione è httpd.conf, aprirlo con un editor di testo. Cercare la seguente linea di codice: #LoadModule ssl_module modules/mod_ssl.so rimuovere il commento (#) per abilitare l istruzione.
Sempre nel file httpd.conf cercare la riga: #include conf/extra/httpd-ssl.conf Togliere il cancelletto (#) e copiarla in basso dopo la fine del codice </ifmodule> come illustrato nella figura sottostante. Fate caso alla freccia per capire come posizionare l istruzione. Salvare le modifiche effettuate in httpd.conf. 2) Aprire php.ini che è situato nella directory: c:\wamp\bin\apache\apache2.2.11\bin\php.ini cercare la linea di codice: ;extension=php_openssl.dll Chiudere\Salvare php.ini.
4 OPERAZIONE (MODIFICA DEL FILE HTTPD_SSL.CONF) Andiamo nella cartella: c:\wamp\bin\apache\apache2.2.11\conf\extra aprire httpd_ssl.conf. Cercare la linea di codice dove c è scritto: SSLMutex modificarla in modo tale da avere SSLMutex default. Solitamente questa è un opzione che allo stato attuale è già impostata con questo parametro ma meglio controllare. Subito sotto trovare queste linee di codice: <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" ServerName localhost:443 ServerAdmin me@localhost ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/error.log" TransferLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/access.log" Modificarle in modo opportuno ecco come: <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot C:/wamp/www/ ServerName localhost:443 ServerAdmin me@localhost ErrorLog logs/sslerror.log TransferLog logs/sslaccess.log
Il risultato finale sarà come questo mostrato in figura sotto: Mentre questa è la versione di codice precedente prima della modifica: Se le mettiamo a confronto vediamo che le modifiche sono state apportate a DocumentRoot, ErrorLog e TransferLog specificando le opportune directory.
Modificare ancora altre due righe: SSLCertificateFile C:/Program File SSLCertificatekeyFile Program File Eccole mostrate qui sotto: Riscriverle in questo modo: SSLCertificateFile conf/ssl.crt/server.crt SSLCertificatekeyFile conf/ssl.key/server.key Ecco qui sotto la modifica apportata:
Cercare questo blocco di codice: <FilesMatch "\.(cgi shtml phtml php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgibin"> SSLOptions +StdEnvVars </Directory> modificarlo nel seguente modo: <Directory "c:/wamp/www/"> SSLOptions +StdEnvVars Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
Cercare l ultima riga da modificare: CustomLog "C:/Program Files/Apache Software Riscriverla in questo modo: CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
5 OPERAZIONE (VERIFICA DEL LAVORO SVOLTO E RIAVVIO WAMP) Verificare tutto il lavoro in modo ottimale altrimenti, controllare se c è stato qualche errore durante la modifica del codice nei file sopra elencati. Si raccomanda la precisione nell esecuzione delle istruzioni date precedentemente. Da Start->esegui Digitare cmd C:\wamp\bin\apache\apache2.2.11\bin E poi digitiamo httpd t Se è visualizzato Syntax OK il codice non ha errori. Ecco la foto: Riavviare i servizi di WAMP e controllare digitando https://localhost se il server risponde in maniera positiva. Fare un test usando i cookie in php con il parametro SECURE.
RISULTATO FINALE Se il risultato finale sarà questo, il lavoro svolto in precedenza è corretto. Nulla di preoccupante se viene visualizzato un errore di protezione, i browser accettano solo certificati rilasciati da determinate Autority. Mentre il nostro certificato che è stato generato da noi stessi non viene riconosciuto.