Hiện nay người ta có thể thực hiện một xác nhận DNS cũng với certbot LetsEncrypt khách hàng trong chế độ bằng tay. Tự động hóa cũng có thể (xem bên dưới).
Hướng dẫn sử dụng plugin
Bạn có thể thực hiện xác minh thủ công - với plugin thủ công.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
Sau đó, Certbot sẽ cung cấp cho bạn một hướng dẫn để cập nhật thủ công bản ghi TXT cho tên miền để tiến hành xác thực.
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
Khi bạn đã cập nhật bản ghi DNS, nhấn Enter, certbot sẽ tiếp tục và nếu LetsEncrypt CA xác minh thử thách, chứng chỉ sẽ được cấp như bình thường.
Bạn cũng có thể sử dụng một lệnh với nhiều tùy chọn hơn để giảm thiểu khả năng tương tác và trả lời các câu hỏi của certbot. Lưu ý rằng plugin thủ công chưa hỗ trợ chế độ không tương tác.
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
Việc gia hạn không hoạt động với plugin thủ công vì nó chạy ở chế độ không tương tác. Thêm thông tin tại tài liệu chính thức của Certbot .
Cập nhật: móc thủ công
Trong phiên bản mới Certbot bạn có thể sử dụng lưỡi câu , ví dụ như --manual-auth-hook
, --manual-cleanup-hook
. Các hook là các tập lệnh bên ngoài được thực hiện bởi Certbot để thực hiện tác vụ.
Thông tin được truyền trong các biến môi trường - ví dụ: tên miền để xác thực, mã thông báo thách thức. Vars: CERTBOT_DOMAIN
, 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
Bạn có thể viết trình xử lý của riêng bạn hoặc sử dụng đã có sẵn, có rất nhiều, ví dụ, đối với DNS Cloudflare.
Thông tin thêm về tài liệu móc chính thức của Certbot
Tự động hóa, đổi mới, viết kịch bản
Nếu bạn muốn tự động hóa các thách thức DNS, hiện tại không thể thực hiện được với vanila certbot. Cập nhật: một số tự động hóa là có thể với các móc của Certbot.
Do đó, chúng tôi đã tạo một plugin đơn giản hỗ trợ tập lệnh với tự động hóa DNS. Nó có sẵn dưới dạng certbot-bên ngoài-auth .
pip install certbot-external-auth
Nó hỗ trợ các phương thức xác thực DNS, HTTP, TLS-SNI. Bạn có thể sử dụng nó trong chế độ xử lý hoặc chế độ đầu ra JSON.
Chế độ xử lý
Trong chế độ xử lý, certbot + plugin gọi các hook bên ngoài (chương trình, shell script, python, ...) để thực hiện xác nhận và cài đặt. Trong thực tế, bạn viết một tập lệnh xử lý / shell đơn giản để lấy các đối số đầu vào - tên miền, mã thông báo và thực hiện thay đổi trong DNS. Khi xử lý kết thúc, certbot tiến hành xác nhận như bình thường.
Điều này cung cấp cho bạn một sự linh hoạt thêm, đổi mới cũng có thể.
Chế độ xử lý cũng tương thích với các móc DNS Mất nước (trước đây là letencrypt.sh). Hiện đã có nhiều móc DNS cho các nhà cung cấp phổ biến (ví dụ: CloudFlare, GoDaddy, AWS). Trong kho lưu trữ có README với các ví dụ và trình xử lý ví dụ mở rộng.
Ví dụ với hook DNS mất nước :
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
Chế độ JSON
Một chế độ plugin khác là chế độ JSON. Nó tạo ra một đối tượng JSON trên mỗi dòng. Điều này cho phép tích hợp phức tạp hơn - ví dụ: Ansible hoặc một số trình quản lý triển khai đang gọi certbot. Giao tiếp được thực hiện thông qua STDOUT và STDIN. Cerbot tạo đối tượng JSON có dữ liệu để thực hiện xác nhận, ví dụ:
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"}
Khi DNS được cập nhật, người gọi sẽ gửi ký tự dòng mới đến STDIN của certbot để báo hiệu nó có thể tiếp tục xác nhận.
Điều này cho phép tự động hóa và quản lý chứng chỉ từ máy chủ quản lý trung tâm. Để cài đặt, bạn có thể triển khai chứng chỉ qua SSH.
Để biết thêm thông tin, vui lòng tham khảo readme và các ví dụ về certbot-bên ngoài-auth GitHub.
EDIT: Ngoài ra còn có một bài đăng blog mới mô tả vấn đề xác thực DNS và việc sử dụng plugin.
EDIT: chúng tôi hiện đang làm việc trên xác thực 2 bước Ansible, sẽ sớm ra mắt.