SSL ฟรีบน Hosting คืออะไรและติดตั้งอย่างไร

ทำความเข้าใจ SSL/HTTPS และวิธีเปิดใช้งานบน Shared Hosting อย่างถูกต้อง

SSL Certificate และกุญแจล็อคความปลอดภัยเว็บไซต์

SSL และ HTTPS คืออะไร?

SSL (Secure Sockets Layer) หรือ TLS (Transport Layer Security) ที่ใช้งานจริงในปัจจุบัน คือโปรโตคอลที่เข้ารหัสการสื่อสารระหว่าง browser ของผู้ใช้กับเซิร์ฟเวอร์ ทำให้ข้อมูลที่ส่งผ่านไม่สามารถถูกดักอ่านได้แม้ว่าจะถูกดักจับกลางทาง

เมื่อเว็บไซต์มี SSL ที่ถูกต้อง URL จะเปลี่ยนจาก http:// เป็น https:// และ browser จะแสดงไอคอนแม่กุญแจหน้า URL แสดงให้ผู้ใช้รู้ว่าเว็บไซต์นั้นปลอดภัย

ทำไมเว็บไซต์ต้องมี SSL?

Let's Encrypt SSL คืออะไร?

Let's Encrypt คือ Certificate Authority (CA) ที่ออก SSL certificate ฟรีโดยองค์กรไม่แสวงหากำไร Internet Security Research Group (ISRG) certificate มีอายุ 90 วันและต้อง renew อัตโนมัติ

Let's Encrypt เหมาะสำหรับ Domain Validated (DV) SSL ซึ่งเพียงพอสำหรับเว็บไซต์ทั่วไป บล็อก และ e-commerce ขนาดเล็กถึงกลาง

AutoSSL คืออะไร?

AutoSSL เป็นฟีเจอร์ของ cPanel ที่ติดตั้งและต่ออายุ SSL certificate ให้อัตโนมัติ โดยค่าเริ่มต้นใช้ Let's Encrypt หรือ Sectigo ขึ้นอยู่กับการตั้งค่าของ hosting provider ข้อดีคือไม่ต้องทำอะไรเลย certificate จะถูก renew ก่อนหมดอายุโดยอัตโนมัติ

วิธีติดตั้ง SSL ใน cPanel

วิธีที่ 1: ผ่าน AutoSSL (ง่ายที่สุด)

  1. เข้า cPanel
  2. ไปที่ Security > SSL/TLS Status
  3. ตรวจสอบว่าโดเมนของคุณมี AutoSSL run แล้วหรือยัง
  4. ถ้ายัง ให้คลิก "Run AutoSSL" หรือรอระบบรันให้อัตโนมัติ
  5. หลัง certificate ติดตั้งแล้ว ให้บังคับ HTTPS ใน .htaccess

วิธีที่ 2: ติดตั้ง Let's Encrypt ผ่าน cPanel

  1. เข้า cPanel > Security > Let's Encrypt SSL
  2. เลือกโดเมนที่ต้องการ
  3. คลิก "Issue" หรือ "Install"
  4. รอสัก 1-2 นาทีจนแสดงว่าสำเร็จ

บังคับ HTTPS ผ่าน .htaccess

# เพิ่มใน /public_html/.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# หรือสำหรับ www redirect ด้วย
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://yourdomain.com/$1 [L,R=301]

บังคับ HTTPS ใน WordPress

# เพิ่มใน wp-config.php
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

# ถ้าใช้ reverse proxy (Cloudflare)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}
Tip: หลังเปลี่ยนเป็น HTTPS แล้ว ควรอัพเดท URL ใน WordPress ไปที่ Settings > General เปลี่ยน WordPress Address และ Site Address ให้ใช้ https:// และตรวจสอบ mixed content ทุกหน้า

ตรวจสอบว่า SSL ทำงานถูกต้อง

# ตรวจสอบ SSL certificate พื้นฐาน
curl -vI https://yourdomain.com 2>&1 | grep -E "SSL|TLS|expire|subject|issuer"

# ตรวจสอบวันหมดอายุ
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | \
  openssl x509 -noout -enddate

# ตรวจสอบ cipher ที่ใช้
nmap --script ssl-enum-ciphers -p 443 yourdomain.com

