Sesetengah pakej hosting kongsi dengan cPanel tidak menawarkan AutoSSL – atau hanya dalam pelan berharga lebih tinggi. Akibatnya, anda tidak boleh mengeluarkan sijil Let's Encrypt percuma melalui antara muka cPanel dan semua domain tersekat dengan sijil yang ditandatangani sendiri . Pelayar memaparkan halaman sebagai "tidak selamat". Penyelesaiannya: dapatkan sijil sendiri menggunakan acme.sh dan pasangkannya melalui cPanel UAPI. Ia akan diperbaharui secara automatik, tanpa memerlukan AutoSSL.
HTTPS kini wajib digunakan: lebih mengecewakan lagi apabila pakej hosting anda sendiri tidak menawarkan cara yang mudah untuk mendapatkan sijil percuma. Ini berlaku lebih kerap daripada yang anda sangkakan – contohnya, dengan pakej peringkat permulaan yang murah atau selepas perubahan pelan di mana sijil tiba-tiba tidak lagi disertakan. Walau bagaimanapun, jurang ini boleh ditutup secara elegan dan kekal hanya dengan beberapa baris kod dalam shell – proses lengkap diterangkan di bawah.
1. Log masuk melalui SSH
ssh -p <port> <cpanel-user>@<host>
2. Pasang acme.sh
curl https://get.acme.sh | sh -s email=du@example.com
source ~/.bashrc
3. Tetapkan Let's Encrypt sebagai CA
acme.sh --set-default-ca --server letsencrypt
4. Mengeluarkan sijil
acme.sh --issue -d example.com -d www.example.com -w ~/public_html
5. Pasang ke dalam cPanel
acme.sh --deploy -d example.com --deploy-hook cpanel_uapi
6. Semak
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 sijil kepada hos maya yang sesuai melalui UAPI. Tetapan penggunaan disimpan – mulai sekarang, cron akan memperbaharui dan memasang semuanya secara automatik sebelum tamat tempoh. Penerbit hendaklah "Let's Encrypt" dan tarikh tamat tempoh hendaklah kira-kira 90 hari pada masa hadapan. Jika sijil lama yang ditandatangani sendiri masih muncul, muat semula keras dalam pelayar biasanya membantu – sijil sebelumnya mungkin disimpan dalam cache buat sementara waktu.
Sesetengah hos menjalankan cangkuk cPanel mereka sendiri. install_ssl dan membalas dengan sesuatu seperti adminbin Cpanel/hooks2/...: exit 255. acme.sh masih melaporkan "berjaya digunakan" – dan itu biasanya betul. Dalam kes ini, hook gagal disebabkan oleh langkah seterusnya – seperti tugas pemberitahuan atau penyegerakan dalaman oleh penyedia hosting – bukan pemasangan sebenar.
Untuk domain dengan umlaut, acme.sh menyimpan sijil secara dalaman dalam bentuk Punycode (xn--…), manakala pemadanan automatik hook membandingkan borang Unicode. Keputusan: "dikerahkan ke 0 daripada 0 tapak" – tiada apa yang dipasang. Bahagian yang rumit: acme.sh juga melaporkan "Kejayaan" di sini, jadi ralat mudah diabaikan. Penyelesaian: bekerjasama secara langsung dengan domain Punycode dan lumpuhkan pemadanan automatik.:
# 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
Dengan akses SSH, anda tidak memerlukan AutoSSL: acme.sh mengeluarkan sijil, yang mana cpanel_uapi-Hook memasangnya, dan tugas cron yang disertakan memastikan ia dikemas kini secara automatik. Setelah disediakan, HTTPS percuma berjalan secara kekal dengan sendirinya. Sesiapa yang melaburkan usaha awal akan menjimatkan setiap pembaharuan manual pada masa hadapan – dan boleh melanjutkan penyelesaian yang sama ke mana-mana domain tambahan dalam akaun yang sama dengan satu arahan tambahan.