Let's Encrypt DomainFactory

Certains forfaits d'hébergement mutualisé avec cPanel ne proposent pas AutoSSL , ou seulement dans les formules les plus onéreuses. Par conséquent, il est impossible d'obtenir un certificat Let's Encrypt gratuit via l'interface cPanel, et tous les domaines se retrouvent avec un certificat auto-signé. Le navigateur affiche alors la page comme « non sécurisée ». La solution : obtenir soi-même le certificat à l'aide d'acme.sh et l'installer via l'API cPanel ; il se renouvelle automatiquement, sans AutoSSL.


Le protocole HTTPS est obligatoire depuis longtemps. Il est donc d'autant plus frustrant de constater que votre hébergement ne propose pas de solution simple pour obtenir un certificat gratuit. Ce problème est plus fréquent qu'on ne le pense, notamment avec les offres d'entrée de gamme économiques ou après un changement de forfait où le certificat n'est plus inclus. Heureusement, il est possible de remédier à cette lacune de manière simple et définitive en quelques lignes de code dans le terminal ; la procédure complète est décrite ci-dessous.

1. Connectez-vous via SSH

ssh -p <port> <user>@example.com

2. Installez acme.sh

curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc

3. Configurez Let's Encrypt comme autorité de certification.

acme.sh --set-default-ca --server letsencrypt

4. Délivrer le certificat

acme.sh --issue -d example.com -d www.example.com -w ~/public_html

5. Installer dans cPanel

acme.sh --deploy -d example.com --deploy-hook cpanel_uapi

6. Vérifier

uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
     | openssl x509 -noout -issuer -dates

Le hook écrit le certificat sur l'hôte virtuel approprié via l'UAPI. Les paramètres de déploiement sont enregistrés ; désormais, cron renouvellera et installera automatiquement le certificat avant son expiration. L'émetteur est « Let's Encrypt » et la date d'expiration est dans environ 90 jours. Si l'ancien certificat auto-signé apparaît toujours, un rechargement forcé de la page dans le navigateur résout généralement le problème : le certificat précédent peut être temporairement mis en cache.

Certains hébergeurs gèrent leur propre hook cPanel. install_ssl et répond par quelque chose comme adminbin Cpanel/hooks2/...: exit 255. acme.sh indique toujours « déploiement réussi », ce qui est normal. Dans ce cas précis, l'échec du hook est dû à une étape ultérieure (comme une notification interne ou une tâche de synchronisation effectuée par l'hébergeur), et non à l'installation elle-même.

Pour les domaines contenant des caractères accentués, acme.sh stocke le certificat en interne au format Punycode (xn--…), tandis que le système de correspondance automatique du hook compare le format Unicode. Résultat : « déployé sur 0 site sur 0 » – rien n’est installé. Le problème est que acme.sh signale également « Succès », ce qui rend l’erreur facilement imperceptible. Solution : interagir directement avec le domaine Punycode et désactiver la correspondance automatique.:

python3 -c "import sys;print(sys.argv[1].encode('idna').decode())" hallöle.de
acme.sh --issue -d xn--hallle-zxa.de -d www.xn--hallle-zxa.de -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--hallle-zxa.de --deploy-hook cpanel_uapi

Avec l'accès SSH, vous n'avez pas besoin d'AutoSSL : acme.sh émet le certificat, qui cpanel_uapiLe hook -Hook l'installe, et la tâche cron intégrée assure sa mise à jour automatique. Une fois configuré, le service HTTPS gratuit fonctionne en continu et de manière autonome. Ceux qui investissent l'effort initial s'épargnent tout renouvellement manuel ultérieur et peuvent étendre cette solution à n'importe quel domaine supplémentaire du même compte en une seule commande.

Retour