Cách bạn cài đặt plugin certbot phụ thuộc vào cách bạn cài đặt certbot. Nếu bạn đã cài đặt certbot bằng cách sử dụng một số trình quản lý gói (apt, vòng / phút, pha ...), thì bạn nên tìm kiếm các plugin certbot tương thích trong kho lưu trữ của trình quản lý gói đó.
Let Encrypt cũng hỗ trợ một phương thức cài đặt thay thế: trình bao bọc certbot-auto. Trình bao bọc này tạo ra một cài đặt ảo Python riêng (thường là trong /opt/eff.org/certbot/venv
) và cài đặt certbot vào thư mục đó. Một tính năng hay của certbot-auto là nó tự động cập nhật ứng dụng khách certbot. Một nhược điểm lớn là nó không chính thức hỗ trợ cài đặt plugin (nghĩa là ngoài bốn plugin được cài đặt theo mặc định).
Nó là đủ dễ dàng để làm việc xung quanh hạn chế này, như mô tả trong giải pháp Ryan G . Tuy nhiên, các plugin được cài đặt thông qua quy trình đó sẽ bị mất mỗi lần cập nhật certbot-auto, điều này có thể dẫn đến các lỗi gia hạn ngẫu nhiên. Ở đây, chúng tôi đã có một vài tình huống trong đó một số chứng chỉ gần như hết hạn vì vấn đề đó. Một số vé thảo luận về vấn đề này trên trình theo dõi lỗi của certbot và nhóm đã thừa nhận vấn đề này, nhưng có vẻ như đó vẫn còn là một chặng đường dài trước khi vấn đề thực sự được khắc phục.
Do đó, nếu sử dụng certbot-auto trong thiết lập tự động, bạn nên ngăn tự cập nhật của certbot-auto (bằng cách chạy với nó --no-self-upgrade
) hoặc thực hiện một số chiến lược để đảm bảo các plugin yêu cầu được tự động cài đặt lại mỗi khi cập nhật certbot.
Một giải pháp khả thi để thực sự đảm bảo rằng các plugin cần thiết được cài đặt là thêm một trình bao bọc xung quanh certbot-auto. Bao bọc đó về cơ bản có thể trông như sau:
#!/bin/bash
# The list of plugins to be installed
CERTBOT_PLUGINS="certbot-dns-route53"
# Force the venv directory to be where we can easily find it
export VENV_PATH="/opt/eff.org/certbot/venv"
# Force certbot-auto to be where we expect it to be
export CERTBOT_AUTO="/usr/local/bin/certbot-auto-upstream"
# Force certbot-auto to bootstrap or upgrade itself, but do no more
"${CERTBOT_AUTO}" --install-only "$@"
# Check if required plugins are installed; install them if they are missing
(
cd ${VENV_PATH}
source bin/activate
for plugin in $CERTBOT_PLUGINS ; do
if ! pip show -q "$plugin" ; then
pip install "$plugin"
fi
done
deactivate
)
# Execute the actual certbot command
"${VENV_PATH}/bin/letsencrypt" "$@"
Tôi đã tạo sẵn một phiên bản hoàn chỉnh hơn của trình bao bọc đó ở đây ; sự khác biệt duy nhất với phiên bản dài hơn là nó đảm bảo rằng trình bao bọc đang được chạy dưới quyền root và nó xử lý đúng --help
đối số.
Để cài đặt trình bao bọc đó, hãy tải xuống certbot-auto
chương trình chính thức /usr/local/bin/certbot-auto-upstream
và sao chép trình bao bọc đó /usr/local/bin/certbot-auto
. Đảm bảo rằng cả hai tệp đều có đặc quyền thích hợp ( chown root:root /usr/local/bin/certbot-auto*
, sau đó chmod 755 /usr/local/bin/certbot-auto*
). Trong tệp trình bao bọc, đảm bảo dòng CERTBOT_PLUGINS="..."
bao gồm danh sách các plugin bạn thực sự cần. Và đó là nó. Chỉ cần sử dụng certbot-auto
lệnh, như bạn đã làm trước đây và quên certbot-auto-upstream
tệp.