Advanced Tomato : Installer un certificat Let’s Encrypt
Cet article décrit la mise en place d’un certificat Let’s Encrypt sur un routeur équipé d’Advanced Tomato
Obtenir le certificat Let’s Encrypt
Pour obtenir votre certificat il faut passer obligatoirement par une autre machine car Tomato n’est pas compatible avec le client certbot de Let’s Encrypt.
Nous allons donc générer les certificats sur une autre machine Debian puis les importer sur le routeur.
Installer le client certbot sur Debian
Il faut d’abord ajouter les sources backports dans le fichier /etc/apt/source.list
deb http://ftp.debian.org/debian jessie-backports main
Remplacer jessie par stretch si vous êtes sur la version 9 Stretch de Debian.
Puis
apt update && apt install certbot -t backports
Générer le certificat
Ma Debian dispose déjà d’un serveur web, je vais donc utiliser celui la et pas celui intégrer au client certbot
certbot certonly --webroot -w /var/www/html -d example.com
Aprés demande de votre email, les certificats seront générés dans le répertoire /etc/letsencrypt/live/$domain
4 fichiers sont disponibles :
- privkey.pem : Private key for the certificate.
- fullchain.pem : All certificates, including server certificate (aka leaf certificate or end-entity certificate). The server certificate is the first one in this file, followed by any intermediates.
- cert.pem and chain.pem (less common) : cert.pem contains the server certificate by itself, and chain.pem contains the additional intermediate certificate or certificates that web browsers will need in order to validate the server certificate.
Les deux fichiers nécessaires sont privkey.pem et fullchain.pem.
Installation sur Advanced Tomato
D’abord il faut activer le https sur l’interface d’administration, et penser à cocher « Regenerate » et « Save in NVRAM »
Enregistrer et au retour vous serez déjà en HTTPS avec un certificat auto générer, donc avec un avertissement.
Maintenant il faut rapatrier les deux fichiers sur le routeur.
Personnellement j’ai utiliser scp
scp fullchain.pem privkey.pem root@ADDR.IP.DU.ROUTEUR:/tmp
Une fois les fichiers rapatriés sur le routeur il faut replacer les fichiers d’origines :
- /etc/cert.pem par /tmp/privkey.pem
- /etc/key.pem par /tmp/fullchain.pem
rm /etc/cert.pem rm /etc/key.pem mv /tmp/privkey.pem /etc/key.pem mv /tmp/fullchain.pem /etc/cert.pem
Ensuite, pour rendre tout cela résistant au reboot il faut créer une archive et l’intégrer au système
tar -C / -czf /tmp/cert.tgz etc/cert.pem etc/key.pem nvram set https_crt_file="$(tar -C / -cz etc/cert.pem etc/key.pem | openssl enc -a)"
Pour terminer on relance le service serveur web :
service httpd restart
Et c’est finit !
A noter : si vous faites un changement dans la partie Admin Access de l’interface alors les certificats seront écrasés.
Le soucis c’est que les certificats Let’s Encrypt ne sont valides que 3 mois. Je travail sur un script pour automatiser tout cela.
- https://advancedtomato.com/faq#custom-ssl-cert
- https://certbot.eff.org/lets-encrypt/debianjessie-other
- https://certbot.eff.org/docs/using.html#where-are-my-certificates
Merci pour l’idée! pour ma part j’ai un script dans « init » qui copie les fichiers stockés sur une clé USB toujours branchée vers cert.pem et key.pem dans /etc et qui reboot le service httpd. En cas de pépin j’ai juste à retirer la clé pour retrouver le certificat autosigné.