Certains forfaits d'hébergement partagé avec cPanel n'offrent pas AutoSSL ou ne les proposent qu'à des tarifs plus élevés. Le résultat : vous ne pouvez pas émettre de certificat Let's Encrypt gratuit via l'interface cPanel, et tous les domaines sont bloqués sur un certificat auto-signé. Le navigateur affiche la page comme « non sécurisée ». La solution : obtenez vous-même le certificat avec acme.sh et installez-le via le cPanel UAPI - en se renouvelant 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 le vHost approprié via UAPI. Le paramètre de déploiement est enregistré - à partir de maintenant, le cron se renouvelle et installe tout indépendamment avant son expiration. L’émetteur est « Let’s Encrypt » et la date d’expiration est d’environ 90 jours dans le futur. Si l'ancien certificat auto-signé apparaît à la place, un rechargement matériel dans le navigateur est généralement utile - le certificat précédent peut être temporairement stocké.
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 signale toujours « déployé avec succès » – et c'est exact. Dans ce cas, le hook échoue en raison d'une étape ultérieure (par exemple, une tâche de notification ou de synchronisation interne de l'hôte), et non en raison de l'installation réelle.
Pour les domaines contenant des caractères accentués, acme.sh stocke le certificat en interne au format Punycode (xn--…), tandis que l'auto-matcher du hook compare le formulaire 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 » ici, de sorte que l'erreur est facilement ignorée. Solution : travaillez directement avec le domaine Punycode et désactivez le mode 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.