- เครื่องมือสำหรับสร้างการตั้งค่า SSL/TLS อัตโนมัติให้เหมาะกับซอฟต์แวร์เซิร์ฟเวอร์หลากหลายประเภท
- รองรับสภาพแวดล้อมเซิร์ฟเวอร์มากกว่า 20 ประเภท เช่น Apache, nginx, HAProxy, Tomcat
- มีโปรไฟล์การกำหนดค่า Mozilla 3 แบบ ได้แก่ Modern, Intermediate, Old ให้เลือกตามระดับความปลอดภัยและความเข้ากันได้
- สร้างการตั้งค่าแบบปรับแต่งได้ด้วยการป้อนเวอร์ชัน OpenSSL และเวอร์ชันเซิร์ฟเวอร์ พร้อมตัวเลือกการรีไดเรกต์ HTTPS
- เป็นเครื่องมือที่มีประโยชน์ซึ่งเชื่อมโยงกับแนวทางด้านความปลอดภัยของ Mozilla เพื่อช่วยให้ตั้งค่าเซิร์ฟเวอร์อย่างปลอดภัยได้ง่าย
ภาพรวม
- Mozilla SSL Configuration Generator เป็นเครื่องมือบนเว็บที่ช่วยให้ผู้ดูแลเซิร์ฟเวอร์สร้างการกำหนดค่า SSL/TLS ที่ปลอดภัยได้อย่างง่ายดาย
- สร้างสคริปต์การตั้งค่าโดยอัตโนมัติตามนโยบายความปลอดภัยของ Mozilla และค่าที่แนะนำสำหรับ TLS ให้เหมาะกับสภาพแวดล้อมของแต่ละเซิร์ฟเวอร์
ซอฟต์แวร์เซิร์ฟเวอร์ที่รองรับ
- ที่รองรับได้แก่ Apache, AWS ALB/ELB, Caddy, Coturn, Dovecot, Exim, Go, HAProxy, Jetty, lighttpd, MySQL, nginx, Oracle HTTP, Postfix, PostgreSQL, ProFTPD, Redis, Squid, stunnel, Tomcat, Traefik เป็นต้น
- มีเทมเพลตการตั้งค่า SSL ที่ปรับให้เหมาะกับแต่ละเซิร์ฟเวอร์
โปรไฟล์การกำหนดค่าของ Mozilla
- Modern: รองรับ TLS 1.3 เหมาะสำหรับบริการสมัยใหม่ที่ไม่ต้องการความเข้ากันได้ย้อนหลัง
- Intermediate: เหมาะสำหรับเซิร์ฟเวอร์ทั่วไปที่คำนึงถึงความเข้ากันได้กับไคลเอนต์หลากหลายประเภท และแนะนำสำหรับระบบส่วนใหญ่
- Old: ใช้เฉพาะในกรณีที่จำเป็นต้องคงความเข้ากันได้กับไคลเอนต์ที่เก่ามาก
รายการตั้งค่าสภาพแวดล้อม
- ป้อน Server Version และ OpenSSL Version เพื่อสร้างการตั้งค่าที่เหมาะกับสภาพแวดล้อมนั้น
- รองรับฟังก์ชันรีไดเรกต์ HTTPS และต้องเปิดใช้งาน JavaScript
ข้อมูลอ้างอิงและทรัพยากร
- มีลิงก์ไปยังเอกสารทางการและแนวทางด้านความปลอดภัยของ Mozilla
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ในทำนองเดียวกัน ก็มีเครื่องมืออย่าง SecurityHeaders สำหรับสแกน security headers ของเว็บไซต์, SSL Labs Test สำหรับตรวจสอบการตั้งค่า TLS และ testssl.sh ที่ใช้สแกนเว็บไซต์จากบรรทัดคำสั่ง
มีประโยชน์ในสภาพแวดล้อมที่ไม่สามารถเข้าถึงอินเทอร์เน็ตได้ หรือเมื่อต้องการสร้างรายงาน HTML แบบอัตโนมัติ
แม้จะทำ parallelization และปิดบางออปชันแล้วก็ยังใช้เวลาอย่างน้อย 20 วินาที แต่เครื่องมือตัวใหม่นี้เร็วกว่า 60~100 เท่า
ไม่มีการวิเคราะห์ช่องโหว่ แต่เป้าหมายคือดึงการตั้งค่าออกมา
แต่ละ header มีหน้าที่ต่างกัน และขึ้นอยู่กับวัตถุประสงค์ของเว็บไซต์ ก็มีกรณีที่ไม่ควรใช้ด้วย
ตัวอย่างเช่น ต่อให้มี header CSP อยู่ ก็มักจะตั้งค่าแบบไม่มีความหมายในทางปฏิบัติ
ไม่เข้าใจว่าทำไมยังใช้คำว่า “SSL” อยู่
รู้สึกเหมือนลืมความก้าวหน้าทางเทคโนโลยีในช่วง 10 ปีที่ผ่านมา
ถ้าบอกลูกค้าว่าจะตั้งค่าใบรับรอง TLS ก็มีหลายคนกังวลว่า “เราต้องใช้ SSL นะ”
สุดท้ายมันคือปัญหาเรื่องการรับรู้ ผู้ใช้ทั่วไปไม่รู้จัก TLS และบริษัทต่าง ๆ ก็ยังใช้ SSL ต่อไปเพื่อหลีกเลี่ยงความสับสน
แม้แต่หน้า SSL ของ Cloudflare ก็ใช้ SSL ใน path แต่เนื้อหาจริงกลับเน้น TLS จึงชวนสับสน
เพราะ Netscape Navigator สืบทอดมาสู่ Mozilla จึงพอเข้าใจได้ว่าทำไม Mozilla ยังใช้คำว่า SSL อยู่มาก
รู้สึกว่าถ้าซอฟต์แวร์ 75% ที่มีอยู่ตอนนี้หายไป โลกอาจจะดีขึ้นด้วยซ้ำ
หลังจากนั้นมันก็กลายเป็นชื่อเรียกรวมของ HTTP ที่เข้ารหัส และแม้ชื่อโปรโตคอลจะเปลี่ยนเป็น TLS แล้ว คนก็ยังเรียกมันว่า SSL อยู่ดี
ไม่ควรปล่อยให้การตั้งค่า cipher เป็นหน้าที่ของนักพัฒนาแอปพลิเคชันหรือผู้ดูแลระบบ
บทความ TLS Cipher Suites บนบล็อก Go น่าอ่านมาก
Mozilla SSL Configuration Generator ยอดเยี่ยมก็จริง แต่จริง ๆ แล้วมันเป็นเครื่องมือที่ไม่ควรจำเป็นต้องมี
ไลบรารีอย่าง OpenSSL มีcipher preset อยู่แล้ว แต่แปลกที่ตัว generator ไม่ขยายจากจุดนั้น
ตัวอย่างเช่น การจัดชุดแบบ “HIGH:!kRSA:!kEDH:!SHA1:!CAMELLIA:!ARIA” ช่วยคงความปลอดภัยไว้พร้อมกับใช้ algorithm สมัยใหม่ได้
การตั้งค่าแบบนี้ช่วยป้องกันปัญหาที่เผลอปิดใช้งานcipher suite ที่แข็งแกร่งอย่าง ECC key หรือ ChaCha20
นี่จึงเป็นเหตุผลที่ทำให้บางเซิร์ฟเวอร์ไม่รองรับ EdDSA หรือ post-quantum hybrid algorithm
ทุกวันนี้การใส่OCSP staplingเข้าไปดูเป็นเรื่องประชดประชันอยู่เหมือนกัน
เพราะทั้งเบราว์เซอร์และ Let's Encrypt ต่างก็เลิกใช้ OCSP ในทางปฏิบัติไปแล้ว
Mozilla ยังมีคู่มือการตั้งค่า SSH ด้วย
ดูได้ที่ แนวทางความปลอดภัย OpenSSH
อยากให้มีการตั้งค่าแบบ turnkeyที่นักพัฒนาเซิร์ฟเวอร์เพียงแค่ระบุปีหรือระดับความปลอดภัย (secure, medium, loose) ก็พอ
การเลือก SSL cipher ทุกวันนี้แทบเป็นระดับcargo cultจนไม่รู้จริง ๆ ว่ากำลังทำอะไรอยู่
เคยสงสัยว่าทำไมถึงแนะนำให้ตั้งค่า SSLHonorCipherOrder เป็น Off
เพราะ cipher ระดับ Modern และ Intermediate ล้วนปลอดภัยทั้งหมด จึงมีประสิทธิภาพกว่าหากปล่อยให้ไคลเอนต์เลือก cipher ที่เหมาะกับฮาร์ดแวร์ของตัวเอง
รายละเอียดมีอยู่ในคอมเมนต์บน issue และ Mozilla wiki
น่าเสียดายที่ตัวสร้างการตั้งค่าไม่มีตัวเลือกmTLS (mutual TLS)
ในสถานการณ์ที่ต้องใช้ client certificate มันมีประโยชน์มาก แต่ดูเหมือนจะถูกตัดออกเพราะเป็นฟีเจอร์ที่เฉพาะทางเกินไป
รายการ “AWS ELB” ดูเหมือนจะหมายถึงClassic Load Balancer
ทุกวันนี้ “AWS ALB” หมายถึง Application Load Balancer แล้ว จึงทำให้คำศัพท์ชวนสับสน
อยากให้มีเครื่องมือคล้ายกันสำหรับการตั้งค่า OpenSSL