SSL Auto Renew คือการให้ระบบขอและติดตั้งใบรับรอง SSL/TLS ใหม่เองก่อนใบเดิมหมดอายุ ผ่านโปรโตคอล ACME โดยไม่ต้องมีคนกดต่ออายุ ปัญหาคือ auto-renew ส่วนใหญ่ไม่ได้ "พัง" ที่ตัวแผงควบคุม แต่ล้มเหลวเพราะ DNS, Firewall หรือ Proxy ที่อยู่ระหว่างทาง และมักไม่มีใครรู้จนเว็บขึ้นคำเตือนไม่ปลอดภัย
บทความนี้สรุปจุดที่ทำให้ SSL Auto Renew บน Hosting ไม่ผ่านบ่อยที่สุด พร้อมคำสั่งตรวจที่ใช้ได้ทันที เหมาะสำหรับคนดูแลระบบและฟรีแลนซ์ที่ดูแลเว็บลูกค้าหลายโดเมน
ทำไมต้องจัดการ SSL Auto Renew ตอนนี้
CA/Browser Forum ผ่านมติ Ballot SC-081 ที่ลดอายุสูงสุดของใบรับรอง TLS แบบเป็นขั้นบันได ดังนี้
| ตั้งแต่วันที่ | อายุใบรับรองสูงสุด | ระยะใช้ผลยืนยันโดเมนซ้ำ (DCV reuse) |
|---|---|---|
| 15 มี.ค. 2026 | 200 วัน | 200 วัน |
| 15 มี.ค. 2027 | 100 วัน | 100 วัน |
| 15 มี.ค. 2029 | 47 วัน | 10 วัน |
[ตรวจสอบ: ยืนยันตารางกับประกาศ Ballot SC-081 บน cabforum.org ก่อนเผยแพร่]
ผลในทางปฏิบัติคือ SSL Auto Renew กลายเป็นเรื่องจำเป็น ใบรับรองที่ต่ออายุด้วยมือจะเสี่ยงหมดอายุบ่อยขึ้น และใบรับรองแบบเสียเงินที่ซื้อเป็นรายปีก็ต้อง reissue ถี่ขึ้นเช่นกัน ส่วน Let's Encrypt ซึ่งปัจจุบันออกใบรับรองอายุ 90 วัน ได้ประกาศแผนลดอายุลงอีก [ตรวจสอบ: ไทม์ไลน์ใบรับรอง 45 วันของ Let's Encrypt] เมื่อรอบต่ออายุถี่ขึ้น โอกาสที่ auto-renew จะล้มเหลวในรอบใดรอบหนึ่งก็สูงขึ้นตาม หากยังพึ่งการต่ออายุด้วยมือหรือไม่มีระบบแจ้งเตือน ความเสี่ยงจะเพิ่มทุกปี
ถ้ายังไม่ได้อ่านภาพรวมของการเปลี่ยนแปลงนี้ ดูได้ที่บทความ SSL Certificate อายุสั้นลงเหลือ 200 วัน ธุรกิจต้องเตรียมอะไรบ้าง
SSL Auto Renew ทำงานอย่างไรบน Hosting
แผงควบคุม Hosting อย่าง Plesk หรือ DirectAdmin มี ACME client ในตัว เมื่อใกล้ถึงรอบ ระบบจะทำงานตามลำดับนี้
- ส่งคำขอใบรับรองใหม่ไปยัง CA เช่น Let's Encrypt
- CA ส่ง challenge กลับมาให้พิสูจน์ว่าเราควบคุมโดเมนจริง
- แผงควบคุมวางไฟล์ token (HTTP-01) หรือสร้าง TXT record (DNS-01)
- CA เข้ามาตรวจ token จากหลายตำแหน่งบนอินเทอร์เน็ต
- ถ้าผ่าน CA ออกใบรับรอง และแผงควบคุมติดตั้งให้เว็บเซิร์ฟเวอร์ใช้งานทันที
จุดสำคัญอยู่ที่ขั้นที่ 4 เพราะ CA ไม่ได้ตรวจจากในเซิร์ฟเวอร์ของเรา แต่ตรวจจากภายนอกผ่าน DNS และเส้นทางเครือข่ายจริง อะไรก็ตามที่ขวางทางนี้จะทำให้ SSL Auto Renew ล้มเหลว รายละเอียดของ challenge แต่ละแบบอธิบายไว้ในเอกสาร Challenge Types ของ Let's Encrypt และมาตรฐาน ACME อยู่ใน RFC 8555
HTTP-01 กับ DNS-01 สำหรับ SSL Auto Renew ต่างกันอย่างไร
| ประเด็น | HTTP-01 | DNS-01 |
|---|---|---|
| วิธีพิสูจน์ | วางไฟล์ที่ /.well-known/acme-challenge/ ผ่านพอร์ต 80 |
สร้าง TXT record _acme-challenge |
| ออก Wildcard ได้ไหม | ไม่ได้ | ได้ |
| ต้องเปิดพอร์ต 80 | ต้อง | ไม่ต้อง |
| ต้องมี API ของ DNS | ไม่ต้อง | ต้อง ถ้าจะต่ออายุอัตโนมัติ |
| จุดที่มักพัง | Firewall, Redirect, Proxy | DNS อยู่คนละที่กับ Hosting |
SSL Auto Renew บน Shared Hosting ส่วนใหญ่ใช้ HTTP-01 เป็นค่าเริ่มต้น เพราะไม่ต้องตั้งค่าเพิ่ม แต่ถ้าต้องการใบรับรองแบบ Wildcard จำเป็นต้องใช้ DNS-01
7 สาเหตุที่ทำให้ SSL Auto Renew ล้มเหลว
1. AAAA record ชี้ไปผิดที่
เป็นสาเหตุที่ทำให้ SSL Auto Renew ล้มเหลวและหาเจอยากที่สุด Let's Encrypt จะเลือกเชื่อมต่อผ่าน IPv6 ก่อนเมื่อโดเมนมี AAAA record ถ้า AAAA ยังชี้ไปเซิร์ฟเวอร์เก่าหลังย้าย Hosting หรือชี้ไปเครื่องที่ไม่ได้ตอบไฟล์ challenge การตรวจจะไม่ผ่าน แม้ A record (IPv4) จะถูกต้องก็ตาม
2. Firewall หรือ Geo-blocking กันการเข้าถึงจากต่างประเทศ
ธุรกิจไทยหลายแห่งบล็อก IP ต่างประเทศเพื่อลดการโจมตี แต่ CA ปัจจุบันตรวจโดเมนจากหลายตำแหน่งในหลายภูมิภาค (Multi-Perspective Issuance Corroboration) ถ้าบล็อกทั้งหมดยกเว้นประเทศไทย การตรวจจากจุดอื่นจะล้มเหลว และ SSL Auto Renew จะไม่ผ่านทันที วิธีแก้คือยกเว้น path /.well-known/acme-challenge/ ออกจากกฎ Geo-blocking หรือเปลี่ยนไปใช้ DNS-01
3. Redirect หรือกฎใน .htaccess ขวาง challenge
Let's Encrypt ตาม Redirect ได้ แต่เฉพาะไปยังพอร์ต 80 หรือ 443 เท่านั้น ปัญหาเกิดเมื่อ
- Redirect ทั้งโดเมนไปโดเมนอื่นที่อยู่คนละเซิร์ฟเวอร์
- ปลั๊กอิน Maintenance Mode หรือ Security บน WordPress ตอบ 403/503 ให้ทุก path
- กฎ rewrite ส่งทุก request เข้า
index.phpจนไฟล์ token ถูกกลืน
เว็บ WordPress ที่ SSL Auto Renew เคยผ่านมาตลอด อาจเริ่มล้มเหลวหลังติดตั้งปลั๊กอินใหม่เพียงตัวเดียว
4. Cloudflare หรือ CDN อยู่ด้านหน้า
เมื่อเปิด Proxy (เมฆสีส้ม) บน Cloudflare คำขอของ CA จะผ่าน Cloudflare ก่อนถึง Hosting โดยทั่วไป HTTP-01 ยังผ่านได้ แต่จะล้มเหลวถ้าเปิดโหมดที่ท้าทายบอท เช่น Under Attack Mode หรือกฎ WAF ที่บล็อก request ที่ไม่ใช่เบราว์เซอร์ หากโดเมนอยู่หลัง CDN ควรสร้างกฎยกเว้น path ของ ACME ไว้ล่วงหน้า เพื่อให้ SSL Auto Renew ผ่านทุกรอบ
5. DNS อยู่คนละที่กับ Hosting
กรณีนี้กระทบใบรับรอง Wildcard โดยตรง ถ้าโดเมนใช้ DNS ของผู้ให้บริการภายนอก แผงควบคุม Hosting จะสร้าง TXT record เองไม่ได้ SSL Auto Renew จึงใช้ไม่ได้ และการต่ออายุกลายเป็นงานมือทุกรอบ ซึ่งจะเป็นภาระหนักขึ้นมากเมื่อรอบสั้นลงเหลือ 100 วันและ 47 วัน ทางออกคือย้าย DNS มาไว้ที่ Hosting หรือใช้ ACME client ที่รองรับ API ของผู้ให้บริการ DNS นั้น
6. CAA record ไม่อนุญาต CA ที่ใช้อยู่
CAA record (RFC 8659) ระบุว่า CA ไหนออกใบรับรองให้โดเมนได้ ถ้าเคยตั้งไว้ให้เฉพาะ CA ของใบรับรองแบบเสียเงิน แล้วต่อมาเปลี่ยนมาใช้ Let's Encrypt การออกใบรับรองจะถูกปฏิเสธ และ SSL Auto Renew จะล้มเหลวจนกว่าจะเพิ่ม letsencrypt.org ใน CAA
7. ชนเพดาน Rate Limit
การกดออกใบรับรองซ้ำหลายครั้งระหว่างแก้ปัญหา อาจทำให้ชนเพดานของ Let's Encrypt เช่น จำนวนใบรับรองซ้ำต่อสัปดาห์ หรือจำนวนครั้งที่ยืนยันล้มเหลวต่อชั่วโมง ตัวเลขล่าสุดดูได้ที่ Rate Limits ของ Let's Encrypt แนะนำให้หาสาเหตุให้เจอก่อนแล้วค่อยลองใหม่ และใช้ Staging environment ระหว่างทดสอบ
ขั้นตอนตรวจ SSL Auto Renew ด้วยตัวเอง
เมื่อสงสัยว่า SSL Auto Renew ของโดเมนไหนมีปัญหา ให้ไล่ตรวจตาม 4 ขั้นตอนนี้
ขั้นตอนที่ 1: ตรวจวันหมดอายุจริงของใบรับรอง
อย่าดูแค่หน้าแผงควบคุม ให้ตรวจใบรับรองที่เว็บเซิร์ฟเวอร์ส่งออกมาจริง
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
ดูค่า notAfter และตรวจว่า SAN ครอบคลุมทุกชื่อที่ใช้จริง เช่น www และ mail
ขั้นตอนที่ 2: ตรวจ DNS ทั้ง A, AAAA และ CAA
dig +short A example.com
dig +short AAAA example.com
dig +short CAA example.com
AAAA ต้องว่างหรือชี้ไปเซิร์ฟเวอร์เดียวกับ Hosting และ CAA ต้องว่างหรืออนุญาต CA ที่ใช้อยู่
