SSL Certificate 19 ต.ค. 2026 อ่าน 8 นาที

ต่ออายุ SSL Certificate อัตโนมัติ
ไม่ให้หมดอายุโดยไม่รู้ตัว

ตั้งค่าครั้งเดียว ระบบจัดการให้ตลอด — ไม่ต้องกลัวเว็บแสดง "ไม่ปลอดภัย" กลางดึก

SSL Certificate renewal automatic setup

ทำไม SSL ถึงหมดอายุโดยไม่รู้ตัว

SSL Certificate มีอายุจำกัด — ปัจจุบัน browser รองรับสูงสุด 398 วัน (~13 เดือน) สำหรับ Commercial SSL และ 90 วันสำหรับ Let's Encrypt แต่เจ้าของเว็บจำนวนมากยังเจอปัญหา cert หมดอายุโดยไม่ตั้งใจ เพราะ:

ผลคือเว็บแสดง "Your connection is not private" ผู้ใช้เห็นหน้าเตือนสีแดง ไม่กล้าเข้า ธุรกิจเสียหายทันที

สถิติน่าสนใจ: จากรายงาน Venafi (2022) กว่า 80% ของ outage ที่เกิดจาก certificate มาจากการหมดอายุโดยไม่ได้วางแผน ทั้งที่ป้องกันได้ง่ายด้วย auto-renewal

Let's Encrypt + Certbot ต่ออายุอัตโนมัติ

Let's Encrypt เป็น CA ฟรีที่นิยมที่สุด ออก cert อายุ 90 วัน Certbot คือ client ที่ IETF แนะนำ รองรับ auto-renewal แบบสมบูรณ์

ติดตั้ง Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# หรือผ่าน snap (recommended)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

ขอ Certificate ครั้งแรก

# สำหรับ Nginx
sudo certbot --nginx -d example.com -d www.example.com

# สำหรับ Apache
sudo certbot --apache -d example.com -d www.example.com

# Standalone (ไม่มี web server)
sudo certbot certonly --standalone -d example.com

ทดสอบ Auto-renewal

# dry-run (ไม่ได้ cert จริง — ทดสอบ config)
sudo certbot renew --dry-run

# ถ้าขึ้น "Congratulations, all simulated renewals succeeded" = ผ่าน

Certbot ติดตั้ง systemd timer หรือ cron job ให้อัตโนมัติ รันทุก 12 ชั่วโมง จะต่ออายุเมื่อเหลือน้อยกว่า 30 วัน

DirectAdmin Auto-SSL สำหรับ Hosting

ถ้าใช้ Hosting ที่รัน DirectAdmin (เช่น AsiaGB Hosting) การต่ออายุ SSL ง่ายมาก — DirectAdmin มีฟีเจอร์ Auto-SSL ในตัว

เปิดใช้ Auto-SSL ใน DirectAdmin

  1. Login เข้า DirectAdmin Control Panel
  2. ไปที่ Advanced Features → SSL Certificates
  3. เลือก Free & automatic certificate from Let's Encrypt
  4. ติ๊ก Force SSL with https redirect
  5. กด Save

AsiaGB Hosting: เปิด Auto-SSL ให้โดย default สำหรับทุก Domain ที่ชี้มาที่ server ถูกต้อง ไม่ต้องตั้งค่าเพิ่ม cert ต่ออายุอัตโนมัติทุก 60 วัน

ตรวจสอบสถานะ SSL ใน DirectAdmin

# ดูวันหมดอายุ cert ที่ใช้อยู่
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

ตั้ง Cron Job ต่ออายุ SSL บน VPS

บน VPS ที่จัดการเอง ควรตั้ง cron job เพิ่มเติมให้มั่นใจ แม้ Certbot จะมี timer ให้แล้ว

# เปิด crontab editor
sudo crontab -e

# เพิ่มบรรทัดนี้ (รันทุกวัน 3:30 AM)
30 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx" 2>&1 | logger -t certbot-renew

อธิบาย flags สำคัญ

Flagความหมาย
--quietไม่แสดง output ถ้าไม่มีอะไรผิดปกติ
--post-hookรัน command หลังต่ออายุสำเร็จ (reload nginx)
logger -t certbot-renewบันทึก log เข้า syslog ไว้ตรวจสอบ

