我正在将客户的网站迁移到 AWS。我已配置所有内容并正常工作,但客户希望能够在该网站上接受付款。我遵循了几个关于如何使用 elastic beanstalk 让 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 中文件的链接,我也尝试过直接使用内容代替源,但结果是相同的,应用程序启动时没有任何错误,但任何连接到 IP 地址或提供的 URL 的尝试都只是说该页面不可用。如果我构建相同的 zip 文件但忽略配置文件,它会正确构建。这与 AWS 支持页面和 Elastic Beanstalk 文档中的内容几乎完全相同,所以我不确定发生了什么。
您应该考虑通过 Elastic Beanstalk 环境配置 >> 网络层 >> 负载均衡下的负载均衡器添加 SSL,而不是通过 .ebextensions 预置 SSL。
除了使用 CLI 工具之外,最简单的方法是创建 EC2 负载均衡器并添加密钥。一旦通过第 2 阶段(选择证书),您就可以中止,并且证书将被保存以供 Elastic Beanstalk 使用。
- 创建负载均衡器
- 添加HTTPS
- 添加私钥、公钥证书、证书链。
- 继续,然后中止。
- SSL 证书现在将在您的 Elastic Beanstalk 环境中可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)