Pourquoi centraliser vos certificats
certbot fait très bien une chose : renouveler le certificat du serveur sur lequel il tourne. Dès que vous gérez plusieurs serveurs, un certificat wildcard partagé ou des sites clients, chaque machine devient une échéance à surveiller séparément, et une panne silencieuse ne se découvre qu'au moment où le navigateur affiche son avertissement.
La durée de vie des certificats publics raccourcit en plus d'année en année, ce qui multiplie les renouvellements. Centraliser l'émission, le déploiement et la surveillance à un seul endroit, avec un historique et des alertes, est la façon la plus sûre de ne plus jamais laisser un certificat expirer.
Ce que Certimate apporte
- Flux visuels — demande, déploiement et notification enchaînés dans un même flux, planifié pour le renouvellement.
- DNS-01 et HTTP-01 — wildcard et multi-domaines par DNS-01 chez plus de 70 fournisseurs, dont Cloudflare, OVHcloud et Hetzner.
- Plusieurs autorités — Let's Encrypt, ZeroSSL, Google Trust Services, SSL.com ; clés RSA ou ECC.
- Plus de 160 cibles de déploiement — SSH, cPanel, Nginx Proxy Manager, Proxmox VE, Kubernetes, CDN et services cloud.
- Formats PEM, PFX et JKS — pour nginx, Apache, IIS ou une application Java.
- Alertes — e-mail, Telegram, Slack, Discord, Matrix ou webhook à chaque échec et avant expiration.
Certimate, certbot et Nginx Proxy Manager
Faites défiler le tableau
| Certimate | certbot | Nginx Proxy Manager | |
|---|---|---|---|
| Interface web | Oui, flux visuels | Non, ligne de commande | Oui |
| Plusieurs serveurs | Oui, déploiement SSH et API | Non, un par serveur | Non, ses propres hôtes |
| Wildcard par DNS-01 | Oui, plus de 70 fournisseurs | Oui, par extension | Oui |
| Alertes d'échec | Oui, multicanal | Non, à scripter | Non |
| Reverse proxy | Non | Non | Oui, c'est son rôle |
| Historique des exécutions | Oui | Journal local | Partiel |
Prérequis
Un VPS Ubuntu 24.04 avec 512 Mo de RAM et Docker installé suffit : Certimate consomme une vingtaine de mégaoctets. Prévoyez un sous-domaine pour la console (par exemple certs.example.com) pointé vers le VPS, et nginx en reverse proxy. Pour les flux, gardez sous la main un jeton d'API de votre fournisseur DNS et un accès SSH aux serveurs qui recevront les certificats.
Installer Certimate avec Docker Compose
Préparer le répertoire et le mot de passe
Créez le répertoire de l'application et un fichier
.envqui porte le mot de passe administrateur, tiré au hasard.mkdir -p /opt/certimate && cd /opt/certimate printf 'ADMIN_PASSWORD=%s\n' "$(openssl rand -hex 16)" > .env chmod 600 .envÉcrire le fichier compose
Créez
compose.yaml. Au premier démarrage seulement, la commande appliqueADMIN_PASSWORDau compte d'usine avant de lancer le serveur ; le marqueur évite d'écraser ensuite un mot de passe changé dans l'interface. Le port n'est publié que sur la boucle locale : seul nginx y accède.services: certimate: image: certimate/certimate:v0.4.36 restart: unless-stopped ports: - "127.0.0.1:8109:8090" environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD requis} entrypoint: ["sh", "-c"] command: - >- if [ ! -f /app/pb_data/.admin-seeded ]; then ./certimate superuser upsert [email protected] "$$ADMIN_PASSWORD" && touch /app/pb_data/.admin-seeded || exit 1; fi; exec ./certimate serve --http 0.0.0.0:8090 volumes: - certimate-data:/app/pb_data volumes: certimate-data: {}Démarrer et vérifier
Lancez la pile. Certimate applique ses migrations au démarrage, puis la sonde de santé doit répondre.
docker compose up -d docker compose ps curl -fsS http://127.0.0.1:8109/api/health
Ne laissez jamais le mot de passe d'usine actif
L'image publie un compte [email protected] avec le mot de passe 1234567890, documenté dans le README du projet. Une console exposée avec ces identifiants donne à n'importe qui vos jetons DNS et vos clés SSH. La commande ci-dessus le remplace avant même que le serveur n'écoute ; si vous lancez l'image autrement, changez-le avant de publier le domaine.
Publier la console en HTTPS derrière nginx
Ajoutez un bloc serveur qui proxifie vers la boucle locale. Pour amorcer, utilisez un certificat obtenu une fois par certbot ; Certimate pourra ensuite renouveler le sien comme les autres.
server {
listen 443 ssl;
server_name certs.example.com;
# ssl_certificate / ssl_certificate_key : votre certificat actuel
location / {
proxy_pass http://127.0.0.1:8109;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}Ouvrez https://certs.example.com, connectez-vous avec [email protected] et le mot de passe du fichier .env, puis changez l'e-mail et le mot de passe dans les paramètres du compte.
Premier flux : un certificat wildcard par DNS-01
Dans Accès, créez un accès Cloudflare (ou OVHcloud, Hetzner…) avec un jeton d'API limité à la permission d'édition DNS de la zone concernée. Dans Flux de travail, créez un flux : nœud de demande avec example.com et *.example.com, défi DNS-01, autorité Let's Encrypt et clé ECC.
Lancez le flux à la main : Certimate pose l'enregistrement TXT, attend sa propagation, obtient le certificat et le range dans Certificats avec sa date d'expiration. Le défi DNS-01 n'exige aucun port ouvert sur les serveurs cibles, et c'est le seul qui permet un wildcard.
Déployer par SSH sur vos serveurs nginx
Sur chaque serveur cible, créez un compte dédié qui ne peut écrire que dans le répertoire des certificats et recharger nginx :
useradd -m -s /bin/bash certdeploy
install -d -o certdeploy -m 750 /etc/ssl/certimate
echo 'certdeploy ALL=(root) NOPASSWD: /usr/sbin/nginx -t, /usr/bin/systemctl reload nginx' > /etc/sudoers.d/certdeployDans Certimate, ajoutez un accès SSH par clé vers ce compte, puis un nœud de déploiement SSH après la demande : chemins /etc/ssl/certimate/example.com.pem et .key, commande sudo nginx -t && sudo systemctl reload nginx. Pointez ssl_certificate et ssl_certificate_key de vos vhosts vers ces fichiers.
Renouvellement planifié et alertes
Activez le déclencheur planifié du flux (une exécution par jour suffit : Certimate ne renouvelle que lorsque l'échéance approche) et ajoutez un nœud de notification vers Telegram, Slack ou l'e-mail. Chaque exécution garde son journal : en cas d'échec, vous savez si c'est le défi DNS, l'autorité ou le déploiement qui a cassé, et vous le savez avant l'expiration.
Sécurité et sauvegarde
La base de Certimate contient vos jetons DNS, vos clés SSH et vos clés privées : traitez la console comme un coffre. Mot de passe solide, HTTPS uniquement, jetons et comptes SSH au strict minimum de droits. Sauvegardez le volume régulièrement, et chiffrez l'archive avant de la copier hors du VPS :
cd /opt/certimate
docker compose stop
docker run --rm -v certimate_certimate-data:/data -v "$PWD":/backup alpine \
tar czf /backup/certimate-$(date +%F).tar.gz -C /data .
docker compose startInstaller Certimate en un clic sur ServOrbit
Depuis le Marketplace de votre espace client, Certimate s'installe sur un VPS Ubuntu 24.04 en un clic : conteneur officiel, mot de passe administrateur généré et appliqué avant le premier démarrage, volume de données et reverse proxy nginx en HTTPS sur votre domaine ou sur le sous-domaine gratuit du VPS. Le mot de passe figure dans votre espace client, sur la fiche de l'application.