我们有一个 Amazon Linux(不是 Amazon Linux 2)实例,运行一个相当旧的 Bitnami Trac/SVN 堆栈,还运行一个 Tomcat 服务器。它有两个 httpd 实例:一个是 Bitnami 堆栈的一部分,另一个是操作系统附带的。Tomcat 独立运行。Lego 已经存在,bncert-tool 也是如此,但 Bitnami 目录不是“/opt/bitnami”,而是“/opt/trac-1.2.3-11”。
操作系统 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页面上“替代方法”下的说明进行操作,但未成功。
跳过过程中的第 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:
然后我尝试关闭操作系统 httpd 实例,并重复该命令。从“获取捆绑的 SAN 证书”消息开始,我得到了相同的结果。
然后,我尝试关闭 Tomcat。这一次,我在最后一行收到了不同的信息:
[test.bar.net] acme: error: 400 :: urn:ietf:params:acme:error:connection :: Connection refused, url:
显然这里出了点问题,但我的下一步是什么?
如果涉及端口映射(例如,8443 通过 iptables 从外部显示为 443),则尝试将参数“--http.port :80 --tls.port :8443”添加到乐高调用。
此外,如果您需要将证书提供给 Tomcat 服务器,而 Tomcat 拒绝它们,您可以使用 openssl 将它们转换为 PKCS12 密钥库,这对 Tomcat 来说更容易处理。