Apakah Anda khawatir sertifikat wildcard letencrypt tidak dapat diperpanjang (diperbarui) secara otomatis menggunakan alat certbot? Alat ini dapat membantu!
Terlepas dari permohonan atau perpanjangan, selama itu adalah sertifikat wildcard, nama domain pemohon hanya dapat diverifikasi menggunakan dns-01, yang berarti operator certbot harus menambahkan data TXT DNS secara manual.
Jika Anda menulis Cron (seperti 1 1 */1 * * root certbot-auto renew) untuk memperbarui sertifikat wildcard secara otomatis, Cron tidak dapat secara otomatis menambahkan data TXT, sehingga operasi pembaruan akan gagal.
certbot menyediakan pengait yang memungkinkan Anda menulis skrip Shell dan membiarkan skrip tersebut memanggil antarmuka API penyedia layanan DNS untuk menambahkan data TXT secara dinamis, sehingga intervensi manual tidak diperlukan.
Di antara contoh plug-in dan hook yang secara resmi disediakan oleh certbot, tidak ada contoh untuk server DNS domestik, jadi saya menulis alat seperti itu, yang saat ini mendukung Alibaba Cloud DNS , Tencent Cloud DNS , Huawei Cloud NDS , dan GoDaddy (certbot tidak memiliki setara resmi.
Beberapa PR telah digabungkan baru-baru ini dan belum diuji. Jika Anda memiliki pertanyaan, silakan beri saya masukan. Terima kasih!
1: Unduh
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2: Konfigurasi
(1)domain.ini
Jika file domain.ini tidak berisi nama domain root Anda, silakan tambahkan sendiri.
(2) Kunci API DNS:
Apa arti kunci API ini? Karena Anda perlu mengoperasikan catatan Alibaba Cloud DNS dan Tencent Cloud DNS melalui API, Anda perlu mendapatkan kunci API dari penyedia layanan nama domain, lalu mengonfigurasinya di file au.sh:
(3) Pilih lingkungan pengoperasian
Saat ini, alat tersebut mendukung lima lingkungan dan skenario operasi, yang dipanggil melalui file dan parameter hook:
Pilih shell kait apa pun (termasuk parameter terkait) sesuai dengan lingkungan server Anda dan penyedia layanan nama domain Lihat di bawah untuk penggunaan spesifik.
3: Ajukan permohonan sertifikat
Uji kesalahan:
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Debug: Anda mungkin mengalami serangkaian masalah saat mengoperasikan API DNS, seperti izin token API yang tidak mencukupi. Jika Anda mengalami masalah terkait, Anda dapat memeriksa /var/log/certd.log.
Penjelasan penting: --manual-auth-hook dan --manual-cleanup-hook memiliki tiga parameter:
Misalnya, jika Anda ingin memilih lingkungan Python, Anda dapat mengubah masukan --manual-auth-hook menjadi "/script direktori/au.sh python aly add", dan masukan --manual-cleanup-hook menjadi "/ direktori skrip/au.sh python aly clean"
Setelah dipastikan benar, jalankan sebenarnya (hapus parameter --dry-run):
# 实际申请
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Penjelasan parameter (Anda tidak perlu khawatir):
Jika Anda ingin mengajukan sertifikat wildcard untuk beberapa nama domain (digabungkan menjadi satu sertifikat, disebut juga sertifikat wildcard SAN ), cukup masukkan beberapa parameter -d secara langsung, misalnya:
$ ./certbot-auto certonly -d *.example.com -d *.example.org -d www.example.cn --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
1: Perpanjang semua sertifikat pada mesin
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
2: Perpanjang sertifikat tertentu
Pertama lihat berapa banyak sertifikat yang ada di mesin:
$ ./certbot-auto certificates
Anda dapat melihat banyak sertifikat, seperti yang ditunjukkan pada gambar:
Ingat nama sertifikat, seperti simplehttps.com, lalu jalankan perintah refresh berikut:
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Edit file /etc/crontab:
#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Jika mesin certbot adalah mesin yang sama yang menjalankan layanan web (seperti nginx, Apache), maka setelah berhasil memperbarui sertifikat, Anda dapat memulai server web terkait dan menjalankan crontab berikut:
# 注意只有成功renew证书,才会重新启动nginx
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --deploy-hook "service nginx restart" --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Catatan: Disarankan untuk menjalankan cara ini hanya pada satu mesin. Jika Anda ingin menyinkronkan sertifikat ke beberapa server web, Anda memerlukan solusi lain. Saat ini sedang dalam pengembangan, tujuan utamanya adalah untuk menyinkronkan sertifikat ke server cluster.
Kode QR akun resmi:
Kode QR "Pengantar mendalam tentang HTTPS: dari prinsip hingga praktik":