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 sera renouvelé automatiquement, sans nécessiter AutoSSL.


Le protocole HTTPS est désormais obligatoire : c’est d’autant plus frustrant lorsque 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> <cpanel-user>@<host>

2. Installez acme.sh

curl https://get.acme.sh | sh -s email=du@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 doit être « Let's Encrypt » et la date d'expiration doit être 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 généralement correct. 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 : acme.sh signale également « Succès » à ce stade, ce qui rend l’erreur facilement imperceptible. Solution : travailler directement avec le domaine Punycode et désactiver la correspondance automatique.:

# Punycode-Form der Domain vorher ermitteln (z. B. via idn-Tool oder Online-Konverter)
acme.sh --issue -d xn--<punycode> -d www.xn--<punycode> -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--<punycode> --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 permanence. L'effort initial permet d'éviter tout renouvellement manuel ultérieur et d'étendre la solution à n'importe quel domaine supplémentaire du même compte grâce à une simple commande.

Retour