我最近(我认为是在 ServerFault、StackOverflow 或其他一些 StackExchange 论坛上)发现 Bitnami 堆栈提供了一种使用 Let's Encrypt 的工具,该工具显然使用了 certbot 以外的东西(称为“乐高”,是吗? ?)。
我们有一个在 AWS EC2 实例(原始 Amazon Linux)上运行的 Bitnami Trac/SVN 堆栈。我注意到盒子上显然有两个单独的 httpd 实例;Bitnami 堆栈中的一个是活动的,托管 Trac 和 SVN。(我想我几个月前开始了另一个,与尝试使 certbot 工作失败有关,并且可能已经放弃了它,但它实际上并没有做任何事情。)
Bitnami httpd 在端口 81(目前无法从外部访问)上设置 HTTP,在端口 8000(可访问)上设置 HTTPS,并且当前使用 Comodo 的证书,该证书将于 7 月到期。
而且我不记得 Bitnami 堆栈中 httpd 的原始“交付”端口配置是什么。
我一直在阅读这个“bncert-tool”的说明,我想知道它是否适用于我们的设置。从我对 certbot 的失败实验中,我的印象是 Let's Encrypt 期望在 80 上找到打开的 http。
任何人都可以对此有所了解吗?
5月18日更新
我终于在我真正可以投入一些时间的时候想起了这个项目。我将该实例克隆到一个现场实例,然后(1)禁用 Linux 附带的“stock”httpd,(2)将 Bitnami 堆栈中的 httpd 更改为监听 80。当我运行 bncert-tool 时,我得到了这个:
使用 Let's Encrypt 创建证书时出错:
acme: Error -> One or more domains had a problem:
[test.wintouch.net] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized
:: Cannot negotiate ALPN protocol "acme-tls/1" for tls-alpn-01 challenge, url:
怎么办?
(我已经保存了日志文件。)
5月22日更新
我突然想到,由于当前配置了服务器,因此没有密码就不可能访问任何内容。
所以我尝试了另一个现场实例。经过一番折腾,我对其进行了配置,使其无需密码即可侦听 80,并在该端口上提供静态页面,该端口远离 SVN 和 Trac 数据。
但结果和以前完全一样。和以前一样,我终止了现场请求并删除了 Route 53 A 记录作为清理的一部分。
在一天的实验之后,我研究了设置原始实例时使用的任何我的 Spot 实例,并发现了一些相当奇怪的东西:我能看到的所有 Bitnami SVN 和 Trac AMI 都是 Debian 或 Ubuntu。但这是在Amazon Linux(原始版本,而不是 Amazon Linux 2)上。因此,要么它来自一个不再存在的 AMI,要么我从一个“普通”Amazon Linux AMI 启动实例,然后在其上安装 Bitnami SVN/Trac 堆栈。
我会注意到,包括 bncert-tool 在内的堆栈不在/opt/bitnami 中,而是在 /opt/trac-1.2.3-11
因此,由于无法检查“交付时”的配置,我环顾四周,想知道 bncert-tool 使用什么来查找堆栈,最终我找到了 /opt/trac-1.2.3-11/properties.ini
hostname=
[Support]
installed_components=apache
apache_logs=apache{,2}/logs/error*log logs/error_log
apache_conf=apache{,2}/conf/{*.conf,bitnami/*.conf} etc/httpd.conf apps/*/conf/ht*.conf
apache_acl=apache apache2
[Apache]
apache_server_port=81
apache_user=daemon
apache_group=daemon
apache_server_ssl_port=443
apache_root_directory=/opt/trac-1.2.3-11/apache2
apache_htdocs_directory=/opt/trac-1.2.3-11/apache2/htdocs
apache_domainname=ip-172-31-8-195.us-east-2.compute.internal
apache_configuration_directory=/opt/trac-1.2.3-11/apache2/conf
apache_version=2.4.39
[Subversion]
subversion_port=3690
subversion_root_directory=/opt/trac-1.2.3-11/subversion
自安装以来似乎没有变化(/opt/trac-1.2.3-11 中的所有内容都具有 2019 年 6 月 6 日的日期戳)。
可能是 bncert-tool 使用了该配置文件,并且已经告诉 Let's Encrypt 使用端口 81 而不是 80?
我会注意到,与上述配置文件相反,httpd 的 Bitnami 实例在 8000 上侦听 SSL/TLS,而不是 443,Tomcat 服务器(独立于 Bitnami 堆栈)在 8443 上侦听(并显示在 netstat -l -- numeric-ports as) 8443,通过 iptables 映射到 443,没有任何东西直接监听 443 端口。