Générer et automatiser les certificats SSL sur Linux
Dans cet article, nous allons vous expliquer comment utiliser Certbot pour générer et automatiser les certificats SSL sur Linux. Nous décrivons la procédure sur Apache, mais vous pouvez l'utiliser également pour Nginx, Haproxy et Plesk. Certbot est un outil logiciel open source gratuit.
Préparation à l'obtention d'un certificat
L'utilisation de l'ACME est très simple, mais nécessite une préparation mineure. Avant de commencer à l'utiliser, veuillez lire les paragraphes suivants.
Obtention des accès pour l'authentification
L'implémentation ACME de DigiCert utilise l'authentification par external account binding (EAB), ce qui signifie que vous recevrez vos propres accès et DigiCert. Vous pouvez facilement obtenir ces accès (identifiants ACME) dans votre compte client SSLmarket.
Les identifiants ACME se composent de Key Identifier (ID de clé) et d'une clé HMAC, qui est votre secret pour l'authentification à votre compte existant. Vous avez besoin de ces informations et de l'URL du point de terminaison ACME pour le client ACME (Certbot).
Résumé de la vérification des certificats
Tous les certificats délivrés par DigiCert sont vérifiés. Certains minimalement (certificats DV), d'autres nécessitent une vérification de l'organisation (OV et EV). ACME ne fait pas exception et cette vérification est également utilisée.
- Les certificats DV de domaine sont obtenus immédiatement; il suffit de créer des identifiants ACME pour le produit DV et de les utiliser. La vérification DCV est effectuée via la méthode HTTP-01 et le certificat sera immédiatement délivré.
- Les certificats OV et EV exigent une organisation vérifiée et la vérification du domaine utilisé, qui est lié à l'organisation. Si la vérification n'est pas terminée, la demande ACME ne peut être complétée.
- Les domaines peuvent être vérifiés automatiquement via HTTP-01, ou peuvent être préalablement vérifiés avec DNS ou par e-mail (dans ce cas, contactez-nous). Le DCV se déroule exactement comme vous en avez l'habitude.
- L'organisation doit être vérifiée avant de demander le certificat, sinon elle attendra son achèvement (ce qui aboutira à un timeout). Nous recommandons d'attendre la vérification de votre organisation par DigiCert avant d'active votre compte ACME et de consulter l'état avec le support SSLmarket.
Pour les OV et EV, vous pouvez commencer à utiliser ACME dès que l'organisation est vérifiée (la vérification des domaines et des entreprises est valable 13 mois).
Certbot
Certbot est le client ACME le plus populaire, prenant en charge les principaux serveurs web sous Linux.
Préparation de Certbot sur le serveur
Le paquet Certbot est généralement installé dans les distributions Linux, mais supprimez ce paquet par défaut. Pour utiliser EAB ACME de DigiCert, le paquet doit être installé depuis Snap; d'autres variantes peuvent ne pas fonctionner. Installez-le ainsi :
snap install certbot --classic
Certbot prend en charge une variété de serveurs web. Vous spécifiez le type que vous utilisez avec un paramètre, par exemple --apache ou --nginx. Si vous avez besoin d'autre chose, je recommande sa documentation claire qui vous indique la procédure spécifique pour le serveur web en question.
Obtenir et installer le certificat
Sur Internet ou dans la documentation de Certbot, vous trouverez de nombreux exemples d'utilisation pour obtenir un certificat. Cependant, puisque l'ACME de DigiCert fonctionne dans le mode EAB mentionné précédemment, la commande doit être complétée par l'URL ACME et vos deux identifiants ACME obtenus dans votre administration. Sinon, cela ne fonctionnera pas.
Dans le terminal, demandez un certificat avec la commande ci-dessous :
sudo certbot --apache --register-unsafely-without-email --server URL --eab-kid xxxxxx --eab-hmac-key yyyyyy -d www.nomenvotredomaine.fr
Légende de la commande :
- Certbot – lance le programme Certbot.
- --apache – sélectionne le plugin Apache Certbot, qui installe le certificat. Si vous utilisez un autre serveur web, utilisez un autre paramètre (par exemple, --nginx).
- --register-unsafely-without-email – passe l'enregistrement de l'e-mail pour les notifications, ce qui est inutile.
- --server – définit quel serveur ACME doit exécuter votre demande ; c'est-à-dire https://acme.digicert.com/v2/acme/directory.
- -d – Nom de domaine pour lequel vous voulez émettre le certificat. Vous pouvez utiliser plusieurs noms de domaine (SAN) si le certificat le permet. Ils seront bien sûr facturés, sauf s'il s'agit d'un alias gratuit (www). Si vous ne remplissez pas cette option, Certbot vous demandera de confirmer les domaines que vous souhaitez inclure dans la demande, en fonction des vhosts configurés sur le serveur.
Après avoir saisi la commande, vous recevrez une offre pour activer immédiatement la redirection forcée vers https pour le domaine :
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Sélectionnez votre choix et appuyez sur la touche ENTRÉE. La configuration sélectionnée sera définie et se chargera après le redémarrage du serveur web. Vous recevrez ensuite un message final vous informant de la réussite du processus et de l'emplacement de vos certificats.
Certbot installera également le nécessaire certificat intermédiaire. Pour vérifier l'installation correcte, utilisez ensuite notre outil en ligne pour vérification de l'installation du certificat.
ACME.sh
Vous pouvez également utiliser facilement l'ACME de DigiCert avec l'outil ACME.sh. Contrairement à Certbot, il est plus "léger" et il n'est pas nécessaire d'installer autant de dépendances sur le serveur.
Création d'un utilisateur système séparé, sous lequel cela "fonctionnera" :useradd -r -s /bin/bash -m -d /home/acmeuser acmeuser
mkdir -p /home/acmeuser/.acme.sh
chown -R acmeuser:acmeuser /home/acmeuser/.acme.sh
echo 'acmeuser ALL=(ALL) NOPASSWD: /usr/sbin/service nginx reload' | sudo tee /etc/sudoers.d/acmeuser
puis connectez-vous en tant qu'utilisateur : sudo su - acmeuser
Installation d'acme.sh
Installez maintenant le client ACME avec le paquet téléchargé depuis le site. wget https://get.acme.sh -O acme.sh
L'installation comprend :
sh acme.sh
- l'installation du script lui-même
- la configuration de la tâche cron (peut être vérifiée par l'utilisateur acmeuser avec la commande crontab -e)
Enregistrez ensuite l'autorité de certification : acme.sh --register-account --server https://one.digicert.com/mpki/api/v1/acme/v2/directory --eab-kid xxxxxx --eab-hmac-key yyyyyy
Avant de faire la demande de certificat, il est nécessaire de vérifier (et le cas échéant de régler) pour que l'utilisateur acmeuser ait accès au répertoire cible où sont situés les certificats pour nginx, apache, ainsi que d'autres services
sur le serveur, j'ai créé un nouveau groupe ssladmins et y ai ajouté les utilisateurs root et acmeuser.
sudo groupadd ssladmins
sudo usermod -aG ssladmins root
sudo usermod -aG ssladmins acmeuser
sudo chown root:ssladmins /etc/nginx/ssl/
sudo chmod 770 /etc/nginx/ssl/
Il y aurait aussi une autre solution : à l'aide de visudo, lui donner les droits pour copier des fichiers vers les dossiers donnés sans mot de passe.
Demande de délivrance de certificat
acme.sh --issue --server https://one.digicert.com/mpki/api/v1/acme/v2/directory -d dev.inmail.cz --days 365 -w /www/sites/inmail/dev/current/web/ --key-file /etc/nginx/ssl/dev.inmail.cz.key --fullchain-file /etc/nginx/ssl/dev.inmail.cz.cer --force --log --reloadcmd "sudo systemctl reload nginx"
Liste des certificats délivrés et installés : acme.sh --list
Nous sommes désolés que vous n'ayez pas trouvé les informations que vous recherchiez.
Aidez-nous à améliorer cet article. Vous cherchez autre chose ? N'hésitez pas à nous écrire.