ฉันใช้certbot
--webroot
ปลั๊กอินและcertbot renew
ต่ออายุใบรับรองซึ่งใช้งานได้ แต่ดูเหมือนว่าhttpd
แคชใบรับรองและไม่ "เห็น" ว่ามีการอัปเดต
มีสัญญาณhttpd
ให้โหลดใบรับรองซ้ำหรือไม่
ps ฉันไม่ต้องการรีสตาร์ทhttpd
เพื่อหลีกเลี่ยงการหยุดทำงาน
ฉันใช้certbot
--webroot
ปลั๊กอินและcertbot renew
ต่ออายุใบรับรองซึ่งใช้งานได้ แต่ดูเหมือนว่าhttpd
แคชใบรับรองและไม่ "เห็น" ว่ามีการอัปเดต
มีสัญญาณhttpd
ให้โหลดใบรับรองซ้ำหรือไม่
ps ฉันไม่ต้องการรีสตาร์ทhttpd
เพื่อหลีกเลี่ยงการหยุดทำงาน
คำตอบ:
ในการที่httpd
จะสังเกตเห็นใบรับรองใหม่คุณต้องขอให้มันทำ "การรีสตาร์ทที่ดี " จากเอกสาร:
สัญญาณ USR1 หรือสัญญาณรบกวนทำให้กระบวนการผู้ปกครองแนะนำให้เด็ก ๆ ออกจากการร้องขอปัจจุบันของพวกเขา (หรือออกทันทีถ้าพวกเขาไม่ได้ให้บริการอะไร) พาเรนต์อ่านไฟล์คอนฟิกูเรชันอีกครั้งและเปิดล็อกไฟล์อีกครั้ง เมื่อเด็กแต่ละคนเสียชีวิตผู้ปกครองจะแทนที่ด้วยเด็กจากรุ่นใหม่ของการกำหนดค่าซึ่งเริ่มให้บริการการร้องขอใหม่ทันที
การรีสตาร์ทที่ดีดังกล่าวจะไม่ทำให้เครื่องหยุดทำงาน
เพื่อให้ได้รับ letencrypt / certbot เพื่อเริ่มต้นการรีสตาร์ทอย่างงดงามให้ใช้--post-hook
อาร์กิวเมนต์ อาร์กิวเมนต์นี้จะเรียกใช้คำสั่งหนึ่งครั้งหากพยายามต่ออายุใบรับรองใด ๆ จากเอกสาร :
คำสั่งที่จะรันในเชลล์หลังจากพยายามขอรับ / ต่ออายุใบรับรอง สามารถใช้เพื่อปรับใช้ใบรับรองที่ต่ออายุหรือเพื่อรีสตาร์ทเซิร์ฟเวอร์ใด ๆ ที่ถูกหยุดโดย --pre-hook สิ่งนี้จะทำงานเฉพาะเมื่อมีความพยายามในการขอรับ / ต่ออายุใบรับรอง (ค่าเริ่มต้น: ไม่มี)
ดังนั้นคำสั่งที่คุณต้องการคือ
certbot renew --post-hook "apachectl graceful"
หรือถ้าทำงานจากงาน cron
certbot renew --quiet --post-hook "apachectl graceful"
(ขอบคุณ @RustyX สำหรับความช่วยเหลือเกี่ยวกับคำตอบนี้)
--post-hook
ทริกเกอร์เฉพาะในกรณีที่มีการต่ออายุใบรับรอง หากไม่จำเป็นต้องต่ออายุก็ไม่ได้เรียก
--post-hook
คำสั่งจะรันต่อเมื่อมีการพยายามต่ออายุ (แต่ไม่ใช่ถ้าใบรับรองยังคงใช้ได้และข้ามการต่ออายุ) --deploy-hook
จะดำเนินการเฉพาะในกรณีการต่ออายุก็ประสบความสำเร็จ
--deploy-hook
ถูกเพิ่มในเวอร์ชัน 0.17 ซึ่งเปิดตัวในเดือนกรกฎาคม 2017 หลังจากคำตอบและความคิดเห็นของคุณด้านบน