Outils pour utilisateurs

Outils du site


apache:activer_https_avec_lets_encrypt

Activer HTTPS avec Let's Encrypt - Ubuntu 18.04

Résumé de la procédure

Fait sur une Ubuntu 18.04.4 LTS

1. Modules Apache

Vérifier si les modules nécessaires sont bien activés.

sudo apachectl -M

La liste doit contenir les lignes suivantes

  • headers_module
  • rewrite_module
  • ssl_module

Si ce n'est pas le cas, activer les modules et redémarrer Apache :

sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl restart apache2

2. Installation de Certbot

Télécharger Certbot dans le dossier /opt et l'exécuter une première fois, accepter l'installation des dépendances mais ne pas faire l'étape de création.

À faire en root

cd /opt
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto

Lorsqu'il demande l'adresse email, entrer 'c' pour annuler.

3. Création du certificat

À faire en root

cd /opt
./certbot-auto certonly --webroot --webroot-path /var/www/mon_site_web/
    --domain marclebrun.be --domain www.marclebrun.be
    --email mon@email.com

:!: Déclarer distinctement le domaine marclebrun.be et le sous-domaine www.marclebrun.be. Pour les autres sous-domaines (dev.marclebrun.be, wiki.marclebrun.be, etc…) il est préférable de créer des certificats séparés pour chacun d'entre-eux. :!:

Répondre aux questions posées puis laisser faire le reste.

Voici le résultat (pour le sous-domaine dev.marclebrun.be) :

Il va y avoir un email envoyé à l'adresse spécifiée, il faut y répondre pour qu'elle soit vérifiée et souscrire à la newsletter de l'Electronic Frontier Foundation.

4. Configuration d'Apache

Pour l'instant j'ai un VirtualHost dont la configuration se situe dans le fichier /etc/apache2/sites-available/dev.marclebrun.be.conf.

/etc/apache2/sites-available/dev.marclebrun.be.conf
<VirtualHost *:80>
    ServerName dev.marclebrun.be
    ServerAdmin mon-adresse-mail@gmail.com
 
    DocumentRoot /var/www
    <Directory /var/www>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Require all denied
        Require all granted
        allow from all
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Modifier le contenu comme suit :

/etc/apache2/sites-available/dev.marclebrun.be.conf
<VirtualHost *:80>
        ServerName dev.marclebrun.be
        ServerAdmin marclebrun2@gmail.com
 
        RewriteEngine on
        RewriteCond %{HTTPS} !on
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
 
<VirtualHost *:443>
        ServerName dev.marclebrun.be
        ServerAdmin marclebrun2@gmail.com
 
        DocumentRoot /var/www
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Require all denied
                Require all granted
                allow from all
        </Directory>
 
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/dev.marclebrun.be/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/dev.marclebrun.be/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/dev.marclebrun.be/chain.pem
        SSLProtocol all -SSLv2 -SSLv3
        SSLHonorCipherOrder on
        SSLCompression off
        SSLOptions +StrictRequire
        SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Tester la configuration :

sudo apachectl configtest

S'il répond Syntax OK, tout va bien.

Si erreur Invalid command 'Header', … cela signifie que le module Header n'est pas activé.

sudo a2enmod headers
sudo systemctl restart apache2

5. Renouvellement du certificat

Refaire la commande d'obtention du certificat, puis recharger Apache.

cd /opt
./certbot-auto certonly --webroot --webroot-path /var/www/mon_site_web/
    --domain marclebrun.be --domain www.marclebrun.be
    --email mon@email.com
sudo systemctl reload apache2
apache/activer_https_avec_lets_encrypt.txt · Dernière modification: 2021/02/10 19:01 par marclebrun