- NGINX เปิดตัวพรีวิวที่รองรับ โปรโตคอล ACME แบบเนทีฟสำหรับทำงานอัตโนมัติในการออกและต่ออายุใบรับรอง SSL/TLS
- ผ่านโมดูลใหม่แบบ Rust ชื่อ
ngx_http_acme_module ทำให้สามารถขอ ติดตั้ง และต่ออายุใบรับรองได้จากการตั้งค่า NGINX โดยตรงโดยไม่ต้องใช้เครื่องมือภายนอก
- สิ่งนี้ช่วยลดการพึ่งพาเครื่องมือภายนอกอย่าง Certbot พร้อมเพิ่มความปลอดภัยและความเป็นอิสระจากแพลตฟอร์ม
- เวอร์ชันเริ่มต้นรองรับ HTTP-01 challenge และมีแผนจะรองรับ TLS-ALPN และ DNS-01 ในอนาคต
- คาดว่าการรองรับ ACME จะมีบทบาทสำคัญต่อการทำงานอัตโนมัติด้านความปลอดภัย ไม่ใช่แค่บนเว็บ แต่รวมถึง IoT และสภาพแวดล้อม edge computing ด้วย
ภาพรวมและการเปลี่ยนแปลงสำคัญ
- NGINX เปิดตัว พรีวิวของฟีเจอร์รองรับโปรโตคอล ACME
- ผ่านโมดูลใหม่
ngx_http_acme_module ซึ่งออกแบบมาให้จัดการการขอ ติดตั้ง และต่ออายุใบรับรองได้โดยตรงจากการตั้งค่า NGINX
- การรองรับ ACME นี้ใช้ NGINX-Rust SDK ภายใน และให้มาในรูปแบบโมดูลไดนามิกที่พัฒนาด้วย Rust
- ฟีเจอร์นี้ใช้งานได้ทั้งสำหรับผู้ใช้โอเพนซอร์สและลูกค้าองค์กร NGINX Plus
- การลดการพึ่งพาเครื่องมือภายนอกอย่าง Certbot ช่วยเพิ่มทั้งความปลอดภัยและประสิทธิภาพของการจัดการใบรับรอง
แนะนำโปรโตคอล ACME
- โปรโตคอล ACME (Automated Certificate Management Environment) เป็นโปรโตคอลสื่อสารสำหรับทำงานอัตโนมัติในการออก ตรวจสอบ ต่ออายุ และเพิกถอนใบรับรอง SSL/TLS
- ไคลเอนต์สามารถจัดการวงจรชีวิตของใบรับรองได้โดยตรงผ่าน การสื่อสารอัตโนมัติกับ CA (Certificate Authority) โดยไม่ต้องอาศัยงานแบบแมนนวลจากคนกลาง
- พัฒนาและเผยแพร่โดย Internet Security Research Group (ISRG) ในปี 2015 ผ่านโครงการ Let’s Encrypt
- ก่อนการมาของ ACME กระบวนการออกใบรับรองเป็นงานแบบแมนนวล และมีทั้งต้นทุนกับโอกาสเกิดความผิดพลาดสูง
- ACMEv2 รุ่นปัจจุบันเพิ่มความสามารถหลากหลาย เช่น วิธีการยืนยันตัวตนและการรองรับไวลด์การ์ด ทำให้มีความยืดหยุ่นและปลอดภัยมากขึ้น
ขั้นตอนการทำงานอัตโนมัติของใบรับรองด้วย ACME ใน NGINX
- การทำงานอัตโนมัติของวงจรชีวิตใบรับรองด้วยโปรโตคอล ACME ใน NGINX ประกอบด้วย 4 ขั้นตอนดังนี้
-
1. ตั้งค่าเซิร์ฟเวอร์ ACME
- ในการเปิดใช้ฟีเจอร์ ACME ต้องระบุ directory URL ของเซิร์ฟเวอร์ ACME ด้วย
acme_issuer
- เมื่อมีการออกใบรับรอง ยังสามารถกำหนดตัวเลือกเพิ่มเติม เช่น ข้อมูลติดต่อไคลเอนต์ และพาธสำหรับเก็บข้อมูลสถานะได้
-
2. จัดสรรหน่วยความจำที่ใช้ร่วมกัน (zone)
- สามารถตั้งค่า shared memory zone เพิ่มเติมผ่าน
acme_shared_zone เพื่อเก็บใบรับรอง คีย์ส่วนตัว และข้อมูล challenge
- ขนาดเริ่มต้นคือ 256K และขยายได้ตามต้องการ
-
3. ตั้งค่า challenge
- เวอร์ชันพรีวิวปัจจุบันรองรับเฉพาะ HTTP-01 challenge ซึ่งใช้สำหรับยืนยันความเป็นเจ้าของโดเมน
- เพื่อให้ทำงานได้ ต้องกำหนด listener บนพอร์ต 80 และ การตอบกลับ 404 แบบค่าเริ่มต้น ในการตั้งค่า NGINX
- มีแผนจะรองรับ TLS-ALPN และ DNS-01 challenge ในภายหลัง
-
4. ออกและต่ออายุใบรับรอง
- หากเพิ่ม directive
acme_certificate ลงใน server block ก็จะสามารถทำงานอัตโนมัติในการออก/ต่ออายุใบรับรอง TLS สำหรับโดเมนนั้นได้
- โดยทั่วไปโดเมนเป้าหมายของการออกใบรับรองจะระบุด้วย
server_name
- ในเวอร์ชันพรีวิว
server_name ที่เป็น regular expression และ wildcard ยังไม่รองรับ
- ตัวแปร
$acme_certificate และ $acme_certificate_key ภายในโมดูลจะเชื่อมใบรับรองและคีย์ให้โดยอัตโนมัติ
ข้อดีสำคัญ
- โปรโตคอล ACME เป็นหัวใจสำคัญของการเติบโตอย่างรวดเร็วของการใช้งาน HTTPS ทั่วโลก
- การจัดการใบรับรองแบบอัตโนมัติช่วยลดอย่างมากทั้ง ต้นทุนในการจัดการวงจรชีวิตใบรับรอง และ ข้อผิดพลาดจากงานแมนนวล
- การตัดเครื่องมือภายนอกออกช่วย ลดพื้นผิวการโจมตี และ เพิ่มความสามารถในการพกพา
- ช่วยผลักดัน การทำมาตรฐานด้านความปลอดภัย ในหลากหลายสภาพแวดล้อม
แผนในอนาคต
- มีแผนเพิ่มการรองรับ TLS-ALPN และ DNS-01 challenge
- ขยายความสามารถตามฟีดแบ็กของผู้ใช้
- เมื่อการนำ IoT, API และ edge computing ไปใช้งานเพิ่มขึ้น คาดว่า ACME จะมีบทบาทสำคัญในโครงสร้างพื้นฐานด้านความปลอดภัยแบบอัตโนมัติที่ครอบคลุมยิ่งขึ้นในอนาคต
- การรองรับ ACME แบบเนทีฟของ NGINX จะเป็นรากฐานสำคัญในการผลักดันให้ความปลอดภัยบนเว็บ การทำงานอัตโนมัติ และความสามารถในการขยายระบบ กลายเป็นมาตรฐานแห่งอนาคต
เริ่มต้นใช้งาน
- ผู้ใช้โอเพนซอร์สสามารถใช้โมดูลแบบ prebuilt ได้จาก NGINX Linux packages
- ลูกค้าองค์กร NGINX Plus จะได้รับในรูปแบบโมดูลไดนามิกที่รองรับโดย F5
- ดูเอกสารของโมดูลได้ที่ NGINX Docs
ยังไม่มีความคิดเห็น