我已成功安装自我认证的 SSL,以使 https 在 AWS linux EC2 上运行。
然后,我在自动缩放和负载平衡环境中的弹性豆茎上尝试它。但我失败了。
我所做的过程是首先启动一个新的弹性豆茎应用程序。我生成 SSL 证书的私钥和自认证公钥的方式与我成功为 EC2 所做的相同。
不同的是,我使用 upload-server-certificate 将安全证书上传到 IAM,以便负载均衡器可以重新配置它。
aws iam upload-server-certificate --server-certificate-name mydomainname_SC --certificate-body file://server.crt --private-key file://privatekey.pem
然后我使用此命令验证证书没有问题
aws iam get-server-certificate --server-certificate-name mydomainname_SC
之后,在 beanstlak 控制台上,我将 beanstalk 的 EC2 的安全组设置为向所有人开放的 http 80、https 443。然后我进入elastic beanstalk控制台选择configure,然后选择负载均衡以打开http 80、https 443的侦听器,并将SSL证书ID指定为mydomianname_SC。然后我在 beanstalk EC2 实例上执行了“service httpd restart”。结果http成功了,但是https失败了。
在单个 EC2 实例上安装 SSL 证书和 Elastic beanstalk 之间的区别在于,在 beanstalk 中,我们需要将证书上传到 IAM,但在单个 EC2 中,我在 https.conf 文件中添加“SSLEngine on”,例如
NameVirtualHost *:443
<VirtualHost *:443>
ServerName ec2_ip_address:443
# other configurations
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/privatekey.key
</VirtualHost>
由于 https 在我的 beanstalk 配置中失败,因此我将上述 VirtualHost 命令添加到 /etc/httpd/conf/httpd.conf 文件中
弹性beanstalk EC2 实例。添加此后,我执行了“service httpd restart”,结果 https 和 http 都失败了。
然后我将 httpd.conf 修改为
NameVirtualHost *:443
<VirtualHost *:443>
ServerName ec2_ip_address:443
# other configurations
SSLEngine on
</VirtualHost>
或者只是一行,例如
SSLEngine on
但对于上述两种情况,http和httpd都失败了。看来 httpd.conf 中的更改也弄乱了 http。然后我发现elastic beanstalk的EC2实例中没有“ssl.conf”文件。我的问题是我们需要在elastic beanstalk的EC2上安装mod_ssl吗?我确实尝试在 Elastic beanstalk 的 EC2 实例上安装 mod_ssl 但失败并显示错误消息:
错误:httpd24 与 httpd-2.2.27-1.2.amzn1.x86_64 冲突
错误:httpd24-tools 与 httpd-tools-2.2.27-1.2.amzn1.x86_64 冲突
我们需要在 elasstic beanstalk 的 EC2 上安装 mod_ssl 吗?
上述开启elastic beanstalk的HTTPS的做法有什么问题呢?