ตั้งค่า CAA Record เพื่อกำหนดผู้ออก SSL Certificate
CAA (Certification Authority Authorization) เป็น DNS Record ที่ประกาศว่า Certificate Authority (CA) รายใดบ้างได้รับอนุญาตให้ออก SSL Certificate ให้โดเมนของคุณ ก่อนออกใบรับรองทุกครั้ง CA ที่เป็นสมาชิก CA/Browser Forum มีหน้าที่ต้องตรวจ CAA Record ถ้ามี Record อยู่และไม่มีชื่อตัวเอง CA ต้องปฏิเสธการออกใบ
ประโยชน์คือ ถ้าวันหนึ่งมีคนพยายามออกใบรับรองของโดเมนคุณกับ CA อื่นที่คุณไม่ได้ใช้ ระบบจะไม่ยอมออกให้ ข้อควรระวังคือถ้าตั้งผิด ใบรับรองของคุณเองจะต่ออายุไม่ผ่านด้วย บทความนี้จึงเน้นการสำรวจก่อนตั้งค่า และการตรวจผลหลังตั้งค่า
สิ่งที่ต้องเตรียม
- สิทธิ์แก้ไข DNS Zone ของโดเมน ผู้ให้บริการ DNS ส่วนใหญ่รองรับ CAA แล้ว รวมถึง Cloudflare, Plesk Obsidian และ DirectAdmin รุ่นปัจจุบัน หากในรายการชนิด Record ไม่มี CAA ให้สอบถามผู้ดูแล DNS
- รายชื่อ CA ที่ออกใบรับรองให้ทุก Subdomain ในปัจจุบัน
- คำสั่ง
digสำหรับตรวจสอบ
โครงสร้างของ CAA Record
CAA Record หนึ่งตัวมี 3 ส่วน คือ Flag, Tag และ Value
example.com. 3600 IN CAA 0 issue "letsencrypt.org"
| Tag | ความหมาย |
|---|---|
issue | CA ที่อนุญาตให้ออกใบรับรองทั่วไป (และ Wildcard ถ้าไม่มี issuewild) |
issuewild | CA ที่อนุญาตให้ออกใบ Wildcard เช่น *.example.com ถ้ามี Tag นี้ จะใช้แทน issue สำหรับ Wildcard |
iodef | ที่อยู่ให้ CA แจ้งเตือนเมื่อมีคำขอที่ถูกปฏิเสธ เช่น "mailto:[email protected]" CA ไม่จำเป็นต้องรองรับทุกราย |
Flag ใช้ 0 เป็นปกติ ค่า 128 หมายถึง Critical ซึ่งไม่จำเป็นสำหรับการใช้งานทั่วไป
ค่า Value ของ CA ที่พบบ่อย
| CA หรือบริการ | ค่าที่ใส่ใน issue |
|---|---|
| Let's Encrypt (รวม SSL อัตโนมัติใน Plesk และ DirectAdmin) | letsencrypt.org |
| DigiCert (รวมแบรนด์ GeoTrust, Thawte, RapidSSL) | digicert.com |
| Sectigo (รวม ZeroSSL และใบที่ขายในชื่อ Comodo เดิม) | sectigo.com |
| GlobalSign | globalsign.com |
| Google Trust Services | pki.goog |
| SSL.com | ssl.com |
ค่าที่ถูกต้องที่สุดคือค่าที่ CA ระบุในเอกสารของตัวเอง หากซื้อใบรับรองผ่านตัวแทน ให้ถามว่าใบออกโดย CA ใดจริง ไม่ใช่ชื่อแบรนด์ที่ขาย
ขั้นตอนที่ 1: สำรวจว่าใช้ CA ใดอยู่บ้าง
ตรวจใบรับรองของแต่ละชื่อที่ใช้งานจริง ทั้งเว็บหลัก, www, mail และ Subdomain อื่น
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -enddate
ผลลัพธ์จะเป็นแบบนี้ ดูชื่อองค์กรในบรรทัด issuer
issuer=C = US, O = Let's Encrypt, CN = R11
notAfter=Dec 18 03:12:40 2026 GMT
ตรวจด้วยว่าโดเมนมี CAA อยู่แล้วหรือยัง
dig example.com CAA +short
ถ้าไม่มีผลลัพธ์ แปลว่ายังไม่มี CAA ซึ่งหมายถึงทุก CA ออกใบให้ได้
ขั้นตอนที่ 2: สร้าง CAA Record
ตัวอย่างสำหรับโดเมนที่ใช้ Let's Encrypt กับทุกชื่อ และซื้อใบ Wildcard จาก Sectigo
example.com. 3600 IN CAA 0 issue "letsencrypt.org"
example.com. 3600 IN CAA 0 issuewild "sectigo.com"
example.com. 3600 IN CAA 0 iodef "mailto:[email protected]"
ในหน้าจอจัดการ DNS ส่วนใหญ่จะแยกช่องให้กรอกดังนี้
- Cloudflare: DNS แล้วเลือก Records กด Add record เลือก Type เป็น CAA ช่อง Name ใส่
@เลือก Tag จากรายการ (เช่น Only allow specific hostnames สำหรับ issue และ Only allow wildcards สำหรับ issuewild) แล้วใส่ CA domain name - Plesk: Websites & Domains เลือกโดเมน แล้วเข้า Hosting & DNS และ DNS เพิ่ม Record ชนิด CAA ตำแหน่งเมนูอาจต่างตามเวอร์ชัน ดู แก้ไข DNS Record บน Plesk
- DirectAdmin: Account Manager แล้วเลือก DNS Management กด Add Record เลือกชนิด CAA ดู จัดการ DNS บน DirectAdmin
หมายเหตุ: ถ้าใช้ Cloudflare Proxy ใบรับรองฝั่ง Edge ของ Cloudflare อาจออกโดย Let's Encrypt, Google Trust Services หรือ SSL.com เมื่อคุณมี CAA Record อยู่ Cloudflare จะเพิ่ม CAA ของ CA ที่ตัวเองใช้ให้อัตโนมัติในคำตอบ DNS ถ้าบริหารด้วยตัวเองนอก Cloudflare ต้องใส่ให้ครบเอง
ขั้นตอนที่ 3 (ทางเลือก): ผูกกับบัญชี ACME
Let's Encrypt รองรับพารามิเตอร์ accounturi และ validationmethods ตาม RFC 8657 เพื่อจำกัดให้ออกใบได้เฉพาะบัญชี ACME ของคุณเท่านั้น
example.com. 3600 IN CAA 0 issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/123456789"
ตัวเลขบัญชีดูได้จากไฟล์ในเครื่องที่รัน Certbot ใต้ /etc/letsencrypt/accounts/ วิธีนี้เหมาะกับผู้ที่ดูแลเซิร์ฟเวอร์เอง ถ้าใช้แผงควบคุมที่สร้างบัญชี ACME ใหม่เป็นครั้งคราว ไม่ควรใช้ เพราะการต่ออายุจะล้มเหลว
CAA ทำงานกับ Subdomain อย่างไร
CA จะหา CAA จากชื่อที่ขอใบก่อน ถ้าไม่พบจะไล่ขึ้นไประดับบน เช่น ขอใบ shop.example.com CA ดู shop.example.com ก่อน ไม่พบจึงดู example.com ดังนั้น CAA ที่ระดับโดเมนหลักมีผลกับทุก Subdomain ถ้า Subdomain ไหนใช้ CA ต่างออกไป ให้สร้าง CAA ที่ชื่อนั้นแยก ถ้า Subdomain เป็น CNAME ไปบริการภายนอก CA จะตาม CNAME ไปดู CAA ปลายทางด้วย
ตรวจสอบผลลัพธ์
dig example.com CAA +noall +answer
dig @8.8.8.8 example.com CAA +short
ต้องเห็นทุก Record ที่สร้าง เช่น 0 issue "letsencrypt.org" จากนั้นทดสอบการต่ออายุจริงแบบไม่ออกใบ เช่นบนเซิร์ฟเวอร์ที่ใช้ Certbot
sudo certbot renew --dry-run
ถ้าผ่าน จะเห็นข้อความ Congratulations, all simulated renewals succeeded
ปัญหาที่พบบ่อย
ออกใบไม่ผ่าน แจ้ง CAA record prevents issuance
ข้อความทำนองนี้จาก Let's Encrypt หมายถึง CAA ไม่ได้ระบุ letsencrypt.org ไว้ ให้เพิ่ม Record ที่ขาดหรือแก้การสะกด แล้วรอ TTL ก่อนลองใหม่ ระวังการใส่ค่าเป็นชื่อ URL เช่น https://letsencrypt.org ซึ่งผิด ต้องเป็นชื่อโดเมนเท่านั้น
ใบ Wildcard ออกไม่ได้ ทั้งที่ใบปกติออกได้
มี issuewild อยู่และไม่ได้ระบุ CA นั้น เมื่อมี issuewild CA จะไม่ดู issue สำหรับ Wildcard เลย ให้เพิ่ม CA ลงใน issuewild ด้วย
ใส่ issuewild ";" แล้ว Wildcard หยุดทำงาน
ค่า ";" คือการห้ามทุก CA ออก Wildcard ใช้เฉพาะเมื่อตั้งใจไม่ใช้ Wildcard เลย
สำหรับการเฝ้าวันหมดอายุหลังตั้ง CAA ดู ตรวจสอบวันหมดอายุ SSL Certificate
หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงานซัพพอร์ตของ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อโดเมน สิ่งที่ทำไปแล้ว และข้อความ Error ที่พบ เพื่อให้ทีมงานตรวจสอบได้รวดเร็วขึ้น
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


