我正在尝试使用 LetsEncrypt 在 HAProxy 上提供 SSL certbot
。我正在使用以下命令创建 SSL:
sudo certbot certonly --standalone -d test.example.com \
--non-interactive --agree-tos --email [email protected] \
--http-01-port=8888
它正在创建新证书。没有问题。但是如果我想续订证书,续订会失败。当我运行sudo certbot renew --dry-run
。出现此错误:
Processing /etc/letsencrypt/renewal/test.example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator standalone, Installer None
Simulating renewal of an existing certificate for test.example.com
Performing the following challenges:
http-01 challenge for test.example.com
Cleaning up challenges
Failed to renew certificate test.example.com with error: Problem binding to port 8888: Could not bind to IPv4 or IPv6.
我正在使用这个来源:https://serversforhackers.com/c/letsencrypt-with-haproxy
我正在创建我的 haproxy(HA-Proxy 版本 2.2.9-2+deb11u6)像这样配置:
frontend fe-example
bind *:4433 ssl crt /etc/haproxy/certs/test.example.com/test.example.com.pem
# New line to test URI to see if its a letsencrypt request
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl
default_backend be-example
# LE Backend
backend letsencrypt-backend
server letsencrypt 127.0.0.1:8888
# Normal (default) Backend
# for web app servers
backend be-example
# Config omitted here
但这个配置对我来说不起作用。
我的第一个问题是:这个 HAProxy 配置有什么问题?我的第二个问题是:这种提供 SSL 证书的方法正确吗?
答案1
错误消息Problem binding to port 8888: Could not bind to IPv4 or IPv6.
表明某些应用程序已在监听端口 8888。请检查输出以sudo ss -plnt | grep 8888
找出原因。
答案2
更新
检查端口并确保它未被使用后,我通过以下配置解决了这个问题:- 您应该使用 80 端口,因为 acme challenge 正在使用此端口进行 http challenge。因此我们的配置如下所示:
frontend fe-example
bind *:80
bind *:4433 ssl crt /etc/haproxy/certs/test.example.com/test.example.com.pem
# New line to test URI to see if its a letsencrypt request
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl
default_backend be-example
# LE Backend
backend letsencrypt-backend
server letsencrypt 127.0.0.1:8888
# Normal (default) Backend
# for web app servers
backend be-example
# Config omitted here
然后 certbot 更新工作顺利。
谢谢你的帮助。