• 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น