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.
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