ต่ออายุ Let’s Encrypt certificate แบบสดๆไม่ต้องดับเว็บ

ใครที่ใช้ certbot ในการสร้าง SSL certificate ให้เว็บแล้วเจอปัญหาหมดอายุทุก 3 เดือน รันไปแป๊บๆหมดอายุอีกละ ตอนต่ออายุก็ต้องดับเว็บลงชั่วคราวเพื่อให้มัน generate ให้ใหม่ก่อน ค่อยรันเว็บขึ้นมาอีกที

Photo by michael podger on Unsplash

มันมีวิธีต่ออายุแบบไม่ต้องดับเว็บด้วยนะ แต่เดี๋ยวก่อน ก่อนจะไปต่อผมขอทึกทักเอาซัก 2–3 เรื่อง คือ
– ผู้อ่านรู้เรื่องการคอนฟิก nginx และการสั่งให้มันทำงาน
– เครื่องที่จะทำการต่ออายุ มี docker ที่พร้อมทำงาน
– เครื่องที่จะทำการต่ออายุ มีการคอนฟิกใช้งาน letsencrypt อย่างถูกต้องอยู่แล้ว

อันดับแรก (ถ้ายังไม่ได้ทำ)คอนฟิก nginx ที่ port 80 ให้มี location นี้ และให้มันชี้ไปที่ port ของ certbot ตัวที่เราจะรัน แก้ไขเสร็จแล้ว reload nginx ด้วยนะ

location ~ ^\/.well-known\/acme-challenge {
proxy_pass http://:81; #อย่าลืมใส่ไอพีให้ถูก
}

หรืออันที่ผมใช้งานจริงอยู่ ก็ตามภาพนี้

ตัวอย่าง ที่ใช้งานจริง

อันดับสอง run shell script สำหรับ generate certificate โดเมนที่เราต้องการ สมมุติโค้ดข้างล่าง DOMAIN=chet.printhong.net

docker run -it --rm -p 81:80 \
-v "/etc/letsencrypt:/etc/letsencrypt" \
-v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
certbot/certbot certonly --standalone -d ${DOMAIN}

อันดับสุดท้าย reload nginx ครับ จบการต่ออายุ SSL certificate แบบสด ต้องมาเขียนอะไรแบบนี้เขินเหมือนกันนะ