Wildcard Certificate กับ DNS Challenge

ถ้าต้องการ Wildcard SSL (*.example.com) ต้องใช้ DNS challenge แทน HTTP challenge:

# ขอ Wildcard cert ผ่าน DNS challenge
sudo certbot certonly --manual --preferred-challenges dns \
  -d "*.example.com" -d "example.com"

# สำหรับ auto-renewal ต้องใช้ DNS plugin เช่น Cloudflare
sudo certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
  -d "*.example.com"

ระบบแจ้งเตือนก่อน SSL หมดอายุ

แม้จะตั้ง auto-renewal แล้ว ควรมีการ monitor แยกต่างหากเพื่อรับรู้เมื่อมีปัญหา

วิธีตรวจสอบวันหมดอายุผ่าน Command Line

# ดูวันหมดอายุ
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -enddate

# ผลตัวอย่าง: notAfter=Jan 17 12:00:00 2027 GMT

Script แจ้งเตือนอัตโนมัติ

#!/bin/bash
# ssl-check.sh — รันทุกวันผ่าน cron ส่ง email ถ้าเหลือน้อยกว่า 30 วัน
DOMAIN="example.com"
DAYS_WARN=30
ALERT_EMAIL="[email protected]"

EXPIRY=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null \
  | openssl x509 -noout -enddate | cut -d= -f2)
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s)
TODAY_EPOCH=$(date +%s)
DAYS_LEFT=$(( ($EXPIRY_EPOCH - $TODAY_EPOCH) / 86400 ))

if [ $DAYS_LEFT -lt $DAYS_WARN ]; then
  echo "SSL for $DOMAIN expires in $DAYS_LEFT days!" | \
    mail -s "SSL ALERT: $DOMAIN expires soon" $ALERT_EMAIL
fi

เครื่องมือ Monitor ออนไลน์

เครื่องมือฟีเจอร์หลักราคา
UptimeRobotเช็ค SSL + uptime แจ้งเตือน email/SMSฟรี (พื้นฐาน)
SSL Labs Monitorเช็คคะแนน SSL grade อัตโนมัติฟรี
FreshpingMonitor ทุก 1 นาที แจ้งเตือน Slackฟรี 50 checks
Zabbix/GrafanaEnterprise monitoring ครบวงจรSelf-hosted ฟรี

SSL แบบ Paid เช่น RapidSSL, GeoTrust ต้องการกระบวนการ validate ใหม่ทุกรอบ แต่ยังสามารถทำ semi-auto ได้:

ขั้นตอนต่ออายุ Paid SSL

  1. สร้าง CSR ใหม่ บน server ก่อนหมดอายุ 30-60 วัน
  2. ยืนยันโดเมน ผ่าน email, DNS TXT record หรือ file upload
  3. ดาวน์โหลด cert ใหม่ และ install บน server
  4. Reload web server เพื่อใช้ cert ใหม่
# สร้าง CSR ใหม่บน server
openssl req -new -newkey rsa:2048 -nodes \
  -keyout example.com.key \
  -out example.com.csr \
  -subj "/C=TH/ST=Bangkok/L=Bangkok/O=My Company/CN=example.com"

ราคา SSL จาก AsiaGB (ต่อปี)

ประเภทรุ่นราคา/ปี
DV SSLRapidSSL1,000 บาท
DV WildcardRapidSSL Wildcard5,000 บาท
OV SSLGeoTrust True BusinessID4,000 บาท
EV SSLGeoTrust True BusinessID w/EV7,000 บาท

แก้ปัญหา Auto-renewal ไม่ทำงาน

ปัญหา: certbot renew ผิดพลาด

สาเหตุที่พบบ่อยที่สุด: DNS เปลี่ยน IP แต่ A record ยังชี้ไปที่ server เก่า หรือ firewall block port 80 ที่ Let's Encrypt ใช้ validate

# ดู log certbot
sudo journalctl -u certbot -n 50
# หรือ
sudo cat /var/log/letsencrypt/letsencrypt.log | tail -50

# ตรวจ port 80 เปิดอยู่ไหม
sudo ss -tlnp | grep :80
curl -I http://example.com/.well-known/acme-challenge/test 2>&1 | head -5

