Nogle delte hostingpakker med cPanel tilbyder ikke AutoSSL , eller kun i dyrere planer. Som følge heraf kan du ikke udstede et gratis Let's Encrypt-certifikat via cPanel-grænsefladen, og alle domæner sidder fast med et selvsigneret certifikat. Browseren viser siden som "ikke sikker". Løsningen: Hent certifikatet selv ved hjælp af acme.sh og installer det via cPanel UAPI – automatisk fornyelse, helt uden AutoSSL.
HTTPS har længe været obligatorisk. Det er derfor endnu mere frustrerende, når din egen hostingpakke ikke tilbyder en bekvem måde at få et gratis certifikat på. Dette sker oftere, end du måske tror, for eksempel med billige basispakker eller efter en planændring, hvor et certifikat pludselig ikke længere er inkluderet. Dette hul kan dog elegant og permanent lukkes med blot et par linjer kode i shell'en – hele processen er beskrevet nedenfor.
1. Log ind via SSH
ssh -p <port> <user>@example.com
2. Installer acme.sh
curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc
3. Indstil Let's Encrypt som CA
acme.sh --set-default-ca --server letsencrypt
4. Udstedelse af certifikat
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
5. Installer i cPanel
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
6. Tjek
uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer -dates
Hook'en skriver certifikatet til den relevante virtuelle vært via UAPI. Installationsindstillingerne gemmes – fra nu af vil cron automatisk forny og installere alt inden udløb. Udstederen er "Let's Encrypt", og udløbsdatoen er cirka 90 dage ude i fremtiden. Hvis det gamle, selvsignerede certifikat stadig vises, hjælper en hård genindlæsning i browseren normalt – det tidligere certifikat kan være midlertidigt cachelagret.
Nogle hosts kører deres egen cPanel-hook. install_ssl og svarer med noget i retning af adminbin Cpanel/hooks2/...: exit 255. acme.sh rapporterer stadig "implementeret med succes" – og det er korrekt. I dette tilfælde fejler hook'en på grund af et efterfølgende trin (såsom en intern notifikation eller et synkroniseringsjob fra hostingudbyderen), ikke den faktiske installation.
For domæner med umlauts gemmer acme.sh certifikatet internt i Punycode-formen (xn--…), mens hookens automatiske matcher sammenligner Unicode-formularen. Resultat: "implementeret til 0 af 0 websteder" – intet er installeret. Det lumske er, at acme.sh også rapporterer "Succes" her, så fejlen let overses. Løsning: Arbejd direkte med Punycode-domænet og deaktiver automatisk matchning.:
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
Med SSH-adgang behøver du ikke AutoSSL: acme.sh udsteder certifikatet, som cpanel_uapi-Hook installerer det, og det medfølgende cron-job holder det automatisk opdateret. Når det er konfigureret, kører den gratis HTTPS-tjeneste kontinuerligt af sig selv. De, der investerer den indledende indsats, sparer sig selv for enhver manuel fornyelse i fremtiden – og kan udvide den samme løsning til ethvert yderligere domæne i den samme konto med en enkelt kommando.