在 Amazon Linux(不是 2)实例上,Let's Encrypt 与 Bitnami 堆栈和 Lego 相关的问题

在 Amazon Linux(不是 2)实例上,Let's Encrypt 与 Bitnami 堆栈和 Lego 相关的问题

我们有一个 Amazon Linux(不是 Amazon Linux 2)实例,运行一个相当老的 Bitnami Trac/SVN 堆栈,并且还运行一个 Tomcat 服务器。它有两个 httpd 实例:一个是 Bitnami 堆栈的一部分,另一个是操作系统自带的。Tomcat 独立运行。Lego 已经存在,bncert-tool 也是如此,但 Bitnami 目录不是“/opt/bitnami”,而是“/opt/trac-1.2.3-11”。

OS httpd 在启动时监听 80,不安全。Bitnami httpd 监听 8000,安全,也可以监听 81。Tomcat 服务器独立于 httpd 运行,监听 8443,安全(使用来自 443 的 iptables 重定向)和 7443(也是安全的)。

我正在处理一个现货实例,从最新的实时服务器备份克隆而来,在 Route 53 中映射一个域,并在其中一个指定的安全组中向全世界开放端口 80 和 443,我一直在尝试按照以下页面上的“替代方法”下的说明进行操作:https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/#alternative-approach没有成功。

由于 Lego 已经存在,因此跳过程序中的第 1 步,直接进入第 2 步,我使用“ctlscript.sh stop”停止了 Bitnami。然后,我(在 root 权限下运行)尝试使用程序中给出的命令获取证书,并根据情况进行调整。(请注意,域名已更改,“以保护无辜者。”)

sudo /opt/trac-1.2.3-11/letsencrypt/lego --tls --email="[email protected]" --domains="test.bar.net" --path="/opt/trac-1.2.3-11/letsencrypt" run

我懂了:

2020/08/04 18:01:29 No key found for account [email protected]. Generating a P384 key.
2020/08/04 18:01:29 Saved key to /opt/trac-1.2.3-11/letsencrypt/accounts/acme-v02.api.letsencrypt.org/[email protected]/keys/[email protected]
2020/08/04 18:01:30 Please review the TOS at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
Do you accept the TOS? Y/n
Y
2020/08/04 18:01:43 [INFO] acme: Registering account for [email protected]
!!!! HEADS UP !!!!

        Your account credentials have been saved in your Let's Encrypt
        configuration directory at "/opt/trac-1.2.3-11/letsencrypt/accounts".
        You should make a secure backup of this folder now. This
        configuration directory will also contain certificates and
        private keys obtained from Let's Encrypt so making regular
        backups of this folder is ideal.
2020/08/04 18:01:43 [INFO] [test.bar.net] acme: Obtaining bundled SAN certificate
2020/08/04 18:01:43 [INFO] [test.bar.net] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/6317334421
2020/08/04 18:01:43 [INFO] [test.bar.net] acme: use tls-alpn-01 solver
2020/08/04 18:01:43 [INFO] [test.bar.net] acme: Trying to solve TLS-ALPN-01
2020/08/04 18:01:50 [INFO] Unable to deactivated authorizations: https://acme-v02.api.letsencrypt.org/acme/authz-v3/6317334421
2020/08/04 18:01:50 Could not obtain certificates:
    acme: Error -> One or more domains had a problem:
[test.bar.net] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Cannot negotiate ALPN protocol "acme-tls/1" for tls-alpn-01 challenge, url: 

然后我尝试关闭 OS httpd 实例,并重复该命令。从“获取捆绑的 SAN 证书”消息开始,我得到了相同的结果。

然后,我尝试关闭 Tomcat。这一次,我收到了最后一行不同的消息:

[test.bar.net] acme: error: 400 :: urn:ietf:params:acme:error:connection :: Connection refused, url:

显然这里出了问题,但我下一步该怎么做呢?

答案1

如果涉及端口映射(例如,通过 iptables,8443 从外部显示为 443),则尝试在 lego 调用中添加参数“--http.port :80 --tls.port :8443”。

此外,如果您随后需要将证书提供给 Tomcat 服务器,而 Tomcat 拒绝它们,则可以使用 openssl 将它们转换为 PKCS12 密钥库,这对于 Tomcat 来说更容易处理。

相关内容