Ce petit tutoriel va vous permettre d'activer la fonction SSL dans Apache afin de pouvoir accéder au site par défaut ou à un vhost via https.
Tout d'abord il faut activer le module ssl dans Apache :
sudo a2enmod ssl
Cette partie peut être appliquée si vous hébergez qu'un seul site et que vous utilisez la configuration par défaut d'Apache.
On génère le certificat par défaut, cela prend le hostname de la machine :
sudo make-ssl-cert generate-default-snakeoil --force-overwrite
Il suffit ensuite d'activer la configuration par défaut d'Apache pour le SSL :
sudo a2ensite default-ssl
Relancer Apache
sudo /etc/init.d/apache2 restart
Vous devriez pouvoir accéder à votre site en https.
Dans les exemples suivants le nom du certificat sera mySite.pem, remplacez le nom par le nom du site ou son domaine.
Pour générer le certificat, il y a deux méthodes possible :
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/mySite.pem
Saisir le domaine ou l'url du site concerné.
Avec cette méthode les données saisies reflèteront mieux les données réelles du vhost :
sudo openssl req -x509 -nodes -days 365 -new -keyout /etc/ssl/certs/mySite.pem -out /etc/ssl/certs/mySite.pem
Répondez ensuite aux questions qui vous seront posées :
Generating a 1024 bit RSA private key ...++++++ ....++++++ writing new private key to '/etc/ssl/certs/mySite.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []:
Il suffit ensuite de déclarer le certificat dans le vhost souhaité :
<VirtualHost *:443> ... SSLEngine on SSLCertificateFile /etc/ssl/certs/mySite.pem </VirtualHost>
Pour finir, relancer Apache :
sudo /etc/init.d/apache2 restart
Dans certains cas on veux forcer l'utilisation de l'https en fonction du vhost appelé (pour un webmail par exemple). Pour cela on peut utiliser le mod_rewrite d'Apache directement dans la déclaration du vhost :
<VirtualHost *:80> ... RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost>