Låt oss kryptera DomainFactory

Vissa delade värdpaket med cPanel erbjuder inte AutoSSL eller erbjuder dem bara till högre priser. Resultatet: Du kan inte utfärda ett gratis Let's Encrypt-certifikat via cPanel-gränssnittet, och alla domäner har fastnat på ett självsignerat certifikat. Webbläsaren visar sidan som "inte säker". Vägen ut: skaffa certifikatet själv med acme.sh och installera det via cPanel UAPI - förnyas automatiskt, 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

Kroken skriver certifikatet till lämplig vHost via UAPI. Implementeringsinställningen sparas - från och med nu förnyar cron och installerar allt oberoende innan det löper ut. Emittenten är "Let's Encrypt" och utgångsdatumet är cirka 90 dagar framåt i tiden. Om det gamla, självsignerade certifikatet dyker upp istället, brukar en hård omladdning i webbläsaren hjälpa – det tidigare certifikatet kan tillfälligt lagras.

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 "framgångsrikt distribuerat" - och det är korrekt. I det här fallet misslyckas kroken på grund av ett efterföljande steg (t.ex. ett internt aviserings- eller synkroniseringsjobb från värden), inte på grund av den faktiska installationen.

För domäner med umlauts lagrar acme.sh certifikatet internt i Punycode-formen (xn--…), medan krokens automatiska matchare jämför Unicode-formuläret. Resultat: "distribuerad till 0 av 0 platser" - ingenting är installerat. Det knepiga är att acme.sh också rapporterar "Framgång" här, så felet är lätt att förbise. Lösning: Arbeta direkt med Punycode-domänen och stäng av automatiskt läge:

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.

Tillbaka