更新

更新

我正在尝试使用 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 更新工作顺利。

谢谢你的帮助。

相关内容