ปัญหาที่พบบ่อยและวิธีแก้

ปัญหาสาเหตุวิธีแก้
Connection refused port 80Firewall block หรือ nginx/apache หยุดเปิด port 80, start web server
Too many requestsRequest เกิน rate limit ของ LEรอ 1 ชั่วโมง หรือใช้ staging server ทดสอบ
DNS propagation delayDNS ยังไม่อัพเดตรอ 24-48h หรือตรวจด้วย dig
Permission deniedCertbot ไม่มีสิทธิ์เขียนไฟล์รัน sudo certbot หรือแก้ permission

Checklist ป้องกัน SSL หมดอายุ

ทำตาม checklist นี้ทุก domain เพื่อป้องกัน cert หมดอายุอย่างสมบูรณ์:

รายการวิธีตรวจสถานะ
Auto-renewal เปิดอยู่certbot renew --dry-run✅ บังคับ
Cron job ตั้งไว้crontab -l | grep certbot✅ บังคับ
Monitor ภายนอกUptimeRobot หรือ SSL alert⚠️ แนะนำ
อีเมลแจ้งเตือนถูกต้องตรวจที่ CA / DirectAdmin✅ บังคับ
Port 80 เปิดอยู่curl http://domain/.well-known/test✅ สำหรับ HTTP challenge
DNS ชี้ถูกต้องdig +short A example.com✅ บังคับ

คำถามที่พบบ่อย

SSL Certificate หมดอายุแล้วเว็บจะเป็นอย่างไร?
เว็บจะแสดงคำเตือน "ไม่ปลอดภัย" หรือ "Your connection is not private" บน browser ทุกตัว ผู้ใช้จะไม่สามารถเข้าถึงเว็บได้โดยไม่ข้ามคำเตือน และ Google อาจลดอันดับ SEO ลงด้วย
Let's Encrypt ต่ออายุอัตโนมัติได้จริงไหม?
ได้จริง — Let's Encrypt cert มีอายุ 90 วัน แต่ Certbot จะรัน cron job ต่ออายุโดยอัตโนมัติทุก 60-80 วัน ไม่ต้องทำอะไรเพิ่มหลังตั้งค่าครั้งแรก
DirectAdmin Auto-SSL คืออะไร?
DirectAdmin Auto-SSL คือฟีเจอร์ที่ Hosting จัดการต่ออายุ SSL ให้ลูกค้าโดยอัตโนมัติ โดยใช้ Let's Encrypt หรือ Free SSL ที่ Provider สนับสนุน ลูกค้าไม่ต้องทำอะไรเลย
ควรตั้งแจ้งเตือนก่อน SSL หมดอายุกี่วัน?
แนะนำตั้งแจ้งเตือน 30 วัน และ 7 วันล่วงหน้า เพื่อมีเวลาแก้ไขหาก auto-renewal มีปัญหา เช่น DNS เปลี่ยน หรือ web server config ผิดพลาด
SSL แบบ Paid (Commercial) ต่ออายุอัตโนมัติได้ไหม?
SSL แบบ Paid ส่วนใหญ่ไม่รองรับ auto-renewal แบบเต็มรูปแบบ เนื่องจากต้องมีการ validate ใหม่ทุกครั้ง แต่สามารถตั้งให้ auto-renew order และรับ cert ใหม่ผ่าน ACME protocol ได้หาก CA รองรับ
certbot renew --dry-run ใช้ทำอะไร?
ใช้ทดสอบกระบวนการต่ออายุโดยไม่ได้รับ cert จริง เพื่อตรวจว่า config ถูกต้องก่อนวันที่ต้องต่ออายุจริง ทำให้มั่นใจว่า auto-renewal จะทำงานได้เมื่อถึงเวลา

ต้องการ Hosting พร้อม Auto-SSL ครบวงจร?

AsiaGB Hosting มี DirectAdmin Auto-SSL ให้ทุกโดเมน อัปไทม์ 99% SSD Storage พร้อมให้บริการทันที

ดูแพ็กเกจ Hosting

อัปเดต: 19 ต.ค. 2026 | หมวด: SSL Certificate | SSL Wildcard คืออะไร →