# ตรวจสอบว่า HTTP redirect ไป HTTPS
curl -I http://yourdomain.com | grep -i location
Tip: ใช้เครื่องมือออนไลน์ https://www.ssllabs.com/ssltest/ เพื่อทดสอบ SSL configuration อย่างละเอียดและได้คะแนน A-F พร้อมรายการปัญหาที่ต้องแก้ไข

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

Error: "Mixed Content" — รูปภาพหรือ script โหลดผ่าน HTTP

เกิดเมื่อเว็บเปิดผ่าน HTTPS แต่มี resource บางส่วน (รูป, JS, CSS) ถูกโหลดผ่าน HTTP ทำให้ browser แสดง warning

# แก้ด้วย WordPress plugin: Better Search Replace
# ค้นหา: http://yourdomain.com
# แทนที่ด้วย: https://yourdomain.com

# หรือใช้ wp-cli
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables

# เพิ่ม Content Security Policy header ใน .htaccess
Header always set Content-Security-Policy "upgrade-insecure-requests"

Error: "Certificate has expired"

Let's Encrypt certificate อายุ 90 วัน ถ้า Auto-renewal ล้มเหลวต้อง renew manually

# ใน cPanel > SSL/TLS Status
# หาโดเมนที่ expired แล้วคลิก "Renew"
# หรือ Run AutoSSL อีกครั้ง

# ตรวจสอบสาเหตุที่ auto-renewal ล้มเหลว:
# 1. DNS propagation ยังไม่เสร็จ
# 2. Firewall block port 80 (ต้องการ HTTP สำหรับ verification)
# 3. ไฟล์ .well-known/acme-challenge/ ถูก block

Error: "NET::ERR_CERT_COMMON_NAME_INVALID" หรือ SNI Error

Certificate ไม่ครอบคลุมโดเมนที่เข้าถึง เช่น certificate สำหรับ yourdomain.com แต่เข้าผ่าน www.yourdomain.com

# ตรวจสอบว่า certificate ครอบคลุม SAN ครบ
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | \
  openssl x509 -noout -text | grep -A 1 "Subject Alternative"

# ถ้า www ไม่มี ให้ออก certificate ใหม่ที่ครอบคลุมทั้ง:
# yourdomain.com และ www.yourdomain.com

Error: "Too many redirects"

เกิด redirect loop เมื่อ .htaccess redirect ซ้ำซ้อน หรือ WordPress URL ไม่ตรงกับ certificate

# ตรวจสอบ .htaccess ว่ามี redirect ซ้ำไหม
cat public_html/.htaccess

# ถ้าใช้ Cloudflare ให้ตั้ง SSL mode เป็น "Full (strict)"
# ไม่ใช่ "Flexible" ซึ่งจะทำให้เกิด redirect loop

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

SSL ฟรีกับ SSL ที่ซื้อต่างกันอย่างไร?

สำหรับการเข้ารหัสข้อมูล Let's Encrypt ฟรีและ SSL ที่ซื้อให้ความปลอดภัยเท่ากัน ความแตกต่างคือ SSL ที่ซื้อมักมีอายุนานกว่า (1-2 ปี), มี wildcard หรือ OV/EV validation ที่แสดงชื่อบริษัทใน certificate บางบริษัทขนาดใหญ่ต้องการ EV SSL เพื่อความน่าเชื่อถือ

Let's Encrypt certificate หมดอายุทุก 90 วัน ต้อง renew เองไหม?

ไม่ต้อง ถ้า hosting มี AutoSSL ระบบจะ renew ให้อัตโนมัติก่อนหมดอายุประมาณ 30 วัน แนะนำให้ตั้ง monitoring แจ้งเตือนถ้า certificate ใกล้หมดอายุเพื่อความปลอดภัย

ใช้ SSL ฟรีกับ e-commerce ได้ไหม?

ได้ครับ Let's Encrypt ให้การเข้ารหัสที่เพียงพอสำหรับ WooCommerce หรือ PrestaShop ขนาดกลาง ลูกค้าจะเห็น padlock เช่นกัน ถ้าต้องการ Organization Validated (OV) เพื่อแสดงชื่อบริษัทใน certificate จึงต้องซื้อ SSL แบบชำระเงิน


สำหรับผู้ที่ต้องการ VPS พร้อม SSL ฟรีและ IP ไทย asiagb.com บริการโฮสติ้งคุณภาพสูงรองรับ Let's Encrypt SSL อัตโนมัติ พร้อม data center ในไทยและสิงคโปร์