ติดตั้ง Cloudflare Origin Certificate บน VPS และ Hosting

Cloudflare Origin Certificate คืออะไร

Cloudflare Origin Certificate คือ SSL Certificate ที่ Cloudflare ออกให้ฟรีสำหรับการใช้งานระหว่าง Cloudflare Edge Server กับ Origin Server (เซิร์ฟเวอร์จริงของคุณ) เท่านั้น Certificate นี้ไม่ถูกรับรองโดย Root CA สาธารณะ ดังนั้นถ้าผู้ใช้เชื่อมต่อกับเซิร์ฟเวอร์โดยตรงโดยไม่ผ่าน Cloudflare เบราว์เซอร์จะแสดง "Not Trusted" certificate warning

แต่ถ้าใช้งานผ่าน Cloudflare CDN อย่างถูกต้อง Origin Certificate ร่วมกับ SSL Mode "Full (Strict)" จะทำให้การเชื่อมต่อมีความปลอดภัยครบทั้งสองช่วง ได้แก่ ผู้ใช้ → Cloudflare (ด้วย Cloudflare Universal SSL ฟรี) และ Cloudflare → เซิร์ฟเวอร์คุณ (ด้วย Origin Certificate)

ความแตกต่างระหว่าง SSL Mode ของ Cloudflare

ก่อนติดตั้ง Origin Certificate ควรเข้าใจ Cloudflare SSL Mode ทั้ง 4 แบบ:

สรุป: ต้องตั้งค่า SSL Mode เป็น "Full (Strict)" เพื่อความปลอดภัยสูงสุด และต้องติดตั้ง Cloudflare Origin Certificate บนเซิร์ฟเวอร์คุณ ทำตามขั้นตอนด้านล่างได้เลย

ขั้นตอนที่ 1 — สร้าง Cloudflare Origin Certificate

เข้าสู่ Cloudflare Dashboard แล้วไปที่ SSL/TLS → Origin Server:

  1. คลิก "Create Certificate"
  2. เลือก "Generate private key and CSR with Cloudflare" (ง่ายที่สุด) หรือ "Use my own private key and CSR" ถ้าต้องการ key ที่สร้างเอง
  3. ระบุ Hostnames ที่ต้องการ เช่น example.com และ *.example.com
  4. เลือกอายุ Certificate (แนะนำ 15 ปี สำหรับ origin เพราะต่ออายุแล้วต้องติดตั้งใหม่)
  5. คลิก "Create"

Cloudflare จะสร้าง Origin Certificate (PEM format) และ Private Key ให้คุณ บันทึกทั้งสองไฟล์ทันที เพราะ Private Key จะไม่แสดงอีกครั้ง

ขั้นตอนที่ 2 — บันทึก Certificate และ Private Key

สร้างไฟล์บนเซิร์ฟเวอร์:

# บน VPS — สร้างไฟล์ certificate และ key
mkdir -p /etc/ssl/cloudflare
nano /etc/ssl/cloudflare/cert.pem     # วาง Origin Certificate
nano /etc/ssl/cloudflare/key.pem      # วาง Private Key

chmod 644 /etc/ssl/cloudflare/cert.pem
chmod 600 /etc/ssl/cloudflare/key.pem

ขั้นตอนที่ 3A — ติดตั้งบน Nginx

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/ssl/cloudflare/cert.pem;
    ssl_certificate_key /etc/ssl/cloudflare/key.pem;

    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    # ... โค้ดเว็บไซต์อื่นๆ ...
}

# Redirect HTTP → HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}
nginx -t && systemctl reload nginx

ขั้นตอนที่ 3B — ติดตั้งบน Apache

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile    /etc/ssl/cloudflare/cert.pem
    SSLCertificateKeyFile /etc/ssl/cloudflare/key.pem

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5

    # ... DocumentRoot และโค้ดอื่นๆ ...
</VirtualHost>
apachectl configtest && systemctl reload apache2

ขั้นตอนที่ 4 — ตั้งค่า SSL Mode บน Cloudflare

กลับเข้า Cloudflare Dashboard → SSL/TLS → Overview แล้วเลือก "Full (Strict)" ทันที นี่คือขั้นตอนสำคัญที่สุด ถ้าไม่เปลี่ยน Mode Cloudflare อาจยังเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน HTTP อยู่

คำเตือน: ก่อนเปลี่ยนเป็น Full (Strict) ตรวจสอบให้แน่ใจว่า Origin Certificate ติดตั้งถูกต้องบนเซิร์ฟเวอร์แล้ว ถ้าเปลี่ยน Mode แต่ยังไม่มี valid certificate บนเซิร์ฟเวอร์ เว็บจะ error ทันที

ขั้นตอนที่ 5 — ดาวน์โหลด Cloudflare Root CA

สำหรับ SSL Mode Full (Strict) Cloudflare ต้องตรวจสอบ certificate chain ดังนั้นควรใส่ Cloudflare Origin CA Root Certificate ด้วย:

# ดาวน์โหลด Cloudflare Origin CA Root Certificate
curl -o /etc/ssl/cloudflare/origin-pull-ca.pem \
  https://developers.cloudflare.com/ssl/static/authenticated_origin_pull_ca.pem

ตรวจสอบการทำงาน

หลังตั้งค่าเสร็จแล้ว ตรวจสอบด้วยขั้นตอนต่อไปนี้:

Authenticated Origin Pulls — ความปลอดภัยเพิ่มเติม

Cloudflare มี feature "Authenticated Origin Pulls" ที่ทำให้เซิร์ฟเวอร์ยอมรับ connection เฉพาะจาก Cloudflare เท่านั้น ป้องกันไม่ให้ใครรู้ IP จริงของเซิร์ฟเวอร์แล้ว bypass Cloudflare ไปเชื่อมต่อตรงได้:

# Nginx — ตรวจสอบ client certificate จาก Cloudflare
ssl_client_certificate /etc/ssl/cloudflare/origin-pull-ca.pem;
ssl_verify_client on;

จากนั้นเปิดใช้งานใน Cloudflare Dashboard → SSL/TLS → Origin Server → Authenticated Origin Pulls → Enable

เปรียบเทียบ Cloudflare Origin Certificate กับ Let's Encrypt และ Paid SSL

หลายคนสงสัยว่าควรใช้ Origin Certificate จาก Cloudflare หรือจะซื้อ SSL จริงจาก CA เช่น RapidSSL หรือ GeoTrust ดี คำตอบขึ้นอยู่กับว่าเว็บของคุณผ่าน Cloudflare ตลอดเวลาหรือไม่

ด้านCloudflare Origin CertificateLet's EncryptPaid SSL (RapidSSL/GeoTrust)
ราคาฟรีฟรี1,000 บาท/ปีขึ้นไป
Browser Trust โดยตรงไม่ (ต้องผ่าน Cloudflare)ใช่ใช่
อายุสูงสุด15 ปี90 วัน (ต่ออายุอัตโนมัติ)1–3 ปี
เหมาะกับOrigin ที่ใช้ Cloudflare ตลอดเว็บทั่วไปที่ไม่ใช้ Cloudflareธุรกิจที่ต้องการ Warranty และ OV/EV
รองรับ Wildcardใช่ (ฟรี)ใช่ (ผ่าน DNS challenge)ใช่ (ราคาสูงกว่า)

Cloudflare IP Ranges และการ Lock Down เซิร์ฟเวอร์

เมื่อใช้ Cloudflare Origin Certificate ร่วมกับ Authenticated Origin Pulls แล้ว ขั้นตอนถัดไปที่ผู้ดูแลระบบจำนวนมากทำเพิ่มเติมคือการ Lock Down เซิร์ฟเวอร์ให้รับ Connection เฉพาะจาก IP ของ Cloudflare เท่านั้น ป้องกันการเข้าถึง Origin Server โดยตรง

Cloudflare เผยแพร่รายการ IP Ranges ไว้สาธารณะที่ https://www.cloudflare.com/ips/ สามารถนำมาใช้กับ Firewall ได้ดังนี้:

# iptables — รับเฉพาะ Port 443 จาก Cloudflare IPv4
# ตัวอย่าง IP Ranges ของ Cloudflare (ตรวจ list ล่าสุดที่ cloudflare.com/ips/)
iptables -A INPUT -p tcp --dport 443 -s 173.245.48.0/20 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s 103.21.244.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s 103.22.200.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j DROP

คำเตือน: ก่อน Lock Down ด้วย iptables ตรวจสอบให้แน่ใจว่า SSH (Port 22) ของคุณอนุญาต IP ที่คุณใช้งานอยู่ไว้แล้ว มิฉะนั้นอาจถูก Lock ออกจาก Server ตัวเอง

การตั้งค่า HSTS และ Always Use HTTPS ร่วมกัน

เมื่อติดตั้ง Origin Certificate และตั้งค่า Full (Strict) เรียบร้อยแล้ว แนะนำให้เปิด Security Features เพิ่มเติมใน Cloudflare เพื่อเสริมความปลอดภัยและ SEO

1. Always Use HTTPS

ใน Cloudflare Dashboard → SSL/TLS → Edge Certificates → เปิด "Always Use HTTPS" — Cloudflare จะ Redirect ทุก Request ที่มาด้วย HTTP ไปยัง HTTPS โดยอัตโนมัติ ไม่จำเป็นต้องตั้ง Redirect ใน Nginx หรือ Apache อีกต่อไป

2. HTTP Strict Transport Security (HSTS)

เปิด HSTS ผ่าน Cloudflare Dashboard → SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) การตั้งค่า HSTS Header แจ้งให้ Browser ของผู้ใช้รู้ว่าเว็บนี้ใช้ HTTPS เท่านั้น และ Browser จะไม่พยายาม HTTP อีกเลย

การตั้งค่า HSTSค่าแนะนำหมายเหตุ
Max Age6 เดือน (เริ่มต้น)เพิ่มเป็น 1 ปีเมื่อมั่นใจแล้ว
Include Subdomainsเปิดถ้า Subdomain ทั้งหมดเป็น HTTPS
Preloadไม่เปิดในตอนแรกPreload ยากกลับมาแก้ถ้าเปลี่ยนใจ

3. Minimum TLS Version

ตั้ง Minimum TLS Version เป็น TLS 1.2 ใน Cloudflare เพื่อ Drop Client เก่าที่ใช้ TLS 1.0/1.1 ซึ่งถือว่าไม่ปลอดภัยในปัจจุบัน ส่วน TLS 1.3 รองรับทั้ง Cloudflare Edge และ Origin Server ที่ใช้ Nginx/Apache เวอร์ชันใหม่ได้อยู่แล้ว

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

Cloudflare Origin Certificate ต่างจาก Let's Encrypt อย่างไร?

Let's Encrypt เป็น Public CA ที่เบราว์เซอร์ทุกตัวเชื่อถือ ใช้ได้ทั้งกับและไม่มี Cloudflare Cloudflare Origin Certificate ใช้ได้เฉพาะ origin ที่อยู่หลัง Cloudflare เท่านั้น ถ้าเปลี่ยนออกจาก Cloudflare ต้องเปลี่ยน Certificate ด้วย

Origin Certificate ใช้กับ Hosting แบบ Shared ได้ไหม?

ขึ้นอยู่กับ Hosting Provider บน DirectAdmin Hosting สามารถอัปโหลด Custom SSL Certificate ได้ผ่าน SSL/TLS Manager ใน DirectAdmin Panel ถ้า Hosting ของ AsiaGB รองรับ Custom Certificate ก็สามารถติดตั้งได้

Origin Certificate หมดอายุต้องทำอย่างไร?

ต้อง generate Certificate ใหม่ใน Cloudflare Dashboard แล้วนำไฟล์ใหม่ไปแทนที่บนเซิร์ฟเวอร์ แนะนำให้เลือกอายุ 15 ปีเพื่อลดความถี่ในการต่ออายุ

Cloudflare SSL กับ WordPress: การตั้งค่าเพิ่มเติมที่ควรรู้

เว็บ WordPress ที่ใช้ Cloudflare Origin Certificate ต้องระวัง Configuration บางอย่างเพิ่มเติม โดยเฉพาะในส่วนของ WordPress Address, Home URL และการตั้งค่า Proxy ที่ถูกต้อง เพื่อหลีกเลี่ยงปัญหา Redirect Loop หรือ Mixed Content ที่พบบ่อยในผู้ใช้ WordPress ใหม่กับ Cloudflare

1. ตั้งค่า WordPress Site URL ให้ถูกต้อง

ใน wp-config.php ให้กำหนด Site URL เป็น HTTPS เสมอ เพื่อให้ WordPress ไม่สร้าง Link แบบ HTTP ที่ทำให้เกิด Mixed Content Warning:

define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');

2. แก้ปัญหา Redirect Loop เมื่อใช้ Cloudflare Flexible SSL

ปัญหา Redirect Loop ที่พบบ่อยที่สุดเกิดจากการตั้ง Cloudflare SSL Mode เป็น "Flexible" ขณะที่ WordPress ตั้งค่าให้ Redirect HTTP → HTTPS เองด้วย ทำให้เกิด Loop ไม่สิ้นสุด วิธีแก้คือเปลี่ยน SSL Mode เป็น "Full (Strict)" ตามที่แนะนำในบทความนี้ หรือเพิ่มโค้ดใน wp-config.php เพื่อบอก WordPress ว่า Request ที่เข้ามาจาก Cloudflare นั้นเป็น HTTPS แม้ Cloudflare จะส่งต่อมาด้วย HTTP:

// เพิ่มในตอนต้นของ wp-config.php ก่อน require 'wp-settings.php'
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
    && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

3. Mixed Content ที่ยังเหลืออยู่หลังเปิด HTTPS

หลังเปลี่ยน Site URL เป็น HTTPS แล้ว รูปภาพและลิงก์ใน Post เก่าที่ยังเป็น http:// จะทำให้เกิด Mixed Content Warning ใช้ Plugin Better Search Replace เพื่อ Find & Replace URL ใน Database ทั้งหมด หรือใช้คำสั่ง WP-CLI:

# WP-CLI — Replace HTTP with HTTPS in entire database
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' \
  --skip-columns=guid --report-changed-only

การ Monitor SSL Certificate ก่อนหมดอายุ

แม้ Cloudflare Origin Certificate จะมีอายุสูงสุด 15 ปี แต่ถ้าเลือกอายุสั้นกว่านั้นหรือต้องใช้ Let's Encrypt ควบคู่กัน การ Monitor Certificate ให้ล่วงหน้าเป็นเรื่องสำคัญ เพราะ Certificate ที่หมดอายุทำให้เว็บขึ้น Error ทันทีโดยไม่มีสัญญาณเตือนล่วงหน้าสำหรับผู้เข้าชม

วิธี Monitorราคาเหมาะกับ
Cloudflare Dashboard AlertฟรีOrigin Certificate ของ Cloudflare เท่านั้น
SSL Labs APIฟรีตรวจสอบ Grade + expiry date
openssl CLIฟรีCron Job ตรวจสอบรายวัน + Email Alert
Uptime Monitoring Serviceฟรี/จ่ายMonitor ครบทั้ง Uptime + SSL expiry

วิธีง่ายที่สุดคือใช้ openssl ใน Cron Job ตรวจสอบวันหมดอายุแล้วส่ง Email เตือน:

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

ความแตกต่างระหว่าง Cloudflare Free, Pro และ Business สำหรับ SSL

Origin Certificate ใช้ได้ในทุก Plan ของ Cloudflare รวมถึง Free Plan แต่ Feature SSL ขั้นสูงบางอย่างต้องการ Plan ที่สูงขึ้น ทำความเข้าใจก่อนตัดสินใจ

สรุปสำหรับผู้ใช้ทั่วไป: Cloudflare Free Plan + Origin Certificate + Full (Strict) Mode ให้ความปลอดภัยระดับสูงสุดที่ผู้ใช้ทั่วไปต้องการได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม ถ้าต้องการ Dedicated IP หรือ Custom Certificate บน Edge ถึงจะต้องอัปเกรด Plan

ต้องการ SSL Certificate สำหรับเว็บที่ไม่ได้ใช้ Cloudflare?

AsiaGB ให้บริการ SSL Certificate จาก RapidSSL, GeoTrust, DigiCert ที่ใช้ได้ทุกสถานการณ์ DV SSL เริ่มต้น 1,000 บาท/ปี Wildcard SSL 5,000 บาท/ปี

ดู SSL Certificate ทั้งหมด