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해야합니다.
Ryan

10

첫 실행

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

어디에 certbot설치되어 있는지 확인하십시오. 또는 command -v certbot원하는 경우.

그런 다음 실행중인 head /usr/bin/certbotPython 버전을 확인하십시오.

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

그렇다면 파이썬 3 패키지를 대신 설치하기 위해 어떻게 pip를 얻습니까? 여기 에서 지침을 복사 하십시오 .

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-digitalocean함께 pip하고 certbot 그것을 찾을 수 없습니다.
mpen

네, 당신이했던 것과 같은 방식으로 설치했습니다. 설치 방법 pip이 다를 수 있습니까? 나는 apt파이썬 2.7을 설치 한 후 sudo easy_install pip(AN APT 다음의 설치가 필요할 수 있습니다 python-setuptools python-dev build-essential)
M. 데이비스

3

dns 플러그인을 사용하려면 Docker를 사용해야합니다. 에서 DNS 플러그인 :

이 플러그인은 여전히 ​​많은 배포판으로 패키지화되고 있으며 현재와 함께 설치할 수 없습니다 certbot-auto. 그러나 인증서를 직접 설치하는 것이 편한 경우 Docker를 사용 하여 이러한 플러그인을 실행할 수 있습니다 .


Doc 은 또한 다음과 같이 말합니다 . "대부분의 사용자는 운영 체제 패키지 (certbot.eff.org의 지침 참조) 또는 폴백으로 certbot-auto사용해야합니다. 현재 수행중인 작업을 알고 있고 그럴만한 이유가있는 경우 Docker 만 사용해야합니다. "
토토

2

certbot 플러그인을 설치하는 방법은 certbot 자체를 설치 한 방법에 따라 다릅니다. 일부 패키지 관리자 (apt, rpm, brew ...)를 사용하여 certbot을 설치 한 경우 해당 패키지 관리자의 저장소에서 호환 가능한 certbot 플러그인을 찾아야합니다.

Encrypt는 대체 설치 방법 인 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

우분투 또는 데비안을 사용하는 경우 데비안 테스트 (버스터)에서 다음 패키지를 가져올 수 있습니다

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



0

OS XI에서 certbot을 업데이트 한 후으로 다시 설치 한 후에도 digitalocean 플러그인을 표시 할 수 없었습니다 pip install certbot-dns-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.