Certificats SSL avec letsencrypt

apache securite serveur

L'avantage avec letsencrypt, c'est que le seul pré-requis est d'être propriétaire du domaine (ou du sous domaine). Le nom DNS doit correspondre à l'hôte qui a lancé le processus de certification.

HTTPS Logo Mise en place

dnf install letsencrypt

On fait notre demande de certificat

letsencrypt --text --email admin@example.com --domains www.example.com,example.com,apache.example.com --agree-tos --webroot --webroot-path /var/www/html certonly

Il ne reste plus qu'à déclarer notre clé privée et notre certificat dans le fichier de configuration d'Apache: /etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem

Maintenant il nous faut encore mettre en place le renouvellement automatique, cr ce certificat n'est valable que 90 jours (et des discussions sont en cours pour abaisser cette période). On va se servir des timers de systemd:

  • /etc/systemd/system/letsencrypt-renewal.service

    [Unit]
    Description=Automatically renew the letsencrypt certificate
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/letsencrypt renew --agree-tos --email admin@example.com --renew-by-default
    ExecStart=/usr/bin/systemctl reload httpd
  • /etc/systemd/system/letsencrypt-renewal.timer

    [Unit]
    Description=Trigger an automatic renewal every month
    
    [Timer]
    OnCalendar=monthly
    Persistent=true
    
    [Install]
    WantedBy=multi-user.target

On recharge systemd

systemctl daemon-reload

on active le timer

systemctl enable letsencrypt-renewal.timer

on le démarre

systemctl start letsencrypt-renewal.timer

et le tour est joué

Attention la modification de la configuration apache n'est valable que pour apache > 2.4.8 Pour les versions antérieures, il faut utiliser

SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem

Article précédent Article suivant