配置 WampServer3 以通过端口 443 与 AWS Certificate Manager、Application Load Balancer 一起工作

Configure WampServer3 to work with AWS Certificate Manager, Application Load Balancer over port 443

问题:

是否可以使用 WampServer3(Apache、PHP、MySQL)通过端口 443 与我的 Application Load Balancer 一起工作?如果有怎么办?

问题:

目前我的应用程序负载均衡器连接到我的实例,我有 2 个侦听器,端口 80 和端口 443。端口 443 上的侦听器附加了一个由 AWS 证书管理器生成的 SSL 证书。

我知道端口 443 由于 Apache 设置而失败,但我不确定我应该如何在 Apache 中启用该端口。

根据我所阅读的所有内容,Apache 要求您拥有 SSL 的物理文件和密钥,以便它允许通过端口 443 进行请求。我尝试按照没有这两件事的说明进行操作,但是 WampServer3没有它们将不会重新启动。

我觉得必须有办法让它工作,但我遇到了困难。也许我没有在寻找正确的东西,或者我缺少需要使用的附加模块。

TLDR: 因为无法物理下载由 AWS Certificate Manager 生成的 SSL,我怎样才能让它在 Windows 10 上与 Apache 一起工作而不用有文件或密钥?

编辑

所以据我了解,我不仅需要将下面的重写代码放入 <VirtualHost>

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

我还需要将 X-Forwarded-Proto: https 放在 healthcheck.php 页面顶部的 <html> 标签之前吗?我会继续阅读这篇文章,因为我并不完全理解它。

您的负载均衡器上的 80 和 443 都有一个侦听器。 443 上的侦听器具有 ACM 证书。

您还说每个听众都有一个目标群体 - 80 岁的健康人群和 443 岁的健康人群。

简单的答案是为两个听众使用一个目标群体。这样,如果您的最终用户通过 443 进入,则与他们的连接是安全的,并且只有您的 ALB 和实例之间的内部流量使用 HTTP。这样健康检查就会成功,您的用户将能够使用该网站。

但这并不是大多数人真正想要的 - 他们想要 end-to-end 安全,而且他们很可能希望从端口 80 重定向到 443。

要强制每个人都使用 443,您需要在 apache 配置中使用重定向规则来检查传入连接是否安全。因为 SSL 在 ALB 上终止,您将需要检查 X-Forwarded header 值之一(参见 this)并在 X-Forward-Port 为 80 时重定向。

为了确保 end-to-end 流量安全,您可以将侦听器配置为侦听端口 443 而不是端口 80。您可以为此使用 self-signed 证书,我相信某些版本Linux 个带有默认证书。 ALB 不会进行证书验证。

编辑:

评论里有人问重写代码放在哪里:

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} =http 
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 

如果您只有一个条目,那么这应该可行。如果您对端口 80 和 443 有单独的条目并且您正在使用 self-signed 具有不同侦听器的证书,那么您需要将它放在端口 80 虚拟主机条目中。

我最终完全没有使用 AWS Certificate Manager,因为要使其正常工作必须克服一些障碍。

相反,我找到了一个免费提供 SSL 证书的好资源 - LetsEncrypt。由于易于使用,我会向所有人强烈推荐此解决方案。此外,它们似乎得到了许多知名公司的支持。