Certbot eklentileri nasıl kurulur?


19

Bu öğreticiyi izleyerek Certbot'u yükledim :

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

Ve şimdi sertifikamı kurmak istiyorum, ancak dns-digitaloceaneklentiye ihtiyacım var :

# 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

Yüklemeyi denedim pip:

pip install certbot-dns-digitalocean

Ama görünüşe göre apt-get sürümü "görmüyor".

Düzgün nasıl kurarım?

Yanıtlar:


15

Daha iyi bir yöntem, diğerlerine bu konuda yardımcı olmam için verdikleri yanıtlar sayesinde.

Şu anda yüklü olan eklentileri belirleyin:

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

Sertifikanızın (benim durumumda certbot-auto) nereye kurulduğunu belirleyin:

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

Virtual Env'e girin ve eklentiyi yükleyin

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

Certbot eklentilerini tekrar doğrulayın

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

Bunun cron için zor olabileceğini lütfen unutmayın, certbot-auto sürüm yükseltmeleri "pip install" kısmını tekrar cronlamanıza neden olacaktır.
Ryan

10

İlk çalıştırma

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

Nerede certbotyüklü olduğunu bulmak için. Ya command -v certbotda isterseniz.

Ardından head /usr/bin/certbothangi Python sürümünü kullandığını çalıştırın ve not edin:

#!/usr/bin/python3

Benim durumumda Python 3 kullanıyordu.

Benim pip çıkışından bir Python 2.7 paketi yüklemeye çalıştığını fark ettim:

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

Peki pip yerine Python 3 paketlerini nasıl kurabiliriz? Talimatları buradan kopyalamanız yeterlidir :

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

Şimdi şu pip3komuta sahip olmalısınız , bu yüzden bunu çalıştırın:

pip3 install certbot-dns-digitalocean

Ve şimdi tekrar deneyin:

# 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

Bu hatayla karşılaşırsanız ImportError: cannot import name 'sysconfig'yükleme paketi python3-distutils. Bu ve sudo kullanmak hile yaptı. Yüklü route53 eklentim var.
DKebler

8

Şimdi (Temmuz 2018), aşağıdakilerden birini kullanabilmeniz gerekir:

pip install certbot-dns-digitalocean

veya

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

Her sudoikisi için de ayrıcalıklara ihtiyacınız olabilir .

Yükledikten sonra eklentiyi göremeyebilirsiniz certbot plugins, ancak iyi durumda olmalısınız certbot certonly --dns-digitalocean.


1
Dayan. O zaman certbot'u nasıl kurdunuz? Benim sorunum certbot ile birlikte aptve certbot-dns-digitaloceanbirlikte pipkurduğum ve certbot'un bulamadığıydı.
mpen

Evet, ben de senin gibi kurdum. Belki yükleme şekliniz pipfarklıdır? Ben aptpython 2.7 yüklü ve daha sonra sudo easy_install pip(bir apt Bunlardan yüklemek isteyebilir: python-setuptools python-dev build-essential)
M. Davis

3

DNS eklentilerini kullanmak için Docker'ı kullanmanız gerekir. Gönderen DNS Eklentileri :

Bu eklentiler hala birçok dağıtım tarafından paketlenmekte olup şu anda yüklenemez certbot-auto. Bununla birlikte, sertifikaları kendiniz yüklemek konusunda rahatsanız, bu eklentileri Docker ile çalıştırabilirsiniz .


Doc ayrıca şunları söylüyor : "Çoğu kullanıcı işletim sistemi paketlerini kullanmalıdır (certbot.eff.org adresindeki talimatlara bakın) veya bir yedek olarak. Docker'ı certbot-autoyalnızca ne yaptığınızı bildiğinizden ve iyi bir nedeniniz olduğundan eminseniz kullanmalısınız. böyle yaparak."
19'da Totor

2

Certbot eklentilerini kurma şekliniz, certbot'un kendisini nasıl kurduğunuza bağlıdır. Certbot'u bir paket yöneticisi (apt, rpm, brew ...) kullanarak kurduysanız, o paket yöneticisinin deposunda uyumlu certbot eklentileri aramalısınız.

Şifrelemenin alternatif bir kurulum yöntemini de destekleyelim: certbot-auto wrapper. Bu sarmalayıcı özel bir Python sanal yüklemesi (genellikle içinde /opt/eff.org/certbot/venv) oluşturur ve certbot'u bu dizine yükler. Certbot-auto'un güzel bir özelliği, certbot istemcisini otomatik olarak güncel tutmasıdır. Büyük bir dezavantajı, eklenti kurulumunu resmi olarak desteklememesidir (varsayılan olarak yüklü dört eklentinin yanı sıra).

Ryan G'nin çözümünde açıklandığı gibi bu sınırlamaya geçici bir çözüm bulmak yeterince kolaydır . Ancak, certbot-auto kendini her güncellediğinde bu yordam aracılığıyla yüklenen eklentiler kaybolur ve bu da rastgele yenileme hatalarına neden olabilir. Burada, bu sorun nedeniyle bazı sertifikaların neredeyse sona ermiş olduğu birkaç durumumuz var. Birkaç bilet bu sorunu certbot'un hata izleyicisinde tartışıyor ve ekip sorunu kabul ediyor, ancak sorunun gerçekten düzeltilmesinden önce çok yol olabileceği görülüyor.

Bu nedenle, otomatik bir kurulumda certbot-auto kullanılıyorsa, certbot-auto'un kendi kendini güncellemesini (çalıştırarak --no-self-upgrade) önlemek ya da certbot her güncellendiğinde gerekli eklentilerin otomatik olarak yeniden yüklenmesini sağlamak için bir strateji uygulamak arzu edilir.

Gerçekten de gerekli eklentilerin yüklendiğinden emin olmak için olası bir çözüm, certbot-auto'un etrafına bir sargı eklemektir. Bu sargı aslında aşağıdaki gibi görünebilir:

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

Bu paketleyicinin daha eksiksiz bir sürümünü burada kullanıma sundum ; daha uzun versiyonla tek fark, sargının kök olarak çalıştırılmasını sağlaması ve --helpargümanı düzgün bir şekilde işlemesidir .

Bu sarmalayıcıyı yüklemek için resmi certbot-autoprogramı indirin /usr/local/bin/certbot-auto-upstreamve sarmalayıcıyı kopyalayın /usr/local/bin/certbot-auto. Her iki dosyanın da uygun ayrıcalıklara sahip olduğundan emin olun ( chown root:root /usr/local/bin/certbot-auto*, sonra chmod 755 /usr/local/bin/certbot-auto*). Sarıcı dosyasında, satırın CERTBOT_PLUGINS="..."gerçekten ihtiyacınız olan eklentilerin listesini içerdiğinden emin olun . Ve bu kadar. certbot-autoDaha önce yaptığınız gibi komutu kullanın ve certbot-auto-upstreamdosyayı unutun .


1

Ubuntu veya debian kullanıyorsanız, debian testinden (buster) aşağıdaki paketleri alabilirsiniz

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



0

Ben OS XI üzerinde certbot güncelledikten sonra aynı sorunu vardı, hatta yeniden yükledikten sonra bile digitalocean eklentisi görünmesini alamadım pip install certbot-dns-digitalocean.

Çözüm onu ​​kaldırmak ve daha sonra yeniden yüklemekti. Ben sadece güvenli olmak için sudo kullandım:

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

Sonra certbot pluginslistede tamam göründü .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.