ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home ติดตั้ง SSL ฟรี Let's Encrypt บน DirectAdmin

ติดตั้ง SSL ฟรี Let's Encrypt บน DirectAdmin

SSL Certificate ทำให้เว็บไซต์เปิดผ่าน https:// ได้ ข้อมูลระหว่างผู้ใช้กับเซิร์ฟเวอร์ถูกเข้ารหัส และเบราว์เซอร์จะไม่แสดงคำเตือน Not Secure ซึ่งมีผลต่อความน่าเชื่อถือและอันดับใน Google ด้วย DirectAdmin รองรับการออกใบรับรองฟรีจาก Let's Encrypt และต่ออายุให้อัตโนมัติ

ใบรับรองของ Let's Encrypt มีอายุสั้น (ไม่เกิน 90 วัน และ Let's Encrypt มีแผนจะลดให้สั้นลงอีก) แต่ DirectAdmin จะต่ออายุให้เองก่อนหมดอายุ ตราบใดที่โดเมนยังชี้มาที่เซิร์ฟเวอร์เดิม บทความนี้อ้างอิงหน้าจอ DirectAdmin แบบ Evolution skin

สิ่งที่ต้องเตรียม

  • บัญชี DirectAdmin ระดับ User ที่มีโดเมนนั้นอยู่
  • A Record ของโดเมน และของ www ชี้มายัง IP ของเซิร์ฟเวอร์นี้แล้ว (ดู ชี้โดเมนไปยังเซิร์ฟเวอร์)
  • Port 80 ของเซิร์ฟเวอร์เปิดรับจากภายนอก เพราะ Let's Encrypt ตรวจสอบโดเมนผ่าน HTTP
  • หากใช้ Cloudflare แบบ Proxy (เมฆสีส้ม) ให้ปิดเป็น DNS only ชั่วคราวระหว่างออกใบรับรอง

ขั้นตอนที่ 1: ตรวจว่าโดเมนชี้มาที่เซิร์ฟเวอร์แล้ว

Let's Encrypt จะเข้ามาที่ http://โดเมน/.well-known/acme-challenge/ เพื่อยืนยันว่าคุณเป็นผู้ควบคุมโดเมน ถ้า DNS ยังชี้ไปที่อื่น การออกใบรับรองจะล้มเหลว ตรวจด้วยคำสั่ง

nslookup example.com
nslookup www.example.com

ทั้งสองชื่อต้องได้ IP เดียวกับที่ DirectAdmin แสดงในหน้า Account Information หรือที่ผู้ให้บริการแจ้ง

ขั้นตอนที่ 2: เปิดใช้ Secure SSL ให้โดเมน

  1. ล็อกอิน DirectAdmin แล้วไปที่หมวด Account Manager คลิก Domain Setup
  2. คลิกชื่อโดเมนที่ต้องการ
  3. ตรวจว่าตัวเลือก Secure SSL ถูกเปิดอยู่ หากยังไม่เปิดให้ติ๊กแล้วบันทึก

ในเซิร์ฟเวอร์ส่วนใหญ่ค่านี้เปิดไว้แล้วตั้งแต่สร้างโดเมน หากไม่พบตัวเลือกนี้ แสดงว่าแพ็กเกจของคุณอาจไม่ได้เปิดสิทธิ์ SSL ให้ติดต่อผู้ให้บริการ

