【问题标题】:Issues trying to configure SSL on AWS Elastic Beanstalk Webserver (single instance) PHP尝试在 AWS Elastic Beanstalk Webserver(单实例)PHP 上配置 SSL 的问题
【发布时间】:2015-01-26 10:23:37
【问题描述】:

我正在将客户的网站迁移到 AWS。除了客户希望能够在该网站上接受付款外,我已配置并正常工作。我遵循了几个关于如何使用弹性 beantalk 让 SSL 工作的指南。目前我已将其设置为使用源包,并在 .ebextensions 文件中创建了一个配置文件,如下所示:

Resources:
 sslSecurityGroupIngress:
   Type: AWS::EC2::SecurityGroupIngress
   Properties:
    GroupName: {Ref : AWSEBSecurityGroup}
    IpProtocol: tcp
    ToPort: 443
    FromPort: 443
    CidrIp: 0.0.0.0/0

packages:
  yum:
    mod24_ssl : []

files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000755"
    owner: root
    group: root
    content: |
      LoadModule ssl_module modules/mod_ssl.so
      Listen 443
      <VirtualHost *:443>
         <Proxy *>
           Order deny,allow
           Allow from all
         </Proxy>
         SSLEngine on
         SSLProtocol All -SSLv2 -SSLv3
         SSLCertificateFile "/etc/pki/tls/certs/server.crt"
         SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"

         ProxyPass / http://localhost:80/ retry=0
         ProxyPassReverse / http://localhost:80/
         ProxyPreserveHost on

         LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
         ErrorLog /var/log/httpd/elasticbeanstalk-error_log
         TransferLog /var/log/httpd/elasticbeanstalk-access_log
       </VirtualHost>

      /etc/pki/tls/certs/server.crt:
         mode: "000400"
         owner: root
         group: root
         source: sourceHere

      /etc/pki/tls/certs/server.key:
        mode: "000400"
        owner: root
        group: root
        source: sourceHere

sourceHere 是 S3 中文件的链接,我也尝试使用 content 直接代替 source 但结果相同,应用程序启动时没有任何错误,但尝试连接到 IP 地址或提供的 URL只是说该页面不可用。如果我构建相同的 zip 文件,但忽略它正确构建的配置文件。这几乎正​​是 AWS 在支持页面和 Elastic Beanstalk 文档中提供的内容,所以我不确定发生了什么。

【问题讨论】:

  • 您是否尝试使用 https 访问您的网站? https://&lt;app_url&gt;
  • 我用 IP 地址和提供的应用程序 url 进行了尝试。我唯一没有尝试的是更改实际的 DNS 记录,但我不想关闭该站点。
  • 您查看日志了吗?由于 SSL 证书问题,Apache 可能无法启动
  • 我没有看到错误日志在他们应该根据配置文件的地方有其他日志是由弹性 beanstalk 自动生成的,但不是指定的日志。此外,这些文件也不像指定的那样位于服务器上。
  • 没有/var/log/httpd/error_log?

标签: php ssl amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

如果你想使用letsencrypt,你可以试试这个:这是一种在单实例弹性beantalk节点服务器上安装证书的方法:http://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk-single-instances/

基本上是一个自动化的 .ebextension 来安装 certbot、获取证书并将 nginx 链接到它。

【讨论】:

    【解决方案2】:

    您应该考虑通过负载均衡器在 Elastic Beanstalk 环境配置 >> 网络层 >> 负载平衡下添加它,而不是通过 .ebextensions 配置 SSL。

    除了使用 CLI 工具之外,最简单的方法是创建 EC2 负载均衡器并添加密钥。通过第 2 阶段(选择证书)后,您可以中止,证书将保存以供 Elastic Beanstalk 使用。

    1. 创建负载均衡器
    2. 添加 HTTPS

    1. 添加私钥、公钥证书、证书链。
    2. 继续,然后中止。
    3. SSL 证书现在可以在您的 Elastic Beanstalk 环境中使用。

    【讨论】:

    • 这可能会容易得多,我不确定为什么创建 Elastic Beanstalk 环境不是向导的一部分。此外,它被配置为单个实例的 Web 服务器,所以我不知道这是否会改变流程,但我对 AWS 还是很陌生。不过我一定会试试的!
    • 这是您拥有负载均衡器时要遵循的方法。但是,这不适用于单个实例。在 AWS 文档中,您有两种情况,使用负载均衡器:docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 和没有负载均衡器:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
    • +1 用于 Elastic Beanstalk 上的网络配置以提供 ssl 证书。添加 ssl 证书的另一种简单方法是在 EC2->Load Balancers->Listeners 下添加 https 侦听器
    • 是的,但是在这种情况下如何在不修改配置文件的情况下配置 ProxyPass 规则?
    • 简单得多,但费用为 20 美元/月
    【解决方案3】:

    您的配置文件存在缩进问题:/etc/pki/tls/certs/server.crt/etc/pki/tls/certs/server.key 应与 /etc/httpd/conf.d/ssl.conf 处于同一级别。

    您应该更正缩进,以便获得:

    files:
      /etc/httpd/conf.d/ssl.conf:
        mode: "000755"
        owner: root
        group: root
        content: |
          LoadModule ssl_module modules/mod_ssl.so
          Listen 443
          <VirtualHost *:443>
             <Proxy *>
               Order deny,allow
               Allow from all
             </Proxy>
             SSLEngine on
             SSLProtocol All -SSLv2 -SSLv3
             SSLCertificateFile "/etc/pki/tls/certs/server.crt"
             SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
    
             ProxyPass / http://localhost:80/ retry=0
             ProxyPassReverse / http://localhost:80/
             ProxyPreserveHost on
    
             LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
             ErrorLog /var/log/httpd/elasticbeanstalk-error_log
             TransferLog /var/log/httpd/elasticbeanstalk-access_log
           </VirtualHost>
    
      /etc/pki/tls/certs/server.crt:
         mode: "000400"
         owner: root
         group: root 
         source: sourceHere
    
      /etc/pki/tls/certs/server.key:
         mode: "000400"
         owner: root
         group: root
         source: sourceHere
    

    【讨论】:

    • 你是对的!非常感谢你,我以后不会犯这个错误了!
    猜你喜欢
    • 1970-01-01
    • 2019-02-28
    • 2017-05-21
    • 2016-02-03
    • 2016-05-10
    • 2016-08-18
    • 2015-04-23
    • 2021-11-29
    • 2016-03-08
    相关资源
    最近更新 更多