Niektóre pakiety hostingu współdzielonego z cPanel nie oferują AutoSSL – lub oferują je tylko w droższych planach. W rezultacie nie można wystawić darmowego certyfikatu Let's Encrypt za pośrednictwem interfejsu cPanel, a wszystkie domeny są zablokowane przez certyfikat podpisany przez siebie . Przeglądarka wyświetla stronę jako „niezabezpieczoną”. Rozwiązanie: uzyskaj certyfikat samodzielnie za pomocą acme.sh i zainstaluj go za pomocą interfejsu UAPI cPanel. Certyfikat zostanie odnowiony automatycznie, bez konieczności korzystania z AutoSSL.
Protokół HTTPS jest teraz obowiązkowy: tym bardziej frustrujące, gdy Twój pakiet hostingowy nie oferuje wygodnego sposobu uzyskania darmowego certyfikatu. Zdarza się to częściej, niż mogłoby się wydawać – na przykład w przypadku niedrogich pakietów podstawowych lub po zmianie planu, gdy certyfikat nagle przestaje być dostępny. Jednak tę lukę można elegancko i trwale wypełnić kilkoma linijkami kodu w powłoce – cały proces opisano poniżej.
1. Zaloguj się przez SSH
ssh -p <port> <cpanel-user>@<host>
2. Zainstaluj acme.sh
curl https://get.acme.sh | sh -s email=du@example.com
source ~/.bashrc
3. Ustaw Let's Encrypt jako CA
acme.sh --set-default-ca --server letsencrypt
4. Wydaj certyfikat
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
5. Zainstaluj w cPanelu
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
6. Sprawdź
uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer -dates
Hak zapisuje certyfikat na odpowiednim hoście wirtualnym za pośrednictwem UAPI. Ustawienia wdrożenia zostają zapisane – od teraz cron będzie automatycznie odnawiał i instalował wszystko przed upływem terminu ważności. Wystawcą powinien być „Let's Encrypt”, a data wygaśnięcia powinna przypadać za około 90 dni. Jeśli stary, samopodpisany certyfikat nadal się wyświetla, zazwyczaj pomaga twarde odświeżenie przeglądarki – poprzedni certyfikat może być tymczasowo buforowany.
Niektórzy usługodawcy hostingowi korzystają z własnego interfejsu cPanel. install_ssl i odpowiada czymś takim adminbin Cpanel/hooks2/...: exit 255. Plik acme.sh nadal zgłasza komunikat „wdrożono pomyślnie” – i zazwyczaj jest to poprawne. W tym przypadku hook kończy się niepowodzeniem z powodu kolejnego kroku – takiego jak wewnętrzne powiadomienie lub synchronizacja przez dostawcę hostingu – a nie z powodu samej instalacji.
W przypadku domen ze znakami umlaut, acme.sh przechowuje certyfikat wewnętrznie w formacie Punycode (xn--…), podczas gdy autodopasowanie hooka porównuje format Unicode. Wynik: „wdrożono w 0 z 0 witryn” – nic nie zostało zainstalowane. Problem w tym, że acme.sh również raportuje tutaj „Sukces”, więc błąd można łatwo przeoczyć. Rozwiązanie: pracuj bezpośrednio z domeną Punycode i wyłącz autodopasowanie.:
# Punycode-Form der Domain vorher ermitteln (z. B. via idn-Tool oder Online-Konverter)
acme.sh --issue -d xn--<punycode> -d www.xn--<punycode> -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--<punycode> --deploy-hook cpanel_uapi
W przypadku dostępu SSH nie potrzebujesz AutoSSL: acme.sh wystawia certyfikat, który cpanel_uapiNarzędzie -Hook instaluje usługę, a dołączone zadanie cron automatycznie ją aktualizuje. Po skonfigurowaniu, bezpłatna usługa HTTPS działa nieprzerwanie i samodzielnie. Ci, którzy zainwestują początkowy wysiłek, oszczędzają sobie każdego ręcznego odnawiania w przyszłości – i mogą rozszerzyć to samo rozwiązanie na dowolną dodatkową domenę na tym samym koncie jednym poleceniem.