ขั้นตอนที่ 3: ขอใบรับรองจาก Let's Encrypt

  1. ไปที่ Account Manager แล้วคลิก SSL Certificates
  2. เลือก Get automatic certificate from ACME Provider (เวอร์ชันเก่าจะเขียนว่า Free & automatic certificate from Let's Encrypt)
  3. ช่อง ACME Provider เลือก Let's Encrypt
  4. ช่อง Key Size ใช้ค่าเริ่มต้นได้ (เช่น secp384r1 หรือ RSA 2048/4096)
  5. ในรายการชื่อโดเมน ติ๊กชื่อที่ต้องการให้ใบรับรองครอบคลุม อย่างน้อย example.com และ www.example.com และติ๊ก mail.example.com หากใช้เป็นชื่อเมลเซิร์ฟเวอร์ ส่วนชื่อที่ยังไม่ได้ชี้ DNS มาที่นี่ให้เอาออก
  6. กด Save

รอประมาณ 10 วินาทีถึง 1 นาที หากสำเร็จจะมีข้อความทำนอง Certificate and Key saved และหน้าเดียวกันจะแสดงวันหมดอายุของใบรับรอง

หมายเหตุ: ถ้าติ๊กชื่อใดที่ DNS ไม่ได้ชี้มายังเซิร์ฟเวอร์นี้ ใบรับรองทั้งใบจะออกไม่สำเร็จ ให้เลือกเฉพาะชื่อที่ชี้มาแล้ว ส่วน Wildcard (*.example.com) ต้องยืนยันผ่าน DNS จึงใช้ได้เฉพาะเมื่อ DNS ของโดเมนอยู่บนเซิร์ฟเวอร์ DirectAdmin นี้

ขั้นตอนที่ 4: บังคับใช้ HTTPS

  1. กลับไปที่ Account Manager แล้วคลิก Domain Setup และคลิกชื่อโดเมน
  2. ติ๊ก Force SSL with https redirect แล้วบันทึก

ตัวเลือกนี้จะ Redirect ทุกคำขอ http:// ไปยัง https:// ด้วย 301 ให้อัตโนมัติ ถ้าตัวเลือกเป็นสีเทา แปลว่ายังไม่มีใบรับรองที่ใช้งานได้ ให้กลับไปทำขั้นตอนที่ 3 ก่อน

สำหรับ WordPress ให้เข้า Settings > General แล้วเปลี่ยน WordPress Address (URL) และ Site Address (URL) เป็น https:// ด้วย เพื่อไม่ให้หน้าเว็บโหลดรูปหรือสคริปต์ผ่าน http ซึ่งทำให้เกิดคำเตือน Mixed Content

ตรวจสอบผลลัพธ์

  • เปิด https://example.com ในเบราว์เซอร์ คลิกไอคอนแม่กุญแจหน้า URL แล้วดูว่าออกโดย Let's Encrypt และยังไม่หมดอายุ
  • เปิด http://example.com แล้วดูว่าถูกพาไปยัง https อัตโนมัติ
  • ตรวจจากเครื่อง Linux หรือ macOS ด้วยคำสั่ง
    curl -sI http://example.com | head -n 3
    echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates
    คำสั่งแรกควรได้ HTTP/1.1 301 Moved Permanently พร้อม Location: https://... คำสั่งที่สองจะแสดง issuer ที่มีคำว่า Let's Encrypt พร้อมวันเริ่มต้น (notBefore) และวันหมดอายุ (notAfter)

ปัญหาที่พบบ่อย

ขึ้น Error ว่า Challenge failed หรือ Timeout

Let's Encrypt เข้ามาตรวจไม่ถึง สาเหตุที่พบบ่อยคือ DNS ยังชี้ไปที่อื่น เปิด Cloudflare Proxy อยู่ Port 80 ถูกปิด หรือไฟล์ .htaccess มีกฎ Redirect หรือบล็อกที่ไปกระทบ path /.well-known/acme-challenge/ ให้ตรวจทีละข้อ หากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ต 80 และ 443 เพิ่มด้วย

ขึ้น Error ว่า CAA record prevents issuance

โดเมนมี CAA Record ที่อนุญาตเฉพาะผู้ออกใบรับรองรายอื่น ให้เพิ่ม CAA Record 0 issue "letsencrypt.org" ที่ผู้ดูแล DNS หรือลบ CAA ที่ไม่ใช้แล้ว

ขึ้น Error ว่า too many certificates หรือ rateLimited

Let's Encrypt จำกัดจำนวนใบรับรองที่ออกซ้ำให้ชื่อชุดเดียวกันในช่วงเวลาหนึ่ง การกดขอซ้ำหลายครั้งขณะที่ DNS ยังไม่พร้อมจะทำให้ติดเพดานนี้ ให้แก้สาเหตุให้เรียบร้อยก่อน แล้วรอตามเวลาที่ข้อความ Error ระบุ รายละเอียดดูได้ที่ Let's Encrypt Rate Limits

ใบรับรองหมดอายุ ไม่ต่ออายุเอง

การต่ออายุอัตโนมัติจะล้มเหลวด้วยเหตุผลเดียวกับการออกครั้งแรก เช่น ย้าย DNS ไปที่อื่นแล้ว หรือเพิ่มชื่อ Subdomain ที่ไม่ได้ชี้มาที่นี่ ให้ขอใบรับรองใหม่ในขั้นตอนที่ 3 โดยเลือกเฉพาะชื่อที่ใช้งานจริง

หากยังออกใบรับรองไม่สำเร็จ ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแนบข้อความ Error ที่ DirectAdmin แสดง

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security