我有一场 Java 战争,我想在 AWS 上的弹性 beanstalk 上进行托管。我有一个证书,但我不知道如何将它附加到我的单实例应用程序中。
所有howtos都描述了如何将证书附加到弹性负载均衡器,但没有关于如何在没有负载均衡器(即单实例)的情况下执行此操作的文档。
我不想使用负载均衡器,因为它需要额外费用(并且在测试环境中不需要)。
任何帮助将不胜感激。
我有一场 Java 战争,我想在 AWS 上的弹性 beanstalk 上进行托管。我有一个证书,但我不知道如何将它附加到我的单实例应用程序中。
所有howtos都描述了如何将证书附加到弹性负载均衡器,但没有关于如何在没有负载均衡器(即单实例)的情况下执行此操作的文档。
我不想使用负载均衡器,因为它需要额外费用(并且在测试环境中不需要)。
任何帮助将不胜感激。
Elastic Beanstalk 单实例类型不支持通过管理控制台或 API 进行的 SSL。您可以在AWS 论坛中找到更多信息。
但是您可以使用配置文件来自定义您的实例以启用 SSL。请看下面的例子。
.ebextensions
在源包的顶层创建一个目录。SSLCertificateFile.crt
, SSLCertificateKeyFile.key
,SSLCertificateChainFile.crt
和ssl.conf
(apache2 ssl 模块配置) 复制到.ebextensions
/your_app/.ebextensions/01ssl.config
. 在配置文件中键入以下内容
01ssl.config
以配置 ssl 设置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
此解决方案使用 LetsEncrypt 免费证书,并且不需要将您的证书存储在配置文件中。而且它很容易在不同的领域重用。
摘要:一个带有容器命令的配置文件,可以自动下载 certbot、获取证书并将 nginx 指向证书。