Vissa delade webbhotellspaket med cPanel erbjuder inte AutoSSL , eller bara i dyrare planer. Som ett resultat kan du inte utfärda ett gratis Let's Encrypt-certifikat via cPanel-gränssnittet, och alla domäner sitter fast med ett självsignerat certifikat. Webbläsaren visar sidan som "inte säker". Lösningen: skaffa certifikatet själv med hjälp av acme.sh och installera det via cPanel UAPI – automatisk förnyelse, helt utan AutoSSL.
HTTPS har länge varit obligatoriskt. Det är därför desto mer frustrerande när ditt eget webbhotellspaket inte erbjuder ett bekvämt sätt att få ett gratis certifikat. Detta händer oftare än du kanske tror, till exempel med billiga instegspaket eller efter en planändring där ett certifikat plötsligt inte längre ingår. Detta gap kan dock elegant och permanent täckas med bara några rader kod i skalet – hela processen beskrivs nedan.
1. Logga in via SSH
ssh -p <port> <user>@example.com
2. Installera acme.sh
curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc
3. Ställ in Let's Encrypt som CA
acme.sh --set-default-ca --server letsencrypt
4. Utfärda certifikat
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
5. Installera i cPanel
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
6. Kontrollera
uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer -dates
Hooken skriver certifikatet till lämplig virtuell värd via UAPI. Distributionsinställningarna sparas – från och med nu kommer cron automatiskt att förnya och installera allt innan det löper ut. Utfärdaren är "Let's Encrypt" och utgångsdatumet är ungefär 90 dagar framåt. Om det gamla, självsignerade certifikatet fortfarande visas, hjälper det vanligtvis att ladda om i webbläsaren – det tidigare certifikatet kan vara tillfälligt cachat.
Vissa webbhotell kör sin egen cPanel-hook. install_ssl och svarar med något i stil med adminbin Cpanel/hooks2/...: exit 255. acme.sh rapporterar fortfarande "luckat driftsatt" – och det stämmer. I det här fallet misslyckas hooken på grund av ett efterföljande steg (till exempel en intern avisering eller ett synkroniseringsjobb från webbhotellsleverantören), inte den faktiska installationen.
För domäner med umlauts lagrar acme.sh certifikatet internt i Punycode-formen (xn--…), medan hookens automatiska matchning jämför Unicode-formuläret. Resultat: "distribuerad till 0 av 0 webbplatser" – ingenting är installerat. Det lömska är att acme.sh också rapporterar "Lyckades" här, så felet är lätt att förbise. Lösning: Arbeta direkt med Punycode-domänen och inaktivera 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-åtkomst behöver du inte AutoSSL: acme.sh utfärdar certifikatet, vilket cpanel_uapi-Hook installerar det, och det medföljande cron-jobbet håller det automatiskt uppdaterat. När det väl är konfigurerat körs den kostnadsfria HTTPS-tjänsten kontinuerligt på egen hand. De som investerar den initiala ansträngningen sparar sig varje manuell förnyelse i framtiden – och kan utöka samma lösning till vilken ytterligare domän som helst i samma konto med ett enda kommando.