สำหรับคำอธิบายโดยละเอียดเกี่ยวกับวิธีการทำงานของ Let's Encrypt DNS-01 Challenge (หรือการตรวจสอบ DNS) โปรดอ่านบทความเรื่อง Let's Encrypt DNS-01 Challenge คืออะไร และวิธีใช้งานเพื่อรับใบรับรอง SSL
ในบทความนี้ เราจะแสดงวิธีใช้การตรวจสอบ Let's Encrypt DNS เพื่อรับใบรับรอง SSL สำหรับชื่อโดเมนของคุณโดยใช้ปลั๊กอิน Certbot และ Certbot CloudFlare DNS
หัวข้อเนื้อหา:
- การจัดการโดเมนของคุณด้วย CloudFlare DNS
- การติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare บน Ubuntu/Debian
- การติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare บน Fedora
- การติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare บนสตรีม RHEL/AlmaLinux/Rocky Linux/CentOS
- การตรวจสอบว่าติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare อย่างถูกต้องหรือไม่
- การสร้างโทเค็น CloudFlare API
- การจัดเก็บโทเค็น CloudFlare API อย่างปลอดภัยบนคอมพิวเตอร์/เซิร์ฟเวอร์
- การสร้างใบรับรอง SSL โดยใช้การตรวจสอบ DNS ของ Certbot CloudFlare
- แสดงรายการใบรับรอง Let's Encrypt โดยใช้ Certbot
- การต่ออายุใบรับรอง Let's Encrypt โดยใช้ Certbot
- บทสรุป
- อ้างอิง
การจัดการโดเมนของคุณด้วย CloudFlare DNS
หากต้องการรับใบรับรอง Let's Encrypt SSL โดยใช้การตรวจสอบ DNS ของ CloudFlare คุณต้องมีบัญชี CloudFlare และโดเมนของคุณต้องใช้ CloudFlare DNS คุณสามารถ สร้างบัญชี CloudFlare ได้ฟรี และบริการ CloudFlare DNS ก็ใช้งานได้ฟรีเช่นกัน
หากต้องการจัดการโดเมนของคุณด้วย CloudFlare DNS คุณสามารถดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้:
- ลงทะเบียนโดเมนของคุณจาก CloudFlare
- โอนโดเมนของคุณไปที่ CloudFlare
- เปลี่ยนเนมเซิร์ฟเวอร์ DNS ของชื่อโดเมนของคุณเป็นเนมเซิร์ฟเวอร์ CloudFlare DNS จากแดชบอร์ดของผู้รับจดทะเบียนโดเมนของคุณ
คุณไม่จำเป็นต้องซื้อโดเมนจาก CloudFlare หรือโอนโดเมนไปยัง CloudFlare เพื่อจัดการด้วยบริการ CloudFlare DNS คุณสามารถเปลี่ยนเนมเซิร์ฟเวอร์ของโดเมนของคุณเป็นเนมเซิร์ฟเวอร์ CloudFlare DNS ได้จากแดชบอร์ดของผู้รับจดทะเบียนโดเมนของคุณ (ที่คุณซื้อโดเมนมา) และจัดการโดเมนของคุณจาก CloudFlare หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนเนมเซิร์ฟเวอร์ของโดเมนของคุณเป็นเนมเซิร์ฟเวอร์ CloudFlare DNS โปรดอ่านบทความนี้
การติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare บน Ubuntu/Debian
ปลั๊กอิน Certbot และ Certbot CloudFlare มีอยู่ในที่เก็บแพ็คเกจอย่างเป็นทางการของ Ubuntu/Debian ดังนั้นคุณสามารถติดตั้งบน Ubuntu/Debian ได้อย่างง่ายดาย
ขั้นแรก ให้อัปเดตแคชที่เก็บแพ็กเกจ APT ด้วยคำสั่งต่อไปนี้:
- ซูโดะ ปรับปรุงให้ดี
หากต้องการติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS ให้รันคำสั่งต่อไปนี้:
- ซูโดะ ฉลาด ติดตั้ง certbot python3-certbot-dns-cloudflareเพื่อยืนยันการติดตั้ง ให้กด “Y” จากนั้นกด <ป้อน> -
กำลังติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS ใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์
ณ จุดนี้ ควรติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS
การติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare บน Fedora
ปลั๊กอิน Certbot และ Certbot CloudFlare มีอยู่ในที่เก็บแพ็คเกจอย่างเป็นทางการของ Fedora และสามารถติดตั้งบน Fedora ได้อย่างง่ายดาย
ขั้นแรก ให้อัพเดตฐานข้อมูลแพ็กเกจ DNF ด้วยคำสั่งต่อไปนี้:
- ซูโดะ dnf makecache
หากต้องการติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS บน Fedora ให้รันคำสั่งต่อไปนี้:
- ซูโดะ dnf ติดตั้ง certbot python3-certbot-dns-cloudflareเพื่อยืนยันการติดตั้ง ให้กด “Y” จากนั้นกด <ป้อน> -
กำลังติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS ใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์
ณ จุดนี้ ควรติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS บน Fedora
การติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare บนสตรีม RHEL/AlmaLinux/Rocky Linux/CentOS
ปลั๊กอิน Certbot CloudFlare DNS ไม่มีอยู่ในที่เก็บแพ็กเกจอย่างเป็นทางการของ RHEL/AlmaLinux/Rocky Linux/CentOS Stream ปลั๊กอิน Certbot CloudFlare DNS มีอยู่ในที่เก็บแพ็คเกจ EPEL คุณสามารถเปิดใช้งานพื้นที่เก็บข้อมูลแพ็คเกจ EPEL บนสตรีม RHEL/AlmaLinux/Rocky Linux/CentOS และติดตั้งปลั๊กอิน Certbot CloudFlare DNS จากที่นั่น
เมื่อคุณเปิดใช้งานที่เก็บแพ็คเกจ EPEL แล้ว ให้อัพเดตแคชฐานข้อมูล DNF ด้วยคำสั่งต่อไปนี้:
- ซูโดะ dnf makecache
จากนั้น ติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS บนระบบสตรีม RHEL/AlmaLinux/Rocky Linux/CentOS ด้วยคำสั่งต่อไปนี้:
- ซูโดะ dnf ติดตั้ง certbot python3-certbot-dns-cloudflareเพื่อยืนยันการติดตั้ง ให้กด “Y” จากนั้นกด <ป้อน> -
กำลังติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS ใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์
หากต้องการยอมรับคีย์ GPG ของที่เก็บ EPEL ให้กด 'Y' จากนั้นกด <ป้อน> -
ณ จุดนี้ ควรติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare DNS
การตรวจสอบว่าติดตั้งปลั๊กอิน Certbot และ Certbot CloudFlare อย่างถูกต้องหรือไม่
หากต้องการตรวจสอบว่าติดตั้ง Certbot บนคอมพิวเตอร์ของคุณหรือไม่ ให้รันคำสั่งต่อไปนี้:
- ใบรับรอง --รุ่นหากติดตั้ง Certbot คำสั่งควรพิมพ์หมายเลขเวอร์ชันของ Certbot ที่ติดตั้งบนคอมพิวเตอร์ของคุณ
อย่างที่คุณเห็น เราได้ติดตั้ง Certbot 2.1.0 บนเครื่อง Debian ของเราแล้ว
หากต้องการตรวจสอบว่าติดตั้งปลั๊กอิน Certbot CloudFlare DNS บนคอมพิวเตอร์ของคุณหรือไม่ ให้รันคำสั่งต่อไปนี้:
- ซูโดะ ปลั๊กอิน Certbotหากมีการติดตั้งปลั๊กอิน Certbot CloudFlare DNS คุณควรพบ “dns-cloudflare” ในรายการปลั๊กอินตามที่ระบุไว้ในภาพหน้าจอต่อไปนี้:
การสร้างโทเค็น CloudFlare API
ในการตรวจสอบความเป็นเจ้าของโดเมน Certbot จำเป็นต้องเพิ่มระเบียน TXT บนโดเมนที่จัดการโดยเซิร์ฟเวอร์ CloudFlare DNS เพื่อสิ่งนั้น Certbot จำเป็นต้องเข้าถึงโทเค็น CloudFlare API คุณสามารถสร้างโทเค็น API สำหรับโดเมนของคุณได้จากแดชบอร์ด CloudFlare
ขั้นแรก เข้าสู่ระบบบัญชี CloudFlare ของคุณ จากนั้นคลิกที่ไอคอนโปรไฟล์ของคุณ
- ประวัติของฉัน จากมุมขวาบนของหน้า
ไปที่ส่วน 'โทเค็น API' [1] และคลิกที่ “สร้างโทเค็น” [2] -
คลิกที่ 'ใช้เทมเพลต' จากส่วน 'แก้ไข DNS โซน'
จากส่วน 'การอนุญาต' ให้อนุญาต 'แก้ไข' สำหรับ 'โซน DNS' โดยเลือกตัวเลือกที่ทำเครื่องหมายไว้จากเมนูแบบเลื่อนลง
หากคุณจัดการหลายโดเมนด้วย CloudFlare คุณสามารถอนุญาตให้แก้ไข “โซนเฉพาะ” ได้จากส่วน “ทรัพยากรโซน” การอนุญาตให้โทเค็น API แก้ไขเพียงโซนเดียวมีความปลอดภัยมากกว่าการอนุญาตให้โทเค็น API แก้ไขโซนทั้งหมด เนื่องจากหากโทเค็น API ถูกบุกรุก พื้นผิวการโจมตีก็จะเล็กลงและสร้างความเสียหายน้อยลง
หากคุณต้องการใช้คีย์ API เดียวเพื่อแก้ไขโดเมนที่จัดการ CloudFlare ทั้งหมดของคุณ ให้เลือก “โซนทั้งหมด” จากส่วน “ทรัพยากรโซน”
เมื่อคุณกำหนดค่าโทเค็น API เสร็จแล้ว ให้คลิก 'ดำเนินการต่อเพื่อสรุป'
สรุปการดำเนินการที่คุณสามารถทำได้บนโดเมนที่จัดการ CloudFlare ด้วยโทเค็น API จะปรากฏขึ้น คลิกที่ 'สร้างโทเค็น'
ควรสร้างโทเค็น API คัดลอกโทเค็น API ไปยังที่ที่ปลอดภัยเพื่อไม่ให้สูญหาย เมื่อออกจากหน้านี้ คุณจะไม่พบโทเค็น API นี้อีก คุณต้องสร้างโทเค็น API ใหม่ในกรณีที่คุณทำหาย:
ไลพีซีเอโคบีกX1UMHvcsvBFo41aItm2cCVxnjloZj5
การจัดเก็บโทเค็น CloudFlare API อย่างปลอดภัยบนคอมพิวเตอร์/เซิร์ฟเวอร์
Certbot จำเป็นต้องใช้โทเค็น CloudFlare API เพื่อเพิ่มระเบียน TXT ใหม่สำหรับโดเมนของคุณในเซิร์ฟเวอร์ CloudFlare DNS ดังนั้น คุณต้องจัดเก็บโทเค็น CloudFlare API บนคอมพิวเตอร์/เซิร์ฟเวอร์ของคุณ การจัดเก็บโทเค็น API โดยไม่รับรองสิทธิ์การเข้าถึงไฟล์ที่เหมาะสมอาจทำให้โปรแกรม/ผู้ใช้อื่นสามารถเข้าถึงโทเค็น API ได้ นี่ไม่ใช่สิ่งที่คุณต้องการด้วยเหตุผลด้านความปลอดภัย ในส่วนนี้ เราจะแสดงวิธีจัดเก็บโทเค็น CloudFlare API บนระบบไฟล์อย่างปลอดภัย
ขั้นแรก สร้างไดเร็กทอรี (เช่น ~/.secrets/certbot) ที่คุณต้องการจัดเก็บคีย์ CloudFlare API ดังนี้:
- mkdir -พีวี - - .ความลับ - ใบรับรอง
สร้างไฟล์ “cloudflare.ini” ในไดเร็กทอรีที่สร้างขึ้นใหม่ (เช่น ~/.secrets/certbot) และเปิดด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ (เช่น nano) ดังนี้:
- นาโน - - .ความลับ - ใบรับรอง - cloudflare.ini พิมพ์บรรทัดต่อไปนี้ในไฟล์ “cloudflare.ini” แล้วกด
เพื่อให้แน่ใจว่ามีสิทธิ์การเข้าถึงที่เหมาะสมสำหรับไฟล์ “cloudflare.ini” ให้รันคำสั่งต่อไปนี้เพื่อให้แน่ใจว่ามีเพียงผู้ใช้รูทเท่านั้นที่มีสิทธิ์อ่านและเขียนไฟล์:
- ซูโดะ ชวน รูต:รูท ~ - .ความลับ - ใบรับรอง - cloudflare.ini- ซูโดะ โครโมด 0600~ - .ความลับ - ใบรับรอง - cloudflare.ini
อย่างที่คุณเห็น มีเพียงผู้ใช้รูทเท่านั้นที่มีสิทธิ์อ่านและเขียนไฟล์ “cloudflare.ini”
- LS -ล - - .ความลับ - ใบรับรอง - cloudflare.ini
ผู้ใช้รายอื่นที่พยายามอ่านไฟล์ “cloudflare.ini” จะได้รับข้อความแสดงข้อผิดพลาด “Permission ถูกปฏิเสธ”
- แมว - - .ความลับ - ใบรับรอง - cloudflare.ini
การสร้างใบรับรอง SSL โดยใช้การตรวจสอบ DNS ของ Certbot CloudFlare
หากต้องการสร้างใบรับรอง Let's Encrypt SSL สำหรับชื่อโดเมนไวด์การ์ด “*.nodekite.com” โดยใช้การตรวจสอบ CloudFlare DNS ให้รันคำสั่ง cerbot ดังนี้:
- ซูโดะ certbot แน่นอน --dns-cloudflare --dns-cloudflare-ข้อมูลรับรอง - - .ความลับ - ใบรับรอง - cloudflare.ini -d - .nodekite.comหากต้องการสร้างใบรับรอง Let's Encrypt SSL สำหรับชื่อโดเมน “nodekite.com” และ “www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:
- ซูโดะ certbot แน่นอน --dns-cloudflare --dns-cloudflare-ข้อมูลรับรอง - - .ความลับ - ใบรับรอง - cloudflare.ini -d www.nodekite.com -d nodekite.comหากการเปลี่ยนแปลง DNS ใช้เวลานานในการเผยแพร่ไปยังเนมเซิร์ฟเวอร์ DNS ยอดนิยมทั่วโลก คุณสามารถใช้ตัวเลือก “–dns-cloudflare-propagation-seconds” ของ Certbot เพื่อกำหนดจำนวนวินาทีที่คุณต้องการให้ Certbot รอก่อนการตรวจสอบ DNS จะดำเนินการ
- ซูโดะ certbot แน่นอน --dns-cloudflare --dns-cloudflare-ข้อมูลรับรอง - - .ความลับ - ใบรับรอง - cloudflare.ini --dns-cloudflare-การขยายพันธุ์-วินาที 60 -d - .nodekite.comเมื่อคุณรันคำสั่ง Certbot คุณจะถูกขอให้พิมพ์ที่อยู่อีเมลของคุณ พิมพ์ที่อยู่อีเมลของคุณแล้วกด <ป้อน> ดำเนินการต่อไป.
กด “Y” จากนั้นกด <ป้อน> เพื่อยอมรับ 'ข้อกำหนดในการให้บริการ' ของ Let's Encrypt
กด “Y” จากนั้นกด <ป้อน> -
กำลังออกใบรับรอง Let's Encrypt SSL ใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์
ณ จุดนี้ ใบรับรอง Let's Encrypt SSL จะออกให้แล้ว ควรแสดงเส้นทางแบบเต็มที่บันทึกไฟล์ใบรับรอง SSL ควรแสดงวันหมดอายุของใบรับรอง SSL ด้วย
แสดงรายการใบรับรอง Let's Encrypt โดยใช้ Certbot
คุณสามารถแสดงรายการใบรับรอง Let's Encrypt SSL ทั้งหมดที่คุณสร้างโดยใช้ Certbot ด้วยคำสั่งต่อไปนี้:
- ซูโดะ ใบรับรอง Certbotอย่างที่คุณเห็น ใบรับรอง Let's Encrypt SSL ที่สร้างขึ้นสำหรับโดเมน “nodekite.com” อยู่ในรายการ [1] - มีการออกใบรับรอง wildcard SSL สำหรับ “nodekite.com” [2] ชื่อโดเมน วันหมดอายุของใบรับรองคือ 2024-03-20 (มีอายุ 89 วัน) [3] - ใบรับรองและเส้นทางคีย์ส่วนตัวยังแสดงอยู่ที่นี่ด้วย [4] -
Certbot จัดเก็บใบรับรอง SSL ทั้งหมดที่คุณสร้างสำหรับโดเมนของคุณในไดเร็กทอรี “/etc/letsencrypt/live” ในโฟลเดอร์ที่เกี่ยวข้อง
- ซูโดะ LS -Rlh - ฯลฯ - ปล่อยให้เข้ารหัส - สด -
การต่ออายุใบรับรอง Let's Encrypt โดยใช้ Certbot
Certbot จะต่ออายุใบรับรอง Let's Encrypt SSL ทั้งหมดที่คุณสร้างขึ้นโดยอัตโนมัติโดยใช้การตรวจสอบ DNS ของ CloudFlare
หากต้องการทดสอบว่าคุณสมบัติการต่ออายุอัตโนมัติของใบรับรอง Let's Encrypt SSL ทำงานหรือไม่ ให้รันคำสั่งต่อไปนี้:
- ซูโดะ certbot ต่ออายุ --dry-runการดำเนินการต่ออายุอัตโนมัติจะถูกจำลองสำหรับใบรับรอง Let's Encrypt SSL แต่ละรายการที่คุณสร้างขึ้น
หากการทดสอบสำเร็จ คุณจะได้รับคำชมเชย การทดสอบที่ประสบความสำเร็จหมายความว่าใบรับรอง SSL จะได้รับการต่ออายุโดยอัตโนมัติก่อนที่จะหมดอายุ คุณไม่จำเป็นต้องทำอะไรอีก
เพื่อให้คุณลักษณะการต่ออายุอัตโนมัติของ Certbot ทำงานได้ ต้องเปิดใช้งานและเปิดใช้งานตัวจับเวลาระบบ 'cerbot.timer' บนคอมพิวเตอร์/เซิร์ฟเวอร์ของคุณ
คุณสามารถตรวจสอบว่าตัวจับเวลา systemd “cerbot.timer” ถูกเปิดใช้งานและใช้งานอยู่หรือไม่โดยใช้คำสั่งต่อไปนี้:
- ซูโดะ สถานะ systemctl certbot.timerอย่างที่คุณเห็น ตัวจับเวลา systemd “certbot.timer” ถูกเปิดใช้งาน (เริ่มโดยอัตโนมัติในเวลาบูต) [1] และกระตือรือร้น [2] - Certbot ตรวจสอบว่าจำเป็นต้องต่ออายุใบรับรอง SSL ใด ๆ หลังจากเวลาเพียง 11 นาที (ตามภาพหน้าจอต่อไปนี้) และต่ออายุใบรับรอง SSL ที่กำลังจะหมดอายุ [3] -
หากต้องการตรวจสอบด้วยตนเองว่าใบรับรอง SSL ใด ๆ กำลังจะหมดอายุหรือไม่และต่ออายุใบรับรอง SSL ที่กำลังจะหมดอายุ ให้รันคำสั่งต่อไปนี้:
- ซูโดะ certbot ต่ออายุในกรณีของเรา ไม่มีใบรับรอง SSL ที่กำลังจะหมดอายุ ดังนั้น Certbot จึงไม่พยายามต่ออายุใบรับรอง SSL ใด ๆ
หากต้องการบังคับให้ Certbot ต่ออายุใบรับรอง SSL ของโดเมนเฉพาะ (สมมติว่า *.nodekite.com) ให้รันคำสั่งต่อไปนี้:
- ซูโดะ certbot แน่นอน --บังคับต่ออายุ -d - .nodekite.comกด “1” แล้วกด <ป้อน> เพื่อเลือกตัวเลือกแรก (สำหรับการตรวจสอบ DNS โดยใช้ CloudFlare DNS)
ควรต่ออายุใบรับรอง SSL
บทสรุป
หากต้องการรับใบรับรอง Let's Encrypt SSL โดยใช้การตรวจสอบ DNS ของ CloudFlare โดยใช้ Certbot คุณต้องมีสิทธิ์เข้าถึงโทเค็น CloudFlare API ในบทความนี้ เราได้แสดงวิธีสร้างโทเค็น CloudFlare API สำหรับโดเมนของคุณและจัดเก็บไว้อย่างปลอดภัยบนคอมพิวเตอร์/เซิร์ฟเวอร์ของคุณ เพื่อให้คุณสามารถเข้าถึงได้ด้วย Certbot เมื่อจำเป็น นอกจากนี้เรายังแสดงวิธีการติดตั้ง Certbot และปลั๊กอิน Certbot CloudFlare DNS บน Linux ที่ได้รับความนิยมสูงสุด เราแสดงให้คุณเห็นถึงวิธีการสร้างใบรับรอง SSL wildcard ของ Let's Encrypt รวมถึงใบรับรอง SSL สำหรับโดเมนเดียวโดยใช้การตรวจสอบความถูกต้องของ Certbot และ CloudFlare DNS สุดท้ายนี้ เราได้แสดงให้คุณเห็นถึงวิธีการต่ออายุใบรับรอง Let's Encrypt SSL โดยใช้ Certbot โดยอัตโนมัติและด้วยตนเอง