代码之家  ›  专栏  ›  技术社区  ›  Matthew

配置WampServer3以通过端口443与AWS证书管理器、应用程序负载平衡器配合使用

  •  4
  • Matthew  · 技术社区  · 6 年前

    问题:

    是否可以使用WampServer3(Apache、PHP、MySQL)通过端口443与我的应用程序负载平衡器一起工作?如果是,怎么做?

    问题:

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

    • 我的目标群体正在监听端口80,他们身体健康,工作正常。
    • 正在侦听端口443的目标组不健康,正在超时。

    我知道由于Apache设置,端口443出现故障,但我不确定如何在Apache中启用该端口。

    根据我读到的所有内容,Apache要求您拥有SSL的物理文件和密钥,以便允许通过端口443进行请求。我试图在没有这两件事的情况下遵循说明,但没有这两件事WampServer3将无法重新启动。

    我觉得必须有办法让它发挥作用,但我遇到了困难。也许我没有找到正确的东西,或者我缺少了一个需要使用的额外模块。

    TLDR: 由于AWS证书管理器生成的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> 标签我会继续读这篇文章,因为我不完全理解它。

    2 回复  |  直到 6 年前
        1
  •  2
  •   chris    6 年前

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

    你还说,每个听众都有一个目标群体——一个是80岁的健康群体,另一个是443岁的健康群体。

    简单的答案是为两个听众使用一个目标群体。这样,如果最终用户使用443,那么与他们的连接是安全的,并且只有ALB和实例之间的内部通信使用HTTP。这样,运行状况检查将成功,您的用户将能够使用该站点。

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

    要强制所有人使用443,您需要在apache配置中使用重定向规则来检查传入连接是否安全。由于SSL在ALB上终止,因此需要检查其中一个X-Forwarded标头值(请参阅 this )如果X-Forward-Port为80,则重定向。

    为了确保端到端通信安全,您可以将侦听器配置为在端口443而不是端口80上侦听。您可以使用自签名证书来实现这一点,我相信Linux的某些版本附带了默认证书。ALB不会进行证书验证。

    编辑:

    在一条评论中,有一个关于将重写代码放在哪里的问题:

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

    如果您只有一个条目,那么这应该是可行的。如果端口80和443有单独的条目,并且使用的是具有不同侦听器的自签名证书,则需要将其放入端口80虚拟主机条目中。

        2
  •  0
  •   Matthew    6 年前

    我最终没有使用AWS证书管理器,因为要使其正常工作,必须克服一些障碍。

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