La méthode précédente (auto-signé son certificat) est très bien et suffisante pour le dev, excepté que notre certificat n'est pas valide. Let's Encrypt propose des certificats gratuits valides et faciles à installer.
Rendez-vous sur le site de certbot pour obtenir les instructions.
Il suffit d'entrer votre Software et votre System et l'ensemble de la procédure vous est fourni!!
Dans mon cas: un serveur Apache sur un système Ubuntu16.04.
Ajouter le PPA Cerbot
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo add-apt-repository universe $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update
Installer Cerbot et Cerbot-apache:
$ sudo apt-get install certbot python-certbot-apache
Vous récupérer juste le certificat et vous ferez la configuration d'Apache à la main, dans ce cas:
$ sudo certbot certonly --apache
Puis passez à l'étape 3.
Vous laissez Cerbot tout configurer et il fait vraiment tout:
$ sudo certbot --apache
Il vous sera demandé le mail de l'administrateur et le nom de domaine…, mais normalement, c'est tout ce que vous avez à faire…. votre site est disponible en ssl.
S'il s'agit d'un virtual host, monsite.fr, vous pouvez taper:
$ sudo certbot --apache -d monsite.fr
Cerbot place les certificats dans le dossier /etc/letsencrypt/live/monsite.fr où monsite.fr est le nom de domaine.
Les fichiers créés sont:
privkey.pem, la clé privée cert.pem, le certificat de mon domaine monsite.frchain.pem, le certificat de Let's Encryptfullchain.pem, les certificats cert.pem et chain.pem combinés
Les fichiers de déclaration des hôtes sous Apache se trouve dans le dossier etc/apache2/sites-available.
Dans la version automatique, Cerbot crée automatiquement un fichier monsite.fr-le-ssl.conf correspondant à partir de la version non-cryptée.
Dans le fichier, il ajoute les informations SSL:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName monsite.fr
# ... etc
SSLCertificateFile /etc/letsencrypt/live/monsite.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/monsite.fr/privkey.pem
# les informations sur le SSL
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Le fichier /etc/letsencrypt/options-ssl-apache.conf contient le reste des informations, non spécifiques au domaine pour le SSL:
SSLEngine on # Intermediate configuration, tweak to your needs SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:........ SSLHonorCipherOrder on SSLCompression off SSLOptions +StrictRequire
Activer le mode SSL d'Apache
$ sudo a2enmod ssl
Activer le site https://monsite.fr, (en utilisant le nom du fichier de configuration du site sans l'extension conf)
$ sudo a2ensite monsite.fr-le-ssl
Redémarrer Apache
$ sudo service apache2 restart
2 possibilités: soit via la configuration de l'hôte dans Apache, soit l'ajout d'un fichier .htaccess à la racine de l'application.
On ajoute la redirection dans le fichier de configuration du site http
<VirtualHost *:80> ServerName monsite.fr ServerAdmin machin@monsite.Fr Redirect permanent / https://monsite.fr/ </VirtualHost>Puis on recharge la configuration
$ sudo service apache2 reload
Dans un fichier .htaccess
Pas très conseillé dans notre cas, car nous avons plusieurs applications … Le fichier .htaccess se trouve à la racine du site, on utilise le mode rewrite.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://monsite.fr/$1 [R=301,L]
</IfModule>
On active le mode 'rewrite' de Apache et on redémarre Apache.
$ sudo a2enmod rewrite $ sudo service apache2 restart