Oggi mi è stato chiesto di cambiare in https l’accesso ad un portale aziendale, ospitato su un server Debian (Sarge) con Apache 2. Riporto brevemente i passaggi che ho seguito.
Generazione del certificato
Non disponendo di un certificato rilasciato da un rivenditore ufficiale ho dovuto generarne uno personale; la cosa si tradurrà in un messaggio di warning che apparirà ad ogni accesso al portale (basterà accettare il mio certificato, considerato inaffidabile
). Il comando di generazione è il seguente
#apache2-ssl-certificate -days xyz (xyz indica il numero di giorni di validità del certificato)
Il sistema farà alcune semplici domande per la generazione (es. nazione, nome dell’azienda, ecc.), quindi genererà il file apache.pem in /etc/apache2/
Abilitazione di SSL
Generato il certificato, dovremo dire al server apache di ascoltare anche sulla porta https, la 443. Basterà aggiungere al file /etc/apache2/ports.conf la linea
Listen 443
Invece, per caricare il modulo ssl in apache occorre digitare
#a2enmod ssl
e quindi riavviare il servizio.
/etc/init.d/apache2 restart
Configurazione SSL
Il nostro portale avrà un file di configurazione nella cartella /etc/apache2/sites-available/; il nome di default è, manco a dirlo, default. Digitando questi comandi ne creeremo una copia esatta di nome ssl e la attiveremo:
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
A questo punto bisognerà modificare il file /etc/apache2/sites-available/ssl indicando la porta 443 come porta di ascolto. Le voci modificate saranno così fatte:
NameVirtualHost *:443
<VirtualHost *:443>
Rimane da indicare ad ogni VirtualHost interessato la posizione del certificato e l’attivazione dell’engine ssl; è sufficiente inserire nella sezione interessata (del VirtualHost, ad es. sotto il ServerName) queste righe:
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
Riavviato Apache sarà possibile accedere anche in https.
In rete si trovano altre guide , anche più esaustive e complete, (ad es. qui) per cui se è necessario approfondire l’argomento conviene guardarsi intorno (senza dimenticare il comando man).
Questi sono i passaggi con cui ho ottenuto quanto chiesto nel minor tempo possibile.
Minchia, tutto sto casino?????
Anche se il post è vecchio, rimane sempre utile e scritto chiaramente.
apache2-ssl-certificate nel frattempo è deceduto.
openssl req $@ -new -x509 -days numerodigiorni -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem
ne fa le veci.
Grazie Francesco, sia per il complimento che (soprattutto) per il contributo.