如何将SSL证书附加到单实例beanstalk应用程序

Jus*_*s12 15 ssl amazon-web-services amazon-elastic-beanstalk

我有一场Java战争,我希望在AWS上使用弹性beanstalk.我有证书,但我无法弄清楚如何将它附加到我的单实例应用程序.

所有的howtos描述了如何将证书附加到弹性负载均衡器,但没有关于如何在没有负载均衡器(即单个实例)的情况下执行此操作的文档.

我不想使用负载均衡器,因为它需要额外的费用(在测试环境中不需要).

任何帮助将不胜感激.

stu*_*udy 15

Elastic Beanstalk单实例类型不支持通过Management Console或API提供SSL.您可以在AWS论坛中找到更多信息.

但您可以使用配置文件来自定义实例以启用SSL.请参阅以下示例.

  1. .ebextensions在源包的顶级创建一个目录.
  2. 拷贝SSLCertificateFile.crt,SSLCertificateKeyFile.key,SSLCertificateChainFile.crtssl.conf(apache2的SSL模块配置)成.ebextensions
  3. 创建配置文件/your_app/.ebextensions/01ssl.config.01ssl.config在配置文件中键入以下内容 以配置ssl设置
  4. 打开安全组中的443端口

01ssl.config

packages:
  yum:
    mod_ssl: []
container_commands:
  add-SSLCertificateFile-label:
    command: cp .ebextensions/SSLCertificateFile.crt /home/ec2-user/SSLCertificateFile.crt

  add-SSLCertificateKeyFile-label:
    command: cp .ebextensions/SSLCertificateKeyFile.key /home/ec2-user/SSLCertificateKeyFile.key

  add-SSLCertificateChainFile-label:
    command: cp .ebextensions/SSLCertificateChainFile.crt /home/ec2-user/SSLCertificateChainFile.crt

  replace-ssl-configuration-label:
    command: cp .ebextensions/ssl.conf /etc/httpd/conf.d/ssl.conf
Run Code Online (Sandbox Code Playgroud)

ssl.conf示例

您的WAR结构应如下所示

web_app.war
          |
          |_.ebextensions
          |   |_ 01ssl.config
          |   |_ SSLCertificateFile.crt
          |   |_ SSLCertificateKeyFile.key
          |   |_ SSLCertificateChainFile.crt
          |   |_ ssl.conf
          |
          |_META-INF
          |
          |_WEB-INF
               |_ classes
               |_ lib
               |_ web.xml
Run Code Online (Sandbox Code Playgroud)

2013/11/14更新.

  1. 使用配置文件时应注意安全问题,因为每个人都可以访问.ebextensions文件夹中的文件.在通常情况下这可能不会发生.
  2. AWS还提供了一个示例配置文件,用于立即为单实例类型配置SSL.

  • 我最终使用了最简单的负载均衡器. (2认同)

Ton*_*rez 5

此解决方案使用 LetsEncrypt 免费证书,并且不需要将您的证书存储在配置文件中。并且它很容易在不同的域中重用。

http://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk-single-instances/

摘要:带有容器命令的配置文件,可自动下载 certbot、获取证书并将 nginx 指向证书。