การเตรียมการยุ่งยากหน่อย เตรียมแค่ครั้งเดียวต่ออายุใบรับรองครั้งต่อๆไปจะเร็วและง่าย
- ต้องติดตั้ง docker ก่อน
- script ใช้งานได้จริงใน macOS และ Ubuntu ไม่ได้ทดสอบกับ Git bash
- วิธีเอา domain ไปใช้ใน cloudflare ไม่ได้บอกเอาไว้นะ
1 สร้าง folder โครงสร้างแบบนี้ ผมจะตั้งตาม domain ที่จะขอเลย
ตัวอย่าง
corncord.co
|-- certs
|-- dns
สร้างไฟล์ dns-cloudflare.ini
ภายใต้ dns folder
เนื้อหาของไฟล์ dns-cloudflare.ini
# Cloudflare API credentials
dns_cloudflare_email = account-with-cloudflare@gmail.com
dns_cloudflare_api_key = f728c1d414de6f0696a00b7a283d5bda12345
dns_cloudflare_email คือ email ที่ใช้สมัครกับ cloudflare ซึ่งทำการเพิ่ม domain ที่จะเอามาขอ certificate เอาไว้แล้ว
dns_cloudflare_api_key คือ Global API key ของ account เราใน cloudflare
login เข้า cloudflare ไปหา API ได้ตามภาพด้านล่าง
2 สร้างไฟล์ script จะได้ไม่ต้องพิมพ์คำสั่งยาวๆ
สร้าง request.sh ใต้ folder corncord.co เลย มีเนื้อหาดังนี้
request.sh
sudo docker run -it --rm -v "${PWD}/dns:/dns:ro" \
-v "${PWD}/certs:/etc/letsencrypt:z" certbot/dns-cloudflare certonly \
--email account-with-cloudflare@gmail.com \
--agree-tos --no-eff-email \
-d *.corncord.co --dns-cloudflare \
--dns-cloudflare-credentials /dns/dns-cloudflare.ini
ให้แก้ไข account-with-cloudflare@gmail.com และ *.corncord.co เป็นของตัวเองซะ เช่น sirita@gmail.com และ corncord.co เป็นต้น
3 เปลี่ยน mode request.sh ให้ execute ได้
chmod +x request.sh
4 execute script
./request.sh
เมื่อขอสำเร็จแล้วไฟล์ที่เกี่ยวข้องกับใบรับรองทั้งหมดจะอยู่ภายใต้ folder certs
ครั้งต่อๆไปเมื่อได้รับ email แจ้งเตือนใบรับรองจะหมดอายุ ก็แค่มารัน script ตัวนี้ แล้วเอาไฟล์ใบรับรองไปใช้ได้เลย