当前位置: 首页 > 知识库问答 >
问题:

对于在 ELB 后面运行的 AWS 证书管理器 (ACM) 和 EC2 服务器,通过 HTTPS 进行会话处理,LEMP 堆栈中需要进行哪些更改?

公良征
2023-03-14

我开始知道我可以使用 AWS 证书管理器 (ACM) 来获取通配符 SSL,即 *.example.com。

在 ACM 中创建的 SSL 证书可以在 AWS ELB 后面运行的 EC2 上使用。

当AWS ELB从端口443到端口80上的EC2发出请求,浏览器中的URL仍在HTTPS上,内部PHP在HTTP上运行(不在nginx配置中监听到443),因此会话无效,应用程序注销流发生,会话无效时,就会出现问题。

我不知道如何解决这个问题,也不知道如何在不使用SSL的情况下在nginx中配置端口443?

附言(同postscript);警官(police sergeant)

因为Amazon不提供从ACM下载SSL私钥和公钥的选项,以便通过端口443在EC2-nginx配置上设置SSL。

共有1个答案

宗政英才
2023-03-14

当您将SSL添加到负载平衡器(而不是实例)时,您不必配置密钥或侦听新端口。就web服务器而言,您仍在HTTP下运行,这会带来自身的问题。

幸运的是,AWS领先一步,我们可以为此目的使用标头,如下例所示:

server {
  listen 80;
  server_name yoursitename;
  root /path/to/web/dir;

  index index.php;

  proxy_set_header X-Forwarded-Proto $scheme;
  if ( $http_x_forwarded_proto != 'https' ) {
    return 301 https://$host$request_uri;
  }

  location ~ \.php$ {
      # PHP conf
  }
}

您可能还必须编辑应用程序中的设置以告诉它您正在使用HTTPS。这可能在配置文件或数据库中的设置中。

您现在很可能会收到一些不安全的内容警告。您不能通过HTTPS加载不安全的内容,因此请确保您没有通过HTTP加载任何图像或脚本。谷歌开发者有一个很好的指南,所以如果你想了解更多,请阅读一下。

 类似资料:
  • 我正在阅读证书管理器的aws文档。我可以将SSL证书与ELB关联。我已经这样做了,我的应用程序仍然驻留在部署在Ubuntu EC2服务器上的Apache服务器上。 在文档中,它有以下内容: 注意目前,ACM证书与弹性负载平衡负载平衡器或Amazon CloudFront发行版相关联。尽管您在Amazon EC2实例上安装了您的网站,但是您没有在那里部署ACM证书。相反,在您的弹性负载平衡负载平衡器

  • Managing certificates You should generate your own certificates before going to production. Depending on the go version used, the notary-server certificate may have to be marked for both EKUs clientAu

  • 问题内容: 假设我有一个由 用户 组成的预订数据库: 和他们的 票 及相关 航班 要移动此Google AppEngine,我需要更改什么? 我了解AppEngine 不允许加入 。 这是否意味着我的桌子应该成为所有领域的一大障碍? 预订 : 换句话说,我所有的查询现在都在同一个表上运行吗? 问题答案: 您需要进行哪些更改,主要取决于您需要运行哪些查询,而不取决于所拥有的数据。最有可能的是,您只需

  • 我已经准备好了用于在我的 AWS ELB 上终止外部 HTTPS 连接。我现在尝试使用带有自签名证书的 HTTPS 来保护 EC2 上的 ELB 和后端 NGINX 服务器之间的连接。我已经按照文档进行操作,但是通过HTTPS访问服务器会导致408 HTTP超时。我似乎无法获得任何调试信息来确定故障所在。 < li >我已经确认安全组允许EC2上的ELB和NGINX之间的连接。 < li >我已经

  • 我想知道当我在example.com中键入没有https时,我必须在AWS的证书管理器端做什么才能让https工作。 我已经为我的域配置了路由53别名,以便路由到我的弹性豆茎URL。我还有一个SSL证书,用于我的域名example.com和*.domain.com,这两个证书都已成功验证,是Amazon颁发的,也在使用中。

  • 我一直在使用selenium进行python中的自动浏览器模拟和web抓取,这对我来说效果很好。但是现在,我必须在代理服务器后面运行它。因此,现在selenium将打开窗口,但无法打开请求的页面,因为未在打开的浏览器上设置代理设置。当前代码如下(示例): 我现在如何更改上述代码以使用代理服务器?