SSL LET'S ENCRYPT : Génération des certificats Gratuit avec Lego
Lego "Automatic Certificates and HTTPS for everyone." vous permet de valider vos noms de domaines au prés de l’autorité LET'S ENCRYPT.
Installation :
sudo apt-get -y install lego
Apres l'instation, il est recommandé de faire un de generation de certificat, car l'autorité de certification definit un enssemble de limits.
Vous pouvez tester la génération de votre certificat :
cd ~ && sudo lego --server=https://acme-staging-v02.api.letsencrypt.org/directory --accept-tos --email yourEmail@x.com --http --http.webroot /var/www/habeuk/public/web --http.port 80 -d www.habeuk.com -d habeuk.com run
Nous nous assurons que vous êtes à la racine e votre compte "cd ~". Cette partie est important car les certificats generer seront stocker dans "~/.lego/certificates". ( Vous pouvez le faire à partir d'un autre repertoire ).
Explications :
--server=https://acme-staging-v02.api.letsencrypt.org/directory : environment de test. ( il est recommande de commencer par des tests, car le nombre de requête en production est limitée ).
--accept-tos : pour accepter les condition d'utilisations
--http : la méthode de challenge HTTP-01,
--http.webroot : Le chemin absolu vers le repaertoire racine
-d : le domaine ou sous domaine, vous pouvez en mettre plusieurs.
--email : votre adresse mail.
S'il ny'a pas eu d'erreurs, vous pouvez essayer en direct ( au moment ou j'ecris ce memo, vous avez droit à 3 echecs par semaine ).
Generer le certificat avec lego :
sudo lego --accept-tos --email yourEmail@x.com --http --http.webroot /var/www/habeuk/public/web --http.port 80 -d habeuk.com -d www.habeuk.com run
Les fichiers generés sont dans "~/.lego/certificates".
Vous devez mettre à jour le fichier virtual host et redemarer apache.
Exemple pour le fichier virtual host:
<VirtualHost *:80>
ServerAdmin you_email@x.com
ServerName habeuk.com
ServerAlias www.habeuk.com
DocumentRoot /var/www/habeuk/public/web
<Directory /var/www/habeuk/public/web>
Options Indexes FollowSymlinks
AllowOverride All
Order Deny,Allow
Allow from all
DirectoryIndex disabled
DirectoryIndex index.php
</Directory>
#redirect to https
RewriteEngine On
RewriteCond %{SERVER_NAME} =habeuk.com [OR]
RewriteCond %{SERVER_NAME} =www.habeuk.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
# ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog /var/www/habeuk/public/logs/error.log
CustomLog /var/www/habeuk/public/logs/access.log combined
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin kksasteph888@gmail.com
ServerName shopping.habeuk.com
DocumentRoot /var/www/habeuk/public/web
<Directory /var/www/habeuk/public/web>
Options Indexes FollowSymLinks
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
ErrorLog /var/www/habeuk/public/logs/error.log
CustomLog /var/www/habeuk/public/logs/access.log combined
#SSL conf.
SSLEngine on
SSLCertificateFile /home/ubuntu/.lego/certificates/habeuk.com.crt
SSLCertificateKeyFile /home/ubuntu/.lego/certificates/habeuk.com.key
</VirtualHost>
Il faut rechercher la configuration du vhost, dans notre cas, notre fichier de configuration "/etc/apache2/sites-available/habeuk.conf".
sudo a2dissite habeuk.conf && sudo a2ensite habeuk.conf
Et enfin redemarrer apache :
sudo systemctl reload apache2
L'application lego a un inconveniant, vous devez regenerer manuellement le domaine apres 90 jours.
sudo lego --accept-tos --email yourEmail@x.com --http --http.webroot /var/www/habeuk/public/web --http.port 80 -d habeuk.com -d www.habeuk.com renew
( la commande est similaire à la generation du certificat, mais on remplace run par renew ).vous pouvez egalement utiliser cerboot, qui effectue le renouvelement de maniere autonome.
Voir notre tuto : SSL Let's Encrypt : Installation et configuration sur Debian 11