【问题标题】:how to attach SSL certificate to single instance beanstalk app如何将 SSL 证书附加到单实例 beanstalk 应用程序
【发布时间】:2013-09-06 09:40:18
【问题描述】:

我有一场 Java 战争,我想在 AWS 上的弹性 beanstalk 上进行托管。 我有一个证书,但我不知道如何将它附加到我的单实例应用程序中。

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

我不想使用负载平衡器,因为它需要额外费用(并且在测试环境中不需要)。

任何帮助将不胜感激。

【问题讨论】:

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


【解决方案1】:

Elastic Beanstalk 单实例类型不支持通过管理控制台或 API 实现的 SSL。您可以在AWS Forums找到更多信息。

但是您可以使用配置文件来自定义您的实例以启用 SSL。请看下面的例子。

  1. 在源包的顶层创建一个.ebextensions 目录。
  2. SSLCertificateFile.crtSSLCertificateKeyFile.keySSLCertificateChainFile.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

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

2013/11/14 更新。

  1. 使用配置文件要注意安全问题,因为.ebextensions文件夹下的文件是所有人都可以访问的。这在一般情况下可能不会发生。
  2. AWS 现在还为configuring SSL for Single Instance Type 提供了一个示例配置文件。

【讨论】:

  • 谢谢,我试试看。
  • 在 AWS 论坛上查看此主题以获得解决方案:forums.aws.amazon.com/thread.jspa?messageID=502277&#502277
  • @study:您提到文件夹 .ebextentions 对所有人开放——您能详细说明一下吗?一旦应用程序部署在生产环境中的 Tomcat 上,它似乎就无法访问了。但是,它仍然是war文件的一部分,如果移动到不同的系统中,它就会完全暴露出来,对吧?
  • @stepanian,这意味着每个人都可以访问文件夹 .ebextentions 中的文件。
  • 我最终使用了最简单的负载均衡器。
【解决方案2】:

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

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

总结:一个包含容器命令的配置文件,可自动下载 certbot、获取证书并将 nginx 指向证书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 2019-05-08
    • 2018-07-27
    • 2015-06-13
    • 1970-01-01
    • 2018-04-08
    • 2020-07-23
    • 2021-11-10
    相关资源
    最近更新 更多