Recentemente mi è capitato di dover installare apache [in particolare, apache2] su una macchina Ubuntu. In particolare, mi è stato chiesto di installare la versione con ssl, ovvero che implementa il protocollo cifrato https.
Apache2+ssl richiede l’utilizzo di un certificato firmato da un’autorità [es. Thawte, Verisign, etc.]. Se non vogliamo pagare una CA per ottenere un certificato firmato, possiamo generare un certificato firmato da noi stessi. Tuttavia, seguendo molte delle guide che si trovano in rete, apache viene installato con l’opzione ssl ma ogni volta che viene avviato richiede la password per l’utilizzo del certificato.
Per questo riporterò qui una guida passo-passo che fa in modo che Apache2 non richieda la password per l’utilizzo del certificato: questa procedura è consigliata solamente se l’utilizzo è volto al testing o allo sviluppo. Qualsiasi altro uso è sconsigliato [richiedere una password per l’utilizzo del certificato è più che normale].
- Abilitate il modulo ssl per apache2:
sudo a2enmod ssl
- Generiamo il certificato:
cd /tmp; sudo openssl req -new > new.cert.csr
- Vi verranno chieste delle informazioni a scopo puramente informativo e che compariranno nel certificato. Riempite le varie informazioni come credete
- Ed ora una serie di comandi per generare tutti i file richiesti dai certificati:
sudo openssl rsa -in privkey.pem -out new.cert.key
sudo openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 1825
sudo cp new.cert.cert /etc/ssl/certs/server.crt
sudo cp new.cert.key /etc/ssl/private/server.key - Ora abilitiamo l’utilizzo dei certificati appena generati:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
- Modificate il file
/etc/apache2/sites-available/default
con il vostro editor preferito, ad esempio vi:sudo vi /etc/apache2/sites-available/default
e cambiate le seguenti linee:Cambiare da… A… NameVirtualHost: * NameVirtualHost: *:80 <VirtualHost *> <VirtualHost *:80> - Modificate ora il file
/etc/apache2/sites-available/ssl
sempre con il vostro editor preferito e cambiate le seguenti linee:Cambiare da… A… NameVirtualHost: * NameVirtualHost: *:443 <VirtualHost *> <VirtualHost *> Dopo la linea che contiene
DocumentRoot
, aggiungete le seguenti righe:
SSLEngine on SSLOptions +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
- Ora date il seguente comando per abilitare l’utilizzo dei certificati in apache2:
sudo a2ensite ssl
- Infine riavviate Apache2 e finalmente non chiederà più la password del certificato:
sudo /etc/init.d/apache2 restart
Nota: se avete problemi controllate che il vostro file /etc/hosts
sia fatto in questo modo:
127.0.0.1 localhost localhost.localdomain {il vostro hostname} 127.0.1.1 {il vostro hostname} {IP statico se ne avete uno} {DNS fully qualified se ne avete uno}