Certbotプラグインをインストールする方法は?


19

このチュートリアルに従ってCertbotをインストールしました。

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

そして今、証明書を設定したいのですが、dns-digitaloceanプラグインが必要です:

# 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

私はそれをインストールしようとしましたpip

pip install certbot-dns-digitalocean

しかし、どうやらapt-getバージョンは「見ている」わけではありません。

どうすれば適切にインストールできますか?

回答:


15

より良い方法、これに到達するのを助けてくれた他の人たちの反応のおかげ。

現在インストールされているプラ​​グインを確認します。

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

certbot(私の場合はcertbot-auto)がインストールされている場所を確認します。

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

仮想環境に入り、プラグインをインストールする

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

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

これはcronには注意が必要です。certbot-autoのバージョンをアップグレードすると、「pip install」部分を再度cronする必要があることに注意してください。
ライアン

10

ファーストラン

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

どこcertbotにインストールされているかを調べる。またはcommand -v certbot、必要に応じて。

次に、実行してhead /usr/bin/certbot、使用しているPythonのバージョンを確認します。

#!/usr/bin/python3

私の場合、Python 3を使用していました。

私のpip出力から、Python 2.7パッケージをインストールしようとしていることに気付きました。

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

では、代わりにpipを使用してPython 3パッケージをインストールする方法を教えてください。ここから手順をコピーしてください:

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

これでpip3コマンドが得られるはずなので、代わりにこれを実行してください:

pip3 install certbot-dns-digitalocean

そしてもう一度試してください:

# 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

このエラーImportError: cannot import name 'sysconfig'インストールパッケージに遭遇した場合python3-distutils。それとsudoを使用することでうまくいきました。route53プラグインをロードしました。
DKebler

8

現在(2018年7月)、次のいずれかを使用できるはずです。

pip install certbot-dns-digitalocean

または

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

sudoいずれかの権限が必要な場合があります。

インストール後、を使用してプラグインを表示できない場合がありますが、正常に表示さcertbot pluginsれるはずcertbot certonly --dns-digitaloceanです。


1
待って。certbotをどのようにインストールしましたか?私は私の問題は、私はcertbotをインストールしていることだったと思うaptcertbot-dns-digitaloceanpipとcertbotはそれを見つけることができませんでした。
mpen

はい、私はあなたと同じ方法でインストールしました。たぶんあなたがインストールした方法pipは違いますか?私はapt、その後のpython 2.7をインストールし、sudo easy_install pip(aptのこれらのインストールが必要な場合があります。python-setuptools python-dev build-essential
M.デービス

3

DNSプラグインを使用するには、Dockerを使用する必要があります。DNSプラグインから:

これらのプラグインはまだ多くのディストリビューションでパッケージ化されているため、現在インストールできませんcertbot-auto。ただし、証明書を自分でインストールすることに慣れている場合は、これらのプラグインをDockerで実行できます。


Docは次のようにも述べています。「ほとんどのユーザーは、オペレーティングシステムパッケージ(certbot.eff.orgの手順を参照)を使用するか、フォールバックとしてcertbot-auto使用する必要があります。そうするには。"
トーター

2

certbotプラグインのインストール方法は、certbot自体のインストール方法によって異なります。パッケージマネージャー(apt、rpm、brew ...)を使用してcertbotをインストールした場合、そのパッケージマネージャーのリポジトリで互換性のあるcertbotプラグインを探す必要があります。

暗号化は、別のインストール方法であるcertbot-autoラッパーもサポートします。このラッパーは、プライベートPython仮想インストール(通常は/opt/eff.org/certbot/venv)を作成し、certbotをそのディレクトリにインストールします。certbot-autoの優れた機能は、certbotクライアントを自動的に最新の状態に保つことです。主な欠点は、プラグインのインストールを公式にサポートしていないことです(つまり、デフォルトでインストールされる4つのプラグインは別として)。

Ryan Gのソリューションで説明されているように、この制限を回避するのは簡単です。ただし、certbot-auto自体が更新されるたびに、その手順でインストールされたプラグインが失われ、ランダムな更新エラーが発生する可能性があります。ここでは、その問題のために一部の証明書の有効期限が切れそうな状況がいくつかありました。certbotのバグトラッカーでこの問題を議論するチケットがいくつかあり、チームは問題を認識していますが、問題が実際に修正されるまでにはまだ長い道のりがあるようです。

したがって、自動セットアップでcertbot-autoを使用する場合は、certbot-autoの自己更新を(で実行することにより--no-self-upgrade)防ぐか、certbotが更新されるたびに必要なプラグインが自動的に再インストールされるようにする戦略を実装することが望ましいです。

必要なプラグインが確実にインストールされるようにするための可能な解決策は、certbot-autoの周りにラッパーを追加することです。そのラッパーは、基本的に次のようになります。

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

ここでそのラッパーのより完全なバージョンを利用できるようにしました。長いバージョンとの唯一の違いは、ラッパーがルートとして実行されていることを保証し、--help引数を適切に処理することです。

そのラッパーをインストールするには、公式certbot-autoプログラムをにダウンロードし/usr/local/bin/certbot-auto-upstream、ラッパーをにコピーします/usr/local/bin/certbot-auto。両方のファイルに適切な特権(chown root:root /usr/local/bin/certbot-auto*、次にchmod 755 /usr/local/bin/certbot-auto*)があることを確認してください。ラッパーファイルで、CERTBOT_PLUGINS="..."実際に必要なプラグインのリストが行に含まれていることを確認してください。以上です。certbot-auto以前に行ったように、単にコマンドを使用し、certbot-auto-upstreamファイルを忘れてください。


1

UbuntuまたはDebianを使用している場合は、Debianテストから次のパッケージを入手できます(バスター)

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



0

OS XIでcertbotを更新した後、同じ問題が発生しましたpip install certbot-dns-digitalocean。再インストールしてもdigitaloceanプラグインを表示できませんでした。

解決策は、それをアンインストールしてから再インストールすることでした。安全のためにsudoを使用しました:

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

その後、certbot pluginsリストに問題なく表示されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.