AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1016201
Accepted
hbquikcomjamesl
hbquikcomjamesl
Asked: 2020-05-08 14:35:10 +0800 CST2020-05-08 14:35:10 +0800 CST 2020-05-08 14:35:10 +0800 CST

让我们用 Bitnami 加密,有一些奇怪的端口号

  • 772

我最近(我认为是在 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 端口。

svn amazon-ec2 trac lets-encrypt bitnami
  • 2 2 个回答
  • 487 Views

2 个回答

  • Voted
  1. Jota Martos
    2020-05-08T23:31:06+08:002020-05-08T23:31:06+08:00

    Bitnami 工程师在这里,

    你是对的。Bitnami HTTPS 配置工具使用 Lego,一个用 Go 编写的 Let's Encrypt 客户端。我们的工具使用端口 80 启动乐高服务器(让 Let's Encrypt 验证它),以便可以从您的网络外部访问该端口。如果不是这种情况,您将需要使用其他工具(您可以直接使用乐高)并设置您要用于执行验证的端口。例如,您可以下载乐高工具并通过运行以下命令尝试使用端口 81:

    cd /tmp
    curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
    tar xf lego_v3.6.0_linux_amd64.tar.gz
    sudo mkdir -p /opt/bitnami/letsencrypt
    sudo mv lego /opt/bitnami/letsencrypt/lego
    
    sudo /opt/bitnami/ctlscript.sh stop
    
    sudo /opt/bitnami/letsencrypt/lego --http --http.port 81 --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="www.DOMAIN" --path="/opt/bitnami/letsencrypt" run
    

    这应该生成一个新证书。您将需要稍后在 Apache 的配置中配置它们。您可以在这里找到更多信息

    https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/#alternative-approach

    • 1
  2. Best Answer
    hbquikcomjamesl
    2020-08-08T13:08:37+08:002020-08-08T13:08:37+08:00

    我最终在 Martos 先生提供的链接中使用了“替代方法”,并在说明中未提及一些更改:

    如果涉及端口映射(例如,8443 通过 iptables 从外部显示为 443),则尝试将参数“--http.port :80 --tls.port :8443”(或您的映射需要的任何内容)添加到乐高调用。一旦添加了这些参数,乐高就完美地工作了。另请注意,在使用 Lego 时关闭服务器很重要:它需要短暂接管端口。

    此外,如果您需要将证书提供给 Tomcat 服务器,而 Tomcat 拒绝它们,您可以使用 openssl 将它们转换为 PKCS12 密钥库(这要感谢 Tomcat 用户列表服务器上的 Tomcat 开发人员 Christopher Schultz ),这对 Tomcat 来说更容易处理。

    • 0

相关问题

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 如何定期复制 SVN 存储库而不会丢失目标标签和分支?

  • 如何通过 SVN 命令行接受 SSL 证书?

  • 如何在 slicehost 上设置集市

  • 如何在 Mac OS X 中正确安装 Subversion?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve