Apache2 abilitare HTTPS
Generare il Certificato
Entrare nella directory /etc/apache2
cd /etc/apache2
creare directory per certificati
mkdir ssl cd ssl mkdir crt mkdir key
Generare il certificato (ATT.NE cambiare il nome delle chiavi e common name)
openssl req -new -x509 -days 365 -keyout key/<xxxxxxx>.key -out crt/<xxxxxxx>.crt -nodes -subj '/O=Nome Azienda /OU=Nome department /CN=www.xxxxxxxxxxx.com'
Dopo editare in /etc/apache2/sistes-enabled il file con la conf di default (es. su debian):
nano /etc/apache2/sistes-enabled/000-default.conf
ed aggiungere il virtualhost per https:
<VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine On SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/apache2/ssl/crt/<xxxxxxx>.crt SSLCertificateKeyFile /etc/apache2/ssl/key/<xxxxxxx>.key # La parte Location qui sotto e' necessaria se si vuole che il client possa # autenticarsi con certificato installato sul proprio device # Nei browser desktop avviene l'autenticazione se c'e' il cert. installato # altrimenti va a diritto e usa solo connessione https. # Nei device mobili invece, viene mostrato un popup che richiede se si vuole # usare un certificato installato o se ne vogliamo installare uno. # Solitamente premendo rifiuta, si prosegue con la navigazione sicura # .....puo' essere pero' fastidioso
# <Location /> # SSLRequireSSL On # SSLVerifyClient optional # SSLVerifyDepth 1 # SSLOptions +StdEnvVars +StrictRequire # </Location> </VirtualHost>
Se si vuole reindirizzare tutto il traffico anche http su https modificare nel file
precedente anche VirtualHost *:80 ed includere la direttiva Redirect
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Redirect "/" "https://xxx.xxx.xxx.xxx" </VirtualHost>
Controllare che apache ascolti sulla porta 443
nano /etc/apache2/ports.conf
Abilitare SSL e il sito
a2enmod ssl a2ensite /
Utilizzo di Certificato valido da CA
Per usare un certificato valido invece del self signed di cui sopra
questo lo si puo' comprare da diverse CA oppure si puo' usare quello offerto da:
o
Supponiamo di usare startssl.com. bisogna avere un dominio registrato e poter accedere alla email del dominio postmaster@xxxxxxxxx o webmaster@xxxxxxxxxxx
Detto cio' bisogna accedere al pannello di controllo Una volta inseriti i dati personali, reistrati, inseriti i vari codici di controllo ricevuti per email etc si arriva al pannello di controllo. Bisogna aprire ValidationWizard Da qui si deve validare il dominio scegliere come certificate target: WebServer SSL/TLS certificate Seguire le istruzioni a video per creare il certificato e la key (copia incolla ;) Ricordarsi di salvare anche i certificati 'intermediate' e 'root' fatto cio', aprire il terminale e descriptare la ssl.key per poterla usare sul server.
openssl rsa -in ssl.key -out private.key
La ssl.key si puo' anche cancellare ( e rinominare la private.key in ssl.key) creare poi le directory per i cerificati in /etc/apache2 (come visto nella sez. sopra 'Generare il Certificato') e copiarvi i files scaricati che salvo casini dovrebbero essere: ca.pem ssl.crt private.key sub.class1.server.ca.pem
Proseguire poi come discritto nella sez. sopra 'Generare il Certificato'
assicurarsi di inserire nella sez VirtualHost *:443 di
nano /etc/apache2/sistes-enabled/000-default.conf
la sez SSLxxxxxxxxxxx con i corretti path e nomi di certificati
per es:
<VirtualHost *:443> ServerAdmin postmaster@xxxxxxx.xxx ServerName xxxxxxx.xxx DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine On SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/apache2/ssl/crt/ssl.crt SSLCertificateKeyFile /etc/apache2/ssl/key/ssl.key SSLCertificateChainFile /etc/apache2/ssl/pem/sub.class1.server.ca.pem SSLCACertificateFile /etc/apache2/ssl/pem/ca.pem # <Location /> # SSLRequireSSL On # SSLVerifyClient optional # SSLVerifyDepth 1 # SSLOptions +StdEnvVars +StrictRequire # </Location> </VirtualHost>