我有一场Java战争,我希望在AWS上使用弹性beanstalk。 我有证书,但我无法弄清楚如何将它附加到我的单实例应用程序。
所有的方法都描述了如何将证书附加到弹性负载均衡器,但没有关于如何在没有负载均衡器的情况下(即单个实例)执行此操作的文档。
我不想使用负载均衡器,因为它需要额外费用(在测试环境中不需要)。
任何帮助将不胜感激。
答案 0 :(得分:14)
Elastic Beanstalk单实例类型不支持通过Management Console或API提供SSL。您可以在AWS Forums中找到更多信息。
但您可以使用配置文件自定义实例以启用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
答案 1 :(得分:3)
此解决方案使用LetsEncrypt免费证书,并且不需要将证书存储在配置文件中。并且它易于重用于不同的域。
摘要:包含容器命令的配置文件,可自动下载certbot,获取证书,并将nginx指向证书。