-1

所以我有一个 Apache 服务器在端口 443 上运行,NodeJS 安装在最新版本的 Ubuntu 上。现在我的一切都运行得很完美,除了在我运行 NodeJS 服务器的端口 100 上没有 SSL。

当我将它切换到端口 80 并通过 运行服务器时sudo,它给出了一个错误,所以我当然不能这样做。是否有任何解决方案可以让 LetsEncrypt SSL 覆盖 443 和 80 以外的端口?

4

2 回答 2

2

端口 80 是 http 的标准端口(未加密)。

端口 443 是 https 的标准端口(带加密)。

标准端口是指网络浏览器知道这些端口,因此不要指望您明确提供端口。所以https://www.example.comhttps://www.example.com:443是相同的,但是因为您使用的是标准端口,所以不需要包含 :443 部分,因为浏览器会这样做你。

尽管有这些标准约定,但您可以在任何端口上使用 SSL,因为它完全独立于端口。例如,通常您永远不会在端口 80 上使用 SSL,因为这会破坏这些约定。

因此,如果您想通过端口 100 使用 NodeJS 服务,那么您可以,但您需要在 URL 以及 https 协议中明确声明该端口。

LetsEncrypt 并不在乎你使用哪个端口(除了验证部分,它将文件放在外部世界可联系的地方以证明你拥有域和密钥的所有权 - 这就是你在这里谈论的内容?)。因此,您可以为 Apache 和 NodeJs 使用相同的证书。

更好的解决方案是使用标准端口和 ProxyPass 来自 Apache 的节点服务(通常是纯 http,但如果需要也可以是 https): Apache and Node.js on the Same Server。这样你就可以让 Apache 监听端口 80(重定向到端口 443)和端口 443,并且节点服务只能通过 Apache 获得。

于 2016-04-16T07:39:01.273 回答
1

您可以在不同的端口上使用 SSL,只要确保您在防火墙上允许它

sudo ufw allow [port number]
于 2018-02-22T00:55:45.900 回答