Mari Sulitkan DomainFactory

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 – memperbaharui secara automatik, sepenuhnya tanpa AutoSSL.


HTTPS telah lama menjadi mandatori. 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> <user>@example.com

2. Pasang acme.sh

curl https://get.acme.sh | sh -s email=me@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. Penerbitnya ialah "Let's Encrypt," dan tarikh tamat tempohnya adalah 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 betul. Dalam kes ini, hook gagal disebabkan oleh langkah seterusnya (seperti kerja pemberitahuan atau penyegerakan dalaman oleh penyedia hosting), bukan pemasangan sebenar.

Untuk domain dengan umlaut, acme.sh menyimpan sijil secara dalaman dalam bentuk Punycode (xn--…), sementara pemadanan automatik hook membandingkan borang Unicode. Keputusan: "dikerahkan ke 0 daripada 0 tapak" – tiada apa yang dipasang. Perkara yang berbahaya ialah acme.sh juga melaporkan "Kejayaan" di sini, jadi ralat mudah diabaikan. Penyelesaian: Bekerja secara langsung dengan domain Punycode dan lumpuhkan pemadanan automatik.:

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 mengeluarkan sijil, yang mana cpanel_uapi-Hook memasangnya, dan tugas cron yang disertakan memastikan ia dikemas kini secara automatik. Setelah disediakan, perkhidmatan HTTPS percuma berjalan secara berterusan. Mereka yang melaburkan usaha awal 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.

Belakang