尝试执行此命令
sudo certbot certonly --dns-digitalocean --dns-digitalocean-credentials ~/.secrets/digitalocean.ini -d "*.example.com" --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
我收到此错误:certbot:错误:无法识别的参数:--dns-digitalocean-credentials
我的 Web 服务器运行的操作系统是:Ubuntu 16.04.3 LTS
certbot --version输出:certbot 0.31.0
并且命令“--dns-digitalocean-credentials”中的破折号输入正确。
还安装了 DNS 插件:
python3-certbot-dns-digitalocean/xenial 0.23.0-2ubuntu0ppa1~ubuntu16.04.1
幫助解決問題。
答案1
即使使用 Certbot 版本 0.40.0(Ubuntu 20.04 的默认 deb 包) ,我也收到了unrecognized arguments: --dns-digitalocean-credentials
错误。手册页有描述,--dns-digitalocean-credentials
但无法识别。
解决方案是通过 snap 安装:
sudo apt purge -y certbot
sudo snap install --classic certbot
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-digitalocean
截至本文发布时,已生成 Certbot 1.9.0,它可以很好地生成和安装我的通配符 TLS 证书。
您没有问,但这是我使用的完整 Certbot 命令:
sudo certbot run --domain example.com --domain '*.example.com' --authenticator dns-digitalocean --installer apache --dns-digitalocean-credentials /root/.certbot.token --dns-digitalocean-propagation-seconds 60 --agree-tos --keep-until-expiring --redirect --hsts --uir --email [email protected] --no-eff-email
答案2
我认为问题在于自动 DNS 证书更新方法仅在 certbot 0.31.0 之后的版本中引入。
当前版本是 1.3.0-5,但尚未进入您的 Ubuntu 版本。我不确定,但我知道它尚未进入我使用的 Debian Buster。
我换成了acme.sh我发现这至少与 certbot 一样容易实现,而且更加透明。你只需要export
将您的 DigitalOcean 密钥放入变量中跑步前acme.sh
。