SSL avec Apache (https)

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.

Génération du certificat

Pour générer le certificat, il y a deux méthodes possible :

Méthode rapide

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/mySite.pem

Saisir le domaine ou l'url du site concerné.

Méthode personnalisée

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 []:

Configuration du vhost

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>
  • Dernière modification: 13/03/2021 07:56