我按照以下教程安装了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安装它: />
如何正确安装?

#1 楼

更好的方法,这要感谢其他人的帮助,以帮助我解决这个问题。

确定当前安装了哪些插件:已安装certbot(在我的情况下为certbot-auto):

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


进入虚拟环境并安装插件

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


再次验证certbot插件

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


评论


请注意,这对于cron可能会有些棘手,certbot-auto版本升级将导致您需要再次cron“ pip install”部分。

–瑞安
19年6月3日在3:38

sudo find / -name venv | grep certbot可能是查找venv目录的更简单方法。

–卡梅伦
昨天

#2 楼

第一次运行

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


找出certbot的安装位置。如果需要,也可以使用command -v certbot

然后运行head /usr/bin/certbot并注意它使用的是哪个版本的Python: Python3。

我从pip输出中注意到,它正在尝试安装Python 2.7软件包:改为安装Python 3软件包?只需从此处复制说明:
,然后重试:

#!/usr/bin/python3


评论


如果遇到此错误ImportError:无法导入名称'sysconfig'安装软件包python3-distutils。那并使用sudo达到了目的。我已加载route53插件。

– DKebler
19年1月17日,0:32

#3 楼

现在(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

评论


不挂断。您如何安装certbot?我认为我的问题是我使用apt和certbot-dns-digitalocean安装了aptbot和pip,而certbot无法找到它。

– mpen
18年7月16日在22:52

是的,我以与您相同的方式进行安装。也许您安装pip的方式有所不同?我安装了python 2.7,然后安装了sudo easy_install pip(可能需要对这些安装apt:python-setuptools python-dev build-essential)

–戴维斯先生
18年7月17日在16:34

#4 楼

您必须使用Docker才能使用dns插件。来自DNS插件:


这些插件仍在许多发行版本的打包过程中,并且当前无法与certbot-auto一起安装。但是,如果您自己愿意安装证书,则可以使用Docker运行这些插件。


评论


Doc还说:“大多数用户应该使用操作系统软件包(请参阅certbot.eff.org上的说明),或者作为回退方式,使用certbot-auto。只有在确定知道自己在做什么并且拥有这样做的充分理由。”

– Tortor
19年3月1日在9:40



#5 楼

安装certbot插件的方式取决于安装certbot本身的方式。如果您使用某些程序包管理器(apt,rpm,brew ...)安装了certbot,则应在该程序包管理器的存储库中查找兼容的certbot插件。 certbot自动包装程序。该包装器创建一个专用的Python虚拟安装(通常在/opt/eff.org/certbot/venv中),然后将certbot安装到该目录中。 certbot-auto的一个不错的功能是它可以自动使certbot客户端保持最新状态。一个主要的缺点是它不正式支持插件安装(即,默认情况下不安装四个插件)。

可以很容易地解决此限制,如Ryan G的文章所述。解。但是,每次certbot-auto更新自身时,通过该过程安装的插件都会丢失,这可能导致随机续订失败。在这种情况下,由于这种问题,我们遇到了一些证书即将到期的情况。有几张票在certbot的bug跟踪器上讨论了此问题,并且团队确认了该问题,但看来要真正解决该问题可能还有很长的路要走。因此,如果使用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" "$@"


我在这里提供了该包装器的更完整版本;与较长版本的唯一区别在于,它确保包装程序以root身份运行,并且可以正确处理--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文件。

#6 楼

如果您使用的是ubuntu或debian,则可以从debian测试(无效)中获取以下软件包:

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

#7 楼

这适用于我在Ubuntu 18.04 LTS上的操作

apt install certbot
apt install python3-certbot-dns-digitalocean


请参阅此certbot问题

#8 楼

我遇到了同样的问题,在OS XI上更新certbot之后,即使使用pip install certbot-dns-digitalocean重新安装了digitalbot插件,也无法显示digitalocean插件。解决方法是先将其卸载然后重新安装它。我使用sudo只是为了安全:

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


然后它在certbot plugins列表中显示为正常。