วิธีได้เกรด SSL A+ (เช็กลิสต์ 2026)
อัปเดต 2026-11-03 · 7 นาทีในการอ่าน
A+ ไม่ใช่ใบรับรองอีกชนิด แต่เป็นการตั้งค่า TLS อีกชุด เว็บส่วนใหญ่ที่ค้างอยู่ที่ A ขาดเพียงค่าเดียว คือปิด TLS 1.2 ได้ถูกต้องแล้ว แต่ไม่เคยเปิด TLS 1.3 หรือไม่เคยส่ง HSTS ที่ยาวพอ
อะไรเป็นตัวกำหนดเกรดจริง ๆ
CertH ให้คะแนนห้าหมวดแบบถ่วงน้ำหนักจาก TLS handshake ล้วน ๆ ได้แก่ ความถูกต้องและเชนของใบรับรอง ความแข็งแรงของคีย์และอัลกอริทึมลายเซ็น เวอร์ชันโปรโตคอลที่เสนอ ชุดรหัสลับที่เจรจาได้ และ HSTS กับ OCSP stapling ไม่มีการเข้าถึงเซิร์ฟเวอร์ ไม่มีเอเจนต์ ไม่มีการอัปโหลดไฟล์คอนฟิก ทุกอย่างถูกสังเกตจากภายนอกเหมือนที่เบราว์เซอร์เห็น
เกณฑ์ง่ายมาก A+ ต้องได้คะแนน 95 ขึ้นไป มี TLS 1.3 ในรายการโปรโตคอลที่เจรจา และ HSTS ที่ preload แล้วหรือมี max-age อย่างน้อย 180 วัน A เริ่มที่ 90, B ที่ 80, C ที่ 70, D ที่ 55 ต่ำกว่า 55 คือ F ใบรับรองหมดอายุได้ 0 คะแนนอัตโนมัติ
สี่การเปลี่ยนแปลงที่พาจาก A ไป A+
ในทางปฏิบัติ ช่องว่างมักเป็นหนึ่งในสี่ข้อนี้เสมอ แก้ตามลำดับ แต่ละข้อตรวจสอบได้อย่างอิสระจากภายนอก จึงสแกนซ้ำได้หลังทุกขั้น
- •เปิด TLS 1.3 ให้คะแนนเองและจำเป็นสำหรับ A+ แม้ทุกอย่างอื่นจะเต็ม 100
- •ยก HSTS ให้อย่างน้อย max-age=15552000 (180 วัน) หนึ่งปี (31536000) เป็นค่าที่ใช้ทั่วไป
- •ส่งเชนครบ รวมใบรับรองกลาง หากขาด intermediate บางไคลเอนต์จะเห็นเป็นเชนผิดพลาดและเสียคะแนน
- •เปิด OCSP stapling เพื่อให้การตรวจสอบการเพิกถอนไปกับการ handshake แทนที่จะรั่ว IP ผู้เข้าชมให้ CA
คอนฟิก nginx ที่ได้ A+
บล็อก server ที่สมบูรณ์สำหรับ nginx รุ่นใหม่ (1.19+ กับ OpenSSL 1.1.1+) ถ้า nginx ของคุณคอมไพล์กับ OpenSSL เก่ากว่า TLS 1.3 จะใช้ไม่ได้เงียบ ๆ ไม่ว่าคุณจะเขียนอะไรที่นี่ ตรวจด้วย nginx -V ก่อน
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
คอนฟิก Apache ที่ได้ A+
Apache ต้องประกาศแคช stapling ครั้งเดียวที่ระดับเซิร์ฟเวอร์ ไม่ใช่ใน virtual host ส่วนที่เหลือใส่ในบล็อก <VirtualHost *:443>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
ข้อผิดพลาดที่ทำให้เว็บค้างอยู่ที่ A
พบบ่อยที่สุด คือเปิด HSTS พร้อม includeSubDomains บนโดเมนที่ยังมีซับโดเมนแบบ HTTP ล้วน ซับโดเมนเหล่านั้นจะเปิดไม่ได้ทันที และปฏิกิริยาปกติคือลบเฮดเดอร์ทิ้งทั้งหมด ซึ่งทำให้กลับไปที่ A ให้ทยอยเปิด HSTS เริ่มที่ max-age 300 วินาที ดูไปหนึ่งสัปดาห์ แล้วค่อยไต่ขึ้นเป็นหนึ่งปี
ข้อผิดพลาดที่พบบ่อยเป็นอันดับสอง คือคิดว่า TLS 1.3 เปิดอยู่เพราะใบรับรองใหม่ ใบรับรองกับเวอร์ชันโปรโตคอลเป็นอิสระต่อกัน ใบรับรองใหม่เอี่ยมบนเซิร์ฟเวอร์ที่พูดได้แค่ TLS 1.2 ยังได้ต่ำกว่า 95
อันดับสาม คือ CDN ที่อยู่หน้า origin ถ้า Cloudflare, Fastly หรือโหลดบาลานเซอร์เป็นตัวปิด TLS คอนฟิกที่ origin ก็ไม่มีความหมาย เกรดสะท้อน edge ดังนั้นต้องแก้ที่นั้น
ตรวจสอบด้วยตัวเอง
ทุกการเปลี่ยนแปลงยืนยันได้ในไม่กี่วินาทีจาก terminal TLS 1.3 จะเจรจาเฉพาะเมื่อเซิร์ฟเวอร์เสนอจริง HSTS ปรากฏในเฮดเดอร์ตอบกลับ และ stapling จะเห็นในบล็อก OCSP response
# Does the server actually negotiate TLS 1.3?
openssl s_client -connect example.com:443 -tls1_3 -servername example.com </dev/null 2>/dev/null | grep "Protocol"
# Is HSTS set, and for how long?
curl -sI https://example.com | grep -i strict-transport-security
# Is OCSP stapling actually working?
openssl s_client -connect example.com:443 -status -servername example.com </dev/null 2>/dev/null | grep -A2 "OCSP Response"
FAQ
A+ ต้องใช้ใบรับรองแบบเสียเงินหรือ EV หรือไม่?
ไม่ต้อง ใบรับรองแบบตรวจสอบโดเมน (DV) ก็ได้ A+ เกรดวัดการตั้งค่า TLS ไม่ได้วัดระดับการตรวจสอบ ชนิดใบรับรองมีผลเฉพาะเมื่อมันเปลี่ยนเชนหรืออัลกอริทึมคีย์
ทำไมเกรดตกลงหลังต่ออายุใบรับรอง?
การต่ออายุมักเปลี่ยนผู้ออกหรือชนิดคีย์ และบางเซิร์ฟเวอร์จะกลับไปใช้ชุดรหัสลับอื่นหลัง reload CertH บันทึกการเปลี่ยนแปลงนี้ในส่วนวิเคราะห์การเปลี่ยนแปลงคะแนนของรายงานโดเมน พร้อมเหตุผลเฉพาะ
ต้องทำ HSTS preload เพื่อได้ A+ ไหม?
ไม่ต้อง preload เป็นเพียงหนึ่งในสองวิธีที่จะผ่านข้อกำหนด HSTS การมี max-age อย่างน้อย 180 วันโดยไม่ preload ก็พอ preload เข้มงวดกว่าและถอนยากกว่ามาก ให้ถือเป็นทางเลือก