Làm cách nào để cài đặt plugin Certbot?


19

Tôi đã cài đặt Certbot bằng cách làm theo hướng dẫn này :

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

Và bây giờ tôi muốn thiết lập chứng chỉ của mình, nhưng tôi cần dns-digitaloceanplugin:

# certbot certonly --dns-digitalocean
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Could not choose appropriate plugin: The requested dns-digitalocean plugin does not appear to be installed
The requested dns-digitalocean plugin does not appear to be installed

Tôi đã thử cài đặt nó với pip:

pip install certbot-dns-digitalocean

Nhưng rõ ràng phiên bản apt-get không "nhìn thấy" nó.

Làm thế nào để tôi cài đặt nó đúng cách?

Câu trả lời:


15

Phương pháp tốt hơn, nhờ những phản hồi của người khác vì đã giúp tôi đạt được điều này.

Xác định những plugin nào được cài đặt hiện tại:

# certbot-auto plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* apache
Description: Apache Web Server plugin - Beta
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache.entrypoint:ENTRYPOINT

* nginx
Description: Nginx Web Server plugin
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: nginx = certbot_nginx.configurator:NginxConfigurator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Xác định nơi certbot của bạn (trong trường hợp của tôi certbot-auto) được cài đặt:

# find / -name certbot
/opt/eff.org/certbot
...

Hãy vào Virtual Env và cài đặt plugin

cd /opt/eff.org/certbot/venv
source bin/activate
pip install certbot-dns-google
deactivate

Xác minh lại các plugin certbot

# certbot-auto plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* apache
Description: Apache Web Server plugin - Beta
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache.entrypoint:ENTRYPOINT

* dns-google
Description: Obtain certificates using a DNS TXT record (if you are using Google
Cloud DNS for DNS).
Interfaces: IAuthenticator, IPlugin
Entry point: dns-google = certbot_dns_google.dns_google:Authenticator

* nginx
Description: Nginx Web Server plugin
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: nginx = certbot_nginx.configurator:NginxConfigurator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Xin lưu ý rằng điều này có thể khó đối với cron, việc nâng cấp phiên bản certbot-auto sẽ khiến bạn cần phải cron lại phần "cài đặt pip".
Ryan

10

Lần chạy đầu tiên

# type certbot
certbot is hashed (/usr/bin/certbot)

Để tìm ra nơi certbotđược cài đặt. Hoặc command -v certbotnếu bạn thích.

Sau đó chạy head /usr/bin/certbotvà lưu ý phiên bản Python nào đang sử dụng:

#!/usr/bin/python3

Trong trường hợp của tôi, nó đã sử dụng Python 3.

Tôi nhận thấy từ đầu ra pip của mình, nó đang cố cài đặt gói Python 2.7:

# pip install certbot-dns-digitalocean
Requirement already satisfied: certbot-dns-digitalocean in /usr/local/lib/python2.7/dist-packages

Vậy làm thế nào để chúng ta có được pip để cài đặt các gói Python 3 thay thế? Chỉ cần sao chép các hướng dẫn từ đây :

cd /tmp
curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
rm get-pip.py

Bây giờ bạn nên có pip3lệnh, vì vậy hãy chạy lệnh này thay thế:

pip3 install certbot-dns-digitalocean

Và bây giờ hãy thử lại:

# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
* dns-digitalocean
Description: Obtain certs using a DNS TXT record (if you are using DigitalOcean
for DNS).
Interfaces: IAuthenticator, IPlugin
Entry point: dns-digitalocean =
certbot_dns_digitalocean.dns_digitalocean:Authenticator

nếu bạn gặp phải lỗi ImportError: cannot import name 'sysconfig'cài đặt gói này python3-distutils. Điều đó và sử dụng sudo đã lừa Tôi đã tải plugin route53.
DKebler

8

Bây giờ (tháng 7 năm 2018), bạn sẽ có thể sử dụng một trong hai

pip install certbot-dns-digitalocean

hoặc là

git clone https://github.com/certbot/certbot.git
cd certbot/certbot-dns-digitalocean/
python setup.py install

Bạn có thể cần sudođặc quyền cho một trong hai.

Sau khi cài đặt, bạn có thể không thấy được plugin certbot plugins, nhưng bạn sẽ có thể certbot certonly --dns-digitaloceanổn.


1
Treo lên. Làm thế nào bạn cài đặt certbot sau đó? Tôi nghĩ vấn đề của tôi là tôi cài đặt certbot với aptcertbot-dns-digitaloceanvới pipvà certbot đã không thể tìm thấy nó.
mpen

Đúng, và tôi đã cài đặt nó giống như cách bạn đã làm. Có lẽ cách bạn cài đặt piplà khác nhau? Tôi aptđã cài đặt python 2.7 và sau đó sudo easy_install pip(có thể yêu cầu cài đặt apt trong số này python-setuptools python-dev build-essential:)
M. Davis

3

Bạn phải sử dụng Docker để sử dụng plugin dns. Từ các plugin DNS :

Các plugin này vẫn đang trong quá trình được đóng gói bởi nhiều bản phân phối và hiện không thể cài đặt được certbot-auto. Tuy nhiên, nếu bạn thoải mái cài đặt chứng chỉ, bạn có thể chạy các plugin này bằng Docker .


Doc cũng nói : "Hầu hết người dùng nên sử dụng các gói hệ điều hành (xem hướng dẫn tại certbot.eff.org) hoặc, như một dự phòng, certbot-autobạn chỉ nên sử dụng Docker nếu bạn chắc chắn rằng bạn biết bạn đang làm gì và có lý do chính đáng làm như vậy."
Toto

2

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-autochương trình chính thức /usr/local/bin/certbot-auto-upstreamvà 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-autolệnh, như bạn đã làm trước đây và quên certbot-auto-upstreamtệp.


1

Nếu bạn đang sử dụng Ubuntu hoặc debian, bạn có thể lấy các gói sau từ kiểm tra debian (buster)

python3-certbot-dns-digitalocean_0.23.0-2_all.deb python3-digitalocean_1.13.2-1_all.deb



0

Tôi gặp vấn đề tương tự, sau khi tôi cập nhật certbot trên OS XI, không thể có plugin digitalocean xuất hiện, ngay cả sau khi cài đặt lại pip install certbot-dns-digitalocean.

Giải pháp là gỡ cài đặt nó và sau đó cài đặt lại. Tôi đã sử dụng sudo chỉ để được an toàn:

sudo pip uninstall certbot-dns-digitalocean 
sudo pip install certbot-dns-digitalocean

Sau đó nó xuất hiện ok trong certbot pluginsdanh sách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.