ขณะนี้ก็เป็นไปได้ที่จะดำเนินการตรวจสอบ DNS ยังกับcertbotลูกค้า LetsEncrypt ในโหมดคู่มือ ระบบอัตโนมัติยังเป็นไปได้ (ดูด้านล่าง)
ปลั๊กอินด้วยตนเอง
คุณสามารถทำการตรวจสอบด้วยตนเอง - ด้วยปลั๊กอินด้วยตนเอง
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
จากนั้น Certbot จะให้คำแนะนำในการอัปเดตระเบียน TXT สำหรับโดเมนด้วยตนเองเพื่อดำเนินการตรวจสอบความถูกต้องต่อไป
Please deploy a DNS TXT record under the name
_acme-challenge.bristol3.pki.enigmabridge.com with the following value:
667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc
Once this is deployed,
Press ENTER to continue
เมื่อคุณอัปเดตระเบียน DNS แล้วให้กด Enter certbot จะดำเนินการต่อและถ้า LetsEncrypt CA ตรวจสอบความท้าทายใบรับรองจะออกตามปกติ
นอกจากนี้คุณยังสามารถใช้คำสั่งที่มีตัวเลือกเพิ่มเติมเพื่อลดการโต้ตอบและตอบคำถาม certbot โปรดทราบว่าปลั๊กอินแมนนวลยังไม่สนับสนุนโหมดที่ไม่โต้ตอบ
certbot --text --agree-tos --email you@example.com -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly
การต่ออายุไม่ทำงานกับปลั๊กอินแบบแมนนวลเนื่องจากมันทำงานในโหมดที่ไม่โต้ตอบ ข้อมูลเพิ่มเติมได้ที่ Certbot อย่างเป็นทางการเอกสาร
ปรับปรุง: hooks ด้วยตนเอง
ในรุ่น Certbot ใหม่ที่คุณสามารถใช้ตะขอเช่น,--manual-auth-hook
--manual-cleanup-hook
hooks เป็นสคริปต์ภายนอกที่ดำเนินการโดย Certbot เพื่อทำงาน
ข้อมูลถูกส่งผ่านในตัวแปรสภาพแวดล้อมเช่นโดเมนที่จะตรวจสอบความท้าทายโทเค็น CERTBOT_DOMAIN
Vars: CERTBOT_VALIDATION
, CERTBOT_TOKEN
,
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com
คุณสามารถเขียน handler ของคุณเองหรือใช้อยู่แล้วมีอยู่มากมายเช่น Cloudflare DNS
ข้อมูลเพิ่มเติมเกี่ยวกับเอกสารรับรอง Certbot hooks
ระบบอัตโนมัติ, การต่ออายุ, การเขียนสคริปต์
หากคุณต้องการให้ DNS ทำการตรวจสอบความถูกต้องอัตโนมัติจะไม่สามารถทำได้ในขณะนี้ด้วย vanila certbot อัปเดต: การทำงานอัตโนมัติบางอย่างอาจทำได้โดยใช้ Certbot hooks
เราจึงสร้างปลั๊กอินอย่างง่ายที่รองรับการเขียนสคริปต์ด้วยระบบอัตโนมัติ DNS มันมีอยู่เป็นcertbot-ภายนอกรับรองความถูกต้อง
pip install certbot-external-auth
สนับสนุนวิธีการตรวจสอบความถูกต้อง DNS, HTTP, TLS-SNI คุณสามารถใช้ในโหมดตัวจัดการหรือโหมดเอาต์พุต JSON
โหมดตัวจัดการ
ในโหมดตัวจัดการปลั๊กอิน certbot + จะเรียกใช้ hooks ภายนอก (โปรแกรม, เชลล์สคริปต์, ไพ ธ อน, ... ) เพื่อทำการตรวจสอบความถูกต้องและการติดตั้ง ในทางปฏิบัติคุณเขียนสคริปต์ตัวจัดการ / เชลล์แบบง่าย ๆ ซึ่งรับอาร์กิวเมนต์การป้อนข้อมูล - โดเมนโทเค็นและทำการเปลี่ยนแปลงใน DNS เมื่อตัวจัดการเสร็จสิ้น certbot จะดำเนินการตรวจสอบตามปกติ
สิ่งนี้ทำให้คุณมีความยืดหยุ่นเป็นพิเศษสามารถต่ออายุได้
โหมดตัวจัดการยังเข้ากันได้กับDehydrated DNS hooks (เดิม letsencrypt.sh) มี DNS hooks จำนวนมากสำหรับผู้ให้บริการทั่วไป (เช่น CloudFlare, GoDaddy, AWS) ในพื้นที่เก็บข้อมูลมี README พร้อมด้วยตัวอย่างมากมายและตัวจัดการตัวอย่าง
ตัวอย่างด้วยเบ็ด DNS ที่ขาดน้ำ :
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
--certbot-external-auth:out-handler ./dehydrated-example.sh \
--certbot-external-auth:out-dehydrated-dns \
run
โหมด JSON
โหมดปลั๊กอินอื่นคือโหมด JSON มันสร้างหนึ่งวัตถุ JSON ต่อบรรทัด สิ่งนี้ทำให้การรวมที่ซับซ้อนมากขึ้นเช่น Ansible หรือตัวจัดการการปรับใช้บางอย่างกำลังเรียก certbot การสื่อสารดำเนินการผ่าน STDOUT และ STDIN Cerbot สร้างวัตถุ JSON พร้อมข้อมูลเพื่อทำการตรวจสอบความถูกต้องเช่น
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
certonly 2>/dev/null
{"cmd": "perform_challenge", "type": "dns-01", "domain": "bs3.pki.enigmabridge.com", "token": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4", "validation": "ejEDZXYEeYHUxqBAiX4csh8GKkeVX7utK6BBOBshZ1Y", "txt_domain": "_acme-challenge.bs3.pki.enigmabridge.com", "key_auth": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4.tRQM98JsABZRm5-NiotcgD212RAUPPbyeDP30Ob_7-0"}
เมื่ออัปเดต DNS แล้วผู้เรียกจะส่งอักขระขึ้นบรรทัดใหม่ไปยัง STDIN ของ certbot เพื่อให้สัญญาณว่ามันสามารถทำการตรวจสอบต่อไปได้
สิ่งนี้ช่วยให้การจัดการอัตโนมัติและใบรับรองจากเซิร์ฟเวอร์การจัดการส่วนกลาง สำหรับการติดตั้งคุณสามารถปรับใช้ใบรับรองผ่าน SSH
สำหรับข้อมูลเพิ่มเติมโปรดดูที่ readme และตัวอย่างเกี่ยวกับcertbot-external-auth GitHub
แก้ไข: นอกจากนี้ยังมีโพสต์บล็อกใหม่ที่อธิบายถึงปัญหาการตรวจสอบ DNS และการใช้งานปลั๊กอิน
แก้ไข: ขณะนี้เรากำลังทำงานกับการตรวจสอบความถูกต้อง 2 ขั้นตอนของ Ansible และจะปิดตัวลงในไม่ช้า