====== Activer HTTPS avec Let's Encrypt - Ubuntu 20.04 ====== Documentation: [[https://letsencrypt.org/fr/docs/]] ==== 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. Suivre la procédure ==== * Aller sur [[https://certbot.eff.org/instructions]] * Choisir **Apache** et **Ubuntu 20.04** * Une procédure détaillée s'affiche pour le système choisi Résumé : sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot Création du certificat : sudo certbot certonly --apache * Répondre aux questions posées (adresse email, read the terms, etc...) * Choisir le(s) site(s) pour lequel on veut activer HTTPS * Mettre un ou plusieurs numéros séparés par des virgules ou espaces Tout se fait de façon automatique : {{:apache:certbot-20210210.png|}} ==== 3. Configuration d'Apache ==== Pour l'instant j'ai un VirtualHost dont la configuration se situe dans le fichier **/etc/apache2/sites-available/www.marclebrun.be.conf**. ServerName www.marclebrun.be ServerAdmin mon-adresse-mail@gmail.com DocumentRoot /var/www/drupal9/www.marclebrun.be/web Options Indexes FollowSymLinks MultiViews AllowOverride all Require all denied Require all granted allow from all ErrorLog ${APACHE_LOG_DIR}/www.marclebrun.be/error.log CustomLog ${APACHE_LOG_DIR}/www.marclebrun.be/access.log combined Modifier le contenu comme suit : ServerName www.marclebrun.be ServerAdmin mon-adresse-mail@gmail.com RewriteEngine on RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} ServerName www.marclebrun.be ServerAdmin mon-adresse-mail@gmail.com DocumentRoot /var/www/drupal9/www.marclebrun.be/web Options Indexes FollowSymLinks MultiViews AllowOverride all Require all denied Require all granted allow from all SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.marclebrun.be/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.marclebrun.be/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.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}/www.marclebrun.be/error.log CustomLog ${APACHE_LOG_DIR}/www.marclebrun.be/access.log combined 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 ==== 4. Renouvellement du certificat ==== Il n'y a plus de renouvellement automatique à faire car il y a une tâche planifiée qui le fait avant l'expiration. Pour vérifier que le renouvellement automatique fonctionne : sudo certbot renew --dry-run Le système fait une simulation de renouvellement et indique si l'opération a réussi ou non.