Unele pachete de găzduire partajată cu cPanel nu oferă AutoSSL sau le oferă doar la tarife mai mari. Rezultatul: nu puteți emite un certificat Let's Encrypt gratuit prin interfața cPanel și toate domeniile sunt blocate pe un certificat autosemnat. Browserul afișează pagina ca „nesecurizată”. Ieșire: obțineți singur certificatul cu acme.sh și instalați-l prin cPanel UAPI - reînnoind automat, fără AutoSSL.
HTTPS este obligatoriu de mult timp. Prin urmare, este cu atât mai frustrant atunci când propriul pachet de găzduire nu oferă o modalitate convenabilă de a obține un certificat gratuit. Acest lucru se întâmplă mai des decât ați putea crede, de exemplu, cu pachete entry-level ieftine sau după o modificare a planului în care un certificat nu mai este inclus brusc. Cu toate acestea, această lacună poate fi închisă elegant și permanent cu doar câteva linii de cod în shell - procesul complet este descris mai jos.
1. Conectați-vă prin SSH
ssh -p <port> <user>@example.com
2. Instalați acme.sh
curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc
3. Setați Let's Encrypt ca autoritate de certificare (CA)
acme.sh --set-default-ca --server letsencrypt
4. Emiterea certificatului
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
5. Instalare în cPanel
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
6. Verificați
uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer -dates
Cârligul scrie certificatul la vHost-ul corespunzător prin UAPI. Setarea de implementare este salvată - de acum încolo cron-ul se reînnoiește și instalează totul independent înainte de a expira. Emitentul este „Let’s Encrypt”, iar data de expirare este de aproximativ 90 de zile în viitor. Dacă în schimb apare certificatul vechi, autosemnat, o reîncărcare tare în browser ajută de obicei - certificatul anterior poate fi stocat temporar.
Unele gazde rulează propriul hook cPanel. install_ssl și răspunde cu ceva de genul adminbin Cpanel/hooks2/...: exit 255. acme.sh încă raportează „implementat cu succes” – și este corect. În acest caz, cârligul eșuează din cauza unui pas ulterior (de exemplu, o notificare internă sau o lucrare de sincronizare de la gazdă), nu din cauza instalării efective.
Pentru domeniile cu umlaut-uri, acme.sh stochează intern certificatul în forma Punycode (xn--…), în timp ce potrivirea automată a cârligului compară forma Unicode. Rezultat: „implementat pe 0 din 0 site-uri” – nu este instalat nimic. Lucrul dificil este că acme.sh raportează și „Succes” aici, astfel încât eroarea este ușor trecută cu vederea. Soluție: Lucrați direct cu domeniul Punycode și dezactivați modul automat:
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
Cu acces SSH, nu aveți nevoie de AutoSSL: acme.sh emite certificatul, care cpanel_uapi-Hook-ul îl instalează, iar cron job-ul inclus îl menține actualizat automat. Odată configurat, serviciul HTTPS gratuit rulează continuu pe cont propriu. Cei care investesc efort inițial economisesc fiecare reînnoire manuală în viitor - și pot extinde aceeași soluție la orice domeniu suplimentar din același cont cu o singură comandă.