Cryptology Academy · บทเรียน

Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME

ทำให้การออกและต่ออายุใบรับรองเป็นอัตโนมัติด้วยโพรโทคอล ACME โดยใช้ Certbot และไคลเอนต์อื่น ๆ

บทเรียน 4 จาก 413 ขั้นตอน

Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำเกี่ยวกับ Let's Encrypt

Let's Encrypt เป็น CA ที่ให้บริการฟรี ทำงานอัตโนมัติ และเปิดกว้าง ดำเนินการโดยกลุ่มวิจัยความปลอดภัยอินเทอร์เน็ต (ISRG) และเปิดตัวรุ่นเบตาสาธารณะในเดือนธันวาคม 2015 ปัจจุบันได้ออกใบรับรองไปแล้วมากกว่า 3 พันล้านใบ และเพิ่มการใช้งาน HTTPS ทั่วเว็บอย่างมาก ด้วยการขจัดค่าใช้จ่ายและความซับซ้อนในการขอใบรับรอง TLS ที่ได้รับความเชื่อถือจากสาธารณะ

ภาพรวมโปรโตคอล ACME

โปรโตคอล ACME หรือสภาพแวดล้อมการจัดการใบรับรองอัตโนมัติ (Automated Certificate Management Environment) ซึ่งได้รับการกำหนดมาตรฐานเป็น RFC 8555 ในปี 2019 ระบุวิธีที่ไคลเอนต์จะพิสูจน์ความเป็นเจ้าของโดเมนโดยอัตโนมัติและรับใบรับรองจาก CA โปรโตคอล ACME แทนที่กระบวนการตรวจสอบโดเมนด้วยการแลกเปลี่ยนอัตโนมัติที่ผ่านการตรวจสอบทางการเข้ารหัส ทำให้สามารถจัดการวงจรชีวิตใบรับรองโดยไม่ต้องดำเนินการด้วยตนเอง

การท้าทาย HTTP-01

การท้าทาย HTTP-01 ตรวจสอบความเป็นเจ้าของโดเมนโดยกำหนดให้ไคลเอนต์ ACME วางไฟล์โทเค็นที่ระบุไว้ที่ "http://DOMAIN/.well-known/acme-challenge/TOKEN" จากนั้น CA จะเรียก URL นี้เพื่อยืนยันโทเค็น HTTP-01 นำไปใช้งานได้ง่าย แต่ต้องเปิดให้เข้าถึงพอร์ต 80 และไม่สามารถใช้กับใบรับรองไวลด์การ์ดได้

การท้าทาย DNS-01

การท้าทาย DNS-01 ตรวจสอบความเป็นเจ้าของโดเมนโดยกำหนดให้ไคลเอนต์ ACME สร้างระเบียน TXT ของ DNS ที่ "_acme-challenge.DOMAIN" พร้อมค่าที่ระบุไว้ จากนั้น CA จะสอบถาม DNS เพื่อยืนยันระเบียนดังกล่าว DNS-01 เป็นการท้าทายประเภทเดียวที่รองรับการออกใบรับรองไวลด์การ์ด ("*.example.com") และยังทำงานได้แม้เว็บเซิร์ฟเวอร์จะอยู่หลังไฟร์วอลล์

การท้าทาย TLS-ALPN-01

การท้าทาย TLS-ALPN-01 ตรวจสอบความเป็นเจ้าของโดเมนที่ชั้น TLS โดยใช้ตัวระบุโปรโตคอล ALPN แบบกำหนดเอง "acme-tls/1" ไคลเอนต์ ACME จะให้บริการใบรับรองที่ลงนามด้วยตนเองเป็นการชั่วคราว พร้อมโทเค็นการท้าทายในส่วนขยายพิเศษบนพอร์ต 443 การท้าทายนี้ทำงานได้โดยไม่ต้องมีเว็บเซิร์ฟเวอร์ที่กำลังทำงาน และรองรับสภาพแวดล้อมที่มีการกระจายโหลด

ไคลเอนต์อ้างอิง Certbot

Certbot เป็นไคลเอนต์ ACME อ้างอิงของมูลนิธิพรมแดนอิเล็กทรอนิกส์สำหรับ Let's Encrypt โดยทำให้วงจรชีวิตใบรับรองทั้งหมดเป็นอัตโนมัติ ได้แก่ การตรวจสอบโดเมน การออกใบรับรอง และการต่ออายุโดยอัตโนมัติ Certbot มีปลั๊กอินสำหรับ Apache และ nginx ที่กำหนดค่าการตั้งค่า TLS โดยอัตโนมัติ ในดิสทริบิวชัน Linux รุ่นใหม่ ให้ติดตั้งด้วยคำสั่ง "snap install --classic certbot"

ไคลเอนต์ ACME ทางเลือก

นอกจาก Certbot แล้ว ยังมีไคลเอนต์ ACME อีกมากมายสำหรับกรณีการใช้งานที่แตกต่างกัน acme.sh เป็นไคลเอนต์ ACME ที่เป็นสคริปต์เชลล์ล้วน ซึ่งใช้กันอย่างแพร่หลายในสภาพแวดล้อมที่มีทรัพยากรจำกัด เว็บเซิร์ฟเวอร์ Caddy มี ACME ในตัวและต่ออายุใบรับรองโดยอัตโนมัติ ส่วน Traefik ซึ่งใช้ในสภาพแวดล้อมคอนเทนเนอร์ จะจัดการ ACME ผ่านการกำหนดค่า certificatesResolvers สำหรับงานที่ทำงานในคอนเทนเนอร์

การทำให้การต่ออายุใบรับรองเป็นอัตโนมัติ

ใบรับรองของ Let's Encrypt มีระยะเวลามีผล 90 วันโดยตั้งใจ เพื่อส่งเสริมการทำงานอัตโนมัติและลดช่วงเวลาที่คีย์ส่วนตัวซึ่งถูกบุกรุกอาจสร้างความเสียหายได้ Certbot จะติดตั้งตัวจับเวลาของ systemd หรืองาน cron ที่ทำงานด้วยคำสั่ง "certbot renew" วันละสองครั้ง เพื่อเปลี่ยนใบรับรองใด ๆ ที่จะหมดอายุภายใน 30 วัน การต่ออายุด้วยตนเองเป็นรูปแบบที่ควรหลีกเลี่ยง เพราะอาจทำให้บริการหยุดชะงัก

ขีดจำกัดอัตราของ Let's Encrypt

Let's Encrypt บังคับใช้ขีดจำกัดอัตราเพื่อป้องกันการใช้งานในทางที่ผิด ขีดจำกัดหลักคือใบรับรอง 50 ใบต่อโดเมนที่จดทะเบียนหนึ่งโดเมนต่อสัปดาห์ และใบรับรองซ้ำ 5 ใบต่อสัปดาห์ ความพยายามตรวจสอบที่ล้มเหลวก็ถูกจำกัดอัตราเช่นกัน โดยกำหนดไว้ที่ 5 ครั้งต่อชื่อโฮสต์ต่อชั่วโมง ระหว่างการพัฒนา สภาพแวดล้อมสำหรับทดสอบของ Let's Encrypt จะออกใบรับรองได้ไม่จำกัด โดยใช้ CA สำหรับการทดสอบที่ไม่ได้รับความเชื่อถือจากสาธารณะ

ใบรับรองหลายโดเมนและไวลด์การ์ด

ใบรับรอง ACME ใบเดียวสามารถครอบคลุมหลายโดเมนได้ (ชื่อทางเลือกของหัวเรื่อง) คำสั่ง "certbot --domains example.com,www.example.com,api.example.com" จะออกใบรับรองที่มี SAN สามรายการ ใบรับรองไวลด์การ์ด ("*.example.com") ต้องใช้การตรวจสอบ DNS-01 และครอบคลุมโดเมนย่อยระดับเดียวทั้งหมด ใบรับรองไวลด์การ์ดไม่ครอบคลุมโดเมนหลัก (example.com) เอง จึงต้องเพิ่ม SAN อีกหนึ่งรายการ

ACME สำหรับ PKI ภายใน

โปรโตคอล ACME ไม่ได้จำกัดอยู่เพียง Let's Encrypt เท่านั้น CA ภายใน เช่น Step-CA (smallstep), EJBCA และ HashiCorp Vault สามารถเปิดปลายทาง ACME เพื่อทำให้การจัดการใบรับรองภายในเป็นอัตโนมัติได้ วิธีนี้ทำให้สามารถนำการจัดการวงจรชีวิตใบรับรองแบบอัตโนมัติเดียวกับที่ใช้กับบริการที่เปิดให้สาธารณะเข้าถึง มาปรับใช้กับโครงสร้างพื้นฐาน mTLS ภายในและบริการส่วนตัวได้

ตรวจสอบการท้าทาย ACME

ต้องใช้การท้าทายประเภทใดของ ACME เพื่อออกใบรับรองไวลด์การ์ด เช่น "*.example.com"?

สรุปบทเรียน: Let's Encrypt และ ACME

Let's Encrypt ให้บริการใบรับรองฟรีผ่านโปรโตคอล ACME (RFC 8555) การท้าทาย HTTP-01 ใช้ได้กับใบรับรองที่ไม่ใช่ไวลด์การ์ดบนพอร์ต 80 DNS-01 รองรับใบรับรองไวลด์การ์ดด้วยการพิสูจน์การควบคุมโซน DNS TLS-ALPN-01 ทำงานได้โดยไม่ต้องมีเว็บเซิร์ฟเวอร์ Certbot และ acme.sh ช่วยทำให้วงจรชีวิตทั้งหมดเป็นอัตโนมัติ ใบรับรองอายุ 90 วันจำเป็นต้องมีกระบวนการอัตโนมัติ และขีดจำกัดอัตราทำให้ต้องใช้สภาพแวดล้อมสำหรับทดสอบระหว่างการทดสอบ

เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

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

บทเรียน “Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME”

ทำให้การออกและต่ออายุใบรับรองเป็นอัตโนมัติด้วยโพรโทคอล ACME โดยใช้ Certbot และไคลเอนต์อื่น ๆ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานสำคัญของ OpenSSL ผ่านบรรทัดคำสั่ง
  2. การสร้างและจัดการสายโซ่ใบรับรอง
  3. OCSP Stapling และความโปร่งใสของใบรับรอง
  4. Let's Encrypt และการทำงานอัตโนมัติด้วยโพรโทคอล ACME
← กลับไปที่ Cryptology Academy