Beberapa paket hosting bersama dengan cPanel tidak menawarkan AutoSSL atau hanya menawarkannya dengan harga lebih tinggi. Hasilnya: Anda tidak dapat menerbitkan sertifikat Let's Encrypt gratis melalui antarmuka cPanel, dan semua domain terjebak pada sertifikat yang ditandatangani sendiri. Browser menampilkan halaman sebagai “tidak aman”. Jalan keluarnya: dapatkan sendiri sertifikatnya dengan acme.sh dan instal melalui cPanel UAPI - diperpanjang secara otomatis, tanpa AutoSSL.
HTTPS sudah lama menjadi wajib. Oleh karena itu, akan sangat menjengkelkan jika paket hosting Anda sendiri tidak menawarkan cara mudah untuk mendapatkan sertifikat gratis. Hal ini lebih sering terjadi daripada yang Anda bayangkan, misalnya pada paket entry-level yang murah atau setelah perubahan paket di mana sertifikat tiba-tiba tidak lagi disertakan. Namun, celah ini dapat ditutup secara elegan dan permanen hanya dengan beberapa baris kode di shell – proses lengkapnya dijelaskan di bawah ini.
1. Masuk melalui SSH
ssh -p <port> <user>@example.com
2. Instal acme.sh
curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc
3. Tetapkan Let's Encrypt sebagai CA (Certificate Authority)
acme.sh --set-default-ca --server letsencrypt
4. Menerbitkan sertifikat
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
5. Instal ke cPanel
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
6. Periksa
uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -issuer -dates
Hook menulis sertifikat ke vHost yang sesuai melalui UAPI. Pengaturan penerapan disimpan - mulai sekarang cron memperbarui dan menginstal semuanya secara independen sebelum habis masa berlakunya. Penerbitnya adalah “Let’s Encrypt” dan tanggal kedaluwarsanya sekitar 90 hari ke depan. Jika sertifikat lama yang ditandatangani sendiri muncul, memuat ulang secara paksa di browser biasanya membantu - sertifikat sebelumnya dapat disimpan sementara.
Beberapa penyedia hosting menjalankan cPanel hook mereka sendiri. install_ssl dan menjawab dengan sesuatu seperti adminbin Cpanel/hooks2/...: exit 255. acme.sh masih melaporkan "berhasil diterapkan" – dan itu benar. Dalam kasus ini, pengait gagal karena langkah selanjutnya (misal, tugas pemberitahuan atau sinkronisasi internal dari host), bukan karena instalasi sebenarnya.
Untuk domain dengan umlaut, acme.sh menyimpan sertifikat secara internal dalam format Punycode (xn--…), sedangkan pencocokan otomatis hook membandingkan bentuk Unicode. Hasil: “diterapkan ke 0 dari 0 situs” – tidak ada yang diinstal. Hal yang rumit adalah acme.sh juga melaporkan "Sukses" di sini, sehingga kesalahannya mudah diabaikan. Solusi: Bekerja langsung dengan domain Punycode dan matikan mode otomatis:
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
Dengan akses SSH, Anda tidak memerlukan AutoSSL: acme.sh menerbitkan sertifikat, yang cpanel_uapiOpsi -Hook akan menginstalnya, dan tugas cron yang disertakan akan memperbaruinya secara otomatis. Setelah diatur, layanan HTTPS gratis akan berjalan terus menerus dengan sendirinya. Mereka yang berinvestasi di awal akan menghemat waktu perpanjangan manual di masa mendatang – dan dapat memperluas solusi yang sama ke domain tambahan apa pun di akun yang sama dengan satu perintah.