คุณกังวลหรือไม่ว่าใบรับรอง wildcard ของ letencrypt ไม่สามารถต่ออายุ (ต่ออายุ) โดยอัตโนมัติโดยใช้เครื่องมือ certbot ได้ เครื่องมือนี้สามารถช่วยได้!
โดยไม่คำนึงถึงการสมัครหรือการต่ออายุ ตราบใดที่เป็นใบรับรองไวด์การ์ด ชื่อโดเมนของผู้สมัครสามารถตรวจสอบได้โดยใช้ dns-01 เท่านั้น ซึ่งหมายความว่าผู้ดำเนินการ Certbot จะต้องเพิ่มบันทึก DNS TXT ด้วยตนเอง
หากคุณเขียน Cron (เช่น 1 1 */1 * * root certbot-auto renew) เพื่อต่ออายุใบรับรองไวด์การ์ดโดยอัตโนมัติ Cron จะไม่สามารถเพิ่มบันทึก TXT ได้โดยอัตโนมัติ ดังนั้นการดำเนินการต่ออายุจะล้มเหลว
certbot จัดเตรียมตะขอที่ให้คุณเขียนสคริปต์ Shell เพื่อเรียกอินเทอร์เฟซ API ของผู้ให้บริการ DNS และเพิ่มบันทึก TXT แบบไดนามิก ซึ่งช่วยลดความจำเป็นในการแทรกแซงด้วยตนเอง
ในบรรดาตัวอย่างปลั๊กอินและตะขอที่ certbot จัดทำอย่างเป็นทางการไม่มีตัวอย่างสำหรับเซิร์ฟเวอร์ DNS ในประเทศ ดังนั้นฉันจึงเขียนเครื่องมือดังกล่าวซึ่งปัจจุบันรองรับ Alibaba Cloud DNS , Tencent Cloud DNS , Huawei Cloud NDS และ GoDaddy (certbot ไม่มี ปลั๊กอินเทียบเท่าอย่างเป็นทางการ)
มีการรวม PR หลายรายการเข้าด้วยกันและยังไม่ได้รับการทดสอบ หากคุณมีคำถามใดๆ โปรดให้ข้อเสนอแนะ ขอบคุณ!
1: ดาวน์โหลด
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2: การกำหนดค่า
(1)โดเมน.ini
หากไฟล์ domain.ini ไม่มีชื่อโดเมนรากของคุณ โปรดเพิ่มด้วยตนเอง
(2) คีย์ DNS API:
คีย์ API นี้หมายความว่าอย่างไร เนื่องจากคุณต้องดำเนินการบันทึก Alibaba Cloud DNS และ Tencent Cloud DNS ผ่าน API คุณจึงต้องได้รับคีย์ API จากผู้ให้บริการชื่อโดเมน จากนั้นกำหนดค่าในไฟล์ au.sh:
(3) เลือกสภาพแวดล้อมการทำงาน
ปัจจุบัน เครื่องมือนี้รองรับสภาพแวดล้อมการทำงานและสถานการณ์จำลองห้าแบบ ซึ่งเรียกผ่านไฟล์ hook และพารามิเตอร์:
เลือก hook shell ใดๆ (รวมถึงพารามิเตอร์ที่เกี่ยวข้อง) ตามสภาพแวดล้อมเซิร์ฟเวอร์ของคุณและผู้ให้บริการชื่อโดเมน ดูด้านล่างสำหรับการใช้งานเฉพาะ
3: สมัครขอใบรับรอง
ทดสอบข้อผิดพลาด:
$ ./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"
แก้ไขจุดบกพร่อง: คุณอาจประสบปัญหาต่างๆ มากมายเมื่อใช้งาน DNS API เช่น สิทธิ์โทเค็น API ไม่เพียงพอ หากคุณพบปัญหาที่เกี่ยวข้อง คุณสามารถตรวจสอบ /var/log/certd.log ได้
คำอธิบายที่สำคัญ: --manual-auth-hook และ --manual-cleanup-hook มีพารามิเตอร์สามตัว:
ตัวอย่างเช่น หากคุณต้องการเลือกสภาพแวดล้อม Python คุณสามารถเปลี่ยนอินพุต --manual-auth-hook เป็น "/script directory/au.sh python aly add" และ --manual-cleanup-hook input เป็น "/ ไดเรกทอรีสคริปต์/au.sh python สะอาดหมดจด"
หลังจากยืนยันว่าถูกต้องแล้ว ให้รันจริง (ลบพารามิเตอร์ --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"
คำอธิบายพารามิเตอร์ (คุณไม่จำเป็นต้องกังวล):
หากคุณต้องการสมัครใบรับรองไวด์การ์ดสำหรับชื่อโดเมนหลายชื่อ (รวมกันเป็นใบรับรองเดียว หรือที่เรียกว่า ใบรับรองไวด์การ์ด SAN ) เพียงป้อนพารามิเตอร์ -d หลายรายการโดยตรง ตัวอย่างเช่น:
$ ./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: ต่ออายุใบรับรองทั้งหมดในเครื่อง
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
2: ต่ออายุใบรับรองบางอย่าง
ขั้นแรกให้ดูว่ามีใบรับรองจำนวนเท่าใดในเครื่อง:
$ ./certbot-auto certificates
คุณสามารถดูใบรับรองได้มากมายดังแสดงในรูป:
จำชื่อใบรับรอง เช่น simplehttps.com จากนั้นเรียกใช้การรีเฟรชคำสั่งต่อไปนี้:
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
แก้ไขไฟล์ /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"
หากเครื่อง Certbot เป็นเครื่องเดียวกับที่เรียกใช้บริการบนเว็บ (เช่น nginx, apache) หลังจากต่ออายุใบรับรองสำเร็จแล้ว คุณสามารถเริ่มเว็บเซิร์ฟเวอร์ที่เกี่ยวข้องและเรียกใช้ crontab ต่อไปนี้:
# 注意只有成功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"
หมายเหตุ: ขอแนะนำให้เรียกใช้วิธีนี้ในเครื่องเดียวเท่านั้น หากคุณต้องการซิงโครไนซ์ใบรับรองกับเว็บเซิร์ฟเวอร์หลายเครื่อง คุณต้องมีโซลูชันอื่น ขณะนี้อยู่ระหว่างการพัฒนา จุดประสงค์หลักคือการซิงโครไนซ์ใบรับรองกับเซิร์ฟเวอร์คลัสเตอร์
รหัส QR ของบัญชีอย่างเป็นทางการ:
"การแนะนำ HTTPS แบบเจาะลึก: จากหลักการสู่การปฏิบัติ" รหัส QR: