Bagaimana cara menginstal plugin Certbot?

19

Saya menginstal Certbot dengan mengikuti tutorial ini :

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

Dan sekarang saya ingin mengatur sertifikat saya, tetapi saya membutuhkan 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

Saya mencoba menginstalnya dengan pip:

pip install certbot-dns-digitalocean

Namun ternyata versi apt-get tidak "melihatnya".

Bagaimana cara menginstalnya dengan benar?

Mpen
sumber

Jawaban:

15

Metode yang lebih baik, terima kasih atas tanggapan orang lain untuk membantu saya mendapatkan ini.

Tentukan plugin apa yang diinstal saat ini:

# 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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Tentukan di mana certbot Anda (dalam kasus saya certbot-otomatis) diinstal:

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

Masuk ke Virtual Env dan instal plugin

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

Verifikasi lagi certbot plugins

# 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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ryan
sumber
Harap dicatat bahwa ini bisa sulit untuk cron, pemutakhiran versi certbot-auto akan menyebabkan Anda harus menyalin bagian "pemasangan pip" lagi.
Ryan
10

Lari pertama

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

Untuk mengetahui di mana certbotdipasang. Atau command -v certbotjika Anda suka.

Kemudian jalankan head /usr/bin/certbotdan catat versi Python apa yang digunakannya:

#!/usr/bin/python3

Dalam kasus saya, itu menggunakan Python 3.

Saya perhatikan dari keluaran pip saya ia mencoba menginstal paket Python 2.7:

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

Jadi bagaimana kita mendapatkan pip untuk menginstal paket Python 3? Cukup salin instruksi dari sini :

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

Sekarang Anda harus memiliki pip3perintah, jadi jalankan ini sebagai gantinya:

pip3 install certbot-dns-digitalocean

Dan sekarang coba lagi:

# 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
Mpen
sumber
jika Anda mengalami ImportError: cannot import name 'sysconfig'paket instalasi kesalahan ini python3-distutils. Itu dan menggunakan sudo berhasil. Saya memiliki plugin route53 yang dimuat.
DKebler
8

Sekarang (Juli 2018), Anda harus dapat menggunakan keduanya

pip install certbot-dns-digitalocean

atau

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

Anda mungkin perlu sudohak istimewa untuk keduanya.

Setelah menginstal Anda mungkin tidak dapat melihat plugin dengan certbot plugins, tetapi Anda harus bisa certbot certonly --dns-digitaloceanbaik-baik saja.

M. Davis
sumber
1
Tunggu sebentar. Bagaimana Anda menginstal certbot? Saya pikir masalah saya adalah bahwa saya menginstal certbot dengan aptdan certbot-dns-digitaloceandengan pipdan certbot tidak dapat menemukannya.
mpen
Yap, dan saya menginstalnya dengan cara yang sama seperti yang Anda lakukan. Mungkin cara Anda menginstal pipberbeda? Saya aptmenginstal python 2,7 dan kemudian sudo easy_install pip(mungkin memerlukan apt instalasi ini: python-setuptools python-dev build-essential)
M. Davis
3

Anda harus menggunakan Docker untuk menggunakan plugin dns. Dari Plugins DNS :

Plugin ini masih dalam proses dikemas oleh banyak distribusi dan saat ini tidak dapat diinstal dengan certbot-auto. Namun, jika Anda merasa nyaman menginstal sertifikat sendiri, Anda dapat menjalankan plugin ini dengan Docker .

erickgnavar
sumber
Doc juga mengatakan : "Sebagian besar pengguna harus menggunakan paket sistem operasi (lihat instruksi di certbot.eff.org) atau, sebagai cadangan, certbot-autoAnda hanya boleh menggunakan Docker jika Anda yakin Anda tahu apa yang Anda lakukan dan memiliki alasan yang bagus untuk melakukannya. "
Totor
2

Cara Anda menginstal plugin certbot tergantung pada bagaimana Anda menginstal certbot itu sendiri. Jika Anda menginstal certbot menggunakan beberapa manajer paket (apt, rpm, brew ...), maka Anda harus mencari plugin certbot yang kompatibel di repositori manajer paket itu.

Let's Encrypt juga mendukung metode pemasangan alternatif: pembungkus certbot-auto. Wrapper ini membuat instalasi virtual Python pribadi (umumnya di /opt/eff.org/certbot/venv), dan menginstal certbot ke direktori itu. Fitur bagus dari certbot-auto adalah secara otomatis menjaga klien certbot tetap mutakhir. Kelemahan utama adalah bahwa ia tidak secara resmi mendukung instalasi plugin (yaitu, selain dari empat plugin yang diinstal secara default).

Hal ini cukup mudah untuk bekerja di sekitar keterbatasan ini, seperti yang dijelaskan dalam solusi Ryan G . Namun, plugin yang dipasang melalui prosedur itu akan hilang setiap kali pembaruan certbot-auto sendiri, yang dapat mengakibatkan kegagalan pembaruan acak. Di sini, kami memiliki beberapa situasi di mana beberapa sertifikat hampir mencapai kedaluwarsa karena masalah itu. Beberapa tiket membahas masalah ini pada pelacak bug certbot, dan tim mengakui masalah tersebut, tetapi tampaknya masih jauh sebelum masalah ini benar-benar diperbaiki.

Oleh karena itu, jika menggunakan certbot-auto dalam pengaturan otomatis, diinginkan untuk mencegah pembaruan diri certbot-auto (dengan menjalankannya --no-self-upgrade), atau untuk menerapkan beberapa strategi untuk memastikan bahwa plugin yang diperlukan diinstal ulang secara otomatis setiap kali certbot diperbarui.

Solusi yang mungkin untuk memastikan bahwa plugin yang diperlukan diinstal adalah dengan menambahkan pembungkus sekitar certbot-auto. Pembungkus itu pada dasarnya bisa terlihat sebagai berikut:

#!/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" "$@"

Saya telah menyediakan versi pembungkus yang lebih lengkap di sini ; satu-satunya perbedaan dengan versi yang lebih panjang adalah memastikan pembungkus dijalankan sebagai root, dan itu benar menangani --helpargumen.

Untuk menginstal pembungkus itu, unduh certbot-autoprogram resmi /usr/local/bin/certbot-auto-upstream, dan salin bungkusnya /usr/local/bin/certbot-auto. Pastikan kedua file memiliki hak istimewa yang tepat ( chown root:root /usr/local/bin/certbot-auto*, lalu chmod 755 /usr/local/bin/certbot-auto*). Dalam file pembungkus, pastikan baris CERTBOT_PLUGINS="..."menyertakan daftar plugin yang sebenarnya Anda butuhkan. Dan itu saja. Cukup gunakan certbot-autoperintah, seperti yang akan Anda lakukan sebelumnya, dan lupakan certbot-auto-upstreamfile.

jwatkins
sumber
1

Jika Anda berada di ubuntu atau debian, Anda dapat mengambil paket berikut dari pengujian debian (buster)

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

Matthew Darwin
sumber
0

Saya memiliki masalah yang sama, setelah saya perbarui certbot pada OS XI tidak dapat membuat plugin digitalocean muncul, bahkan setelah menginstal ulang dengan pip install certbot-dns-digitalocean.

Solusinya adalah meng-uninstall-nya dan menginstalnya kembali. Saya menggunakan sudo hanya untuk aman:

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

Kemudian muncul ok dalam certbot pluginsdaftar.

Alan Lawson
sumber