【问题标题】:Multiple SSL certs on one EC2 instance一个 EC2 实例上的多个 SSL 证书
【发布时间】:2017-07-28 09:05:33
【问题描述】:
【问题讨论】:
-
我认为这是Super User 或Server Fault 的问题。您可能想要显示您的 Apache(?) 配置。您在此处尝试启用的功能称为 SNI——它允许浏览器告诉 Web 服务器将请求哪个主机,以便提供正确的证书。
标签:
amazon-web-services
ssl
amazon-ec2
https
lets-encrypt
【解决方案1】:
- 您可以使用ACM为您想要的任何域创建免费证书。
- 创建一个弹性负载均衡器并选择您刚刚创建的证书。
- 将 EC2 实例连接到 Elastic Load Balancer
最佳实践是创建启动配置并创建 Auto Scaling 组,让 ASG 处理 EC2 实例的创建。在 AWS 中,您的实例可以随时被终止,依赖单个 EC2 实例不是一个好习惯。您可能会在临时存储中存储的所有数据突然丢失它!
【解决方案2】:
如果是 Apache:
您可以在 ELB 或 Apache/Nginx(服务器)级别终止 SSL 证书
在多租户(多客户端)架构的情况下,我们可能需要在单个 ELB 下支持不同的客户(具有不同的域 - *.abc.com、*.xyz.com),这在现有的 ELB 设置。
解决方案:您可以通过在 ELB 中添加侦听器来做到这一点,如下所示: TCP 443(而不是 HTTPS - 443) - 这将通过 443 请求然后,您可以在服务器级别终止 SSL 证书
您必须从外部供应商(如 GoDaddy)购买证书并在服务器级别安装和终止证书。
例如,Apache 虚拟主机看起来像
NameVirtualHost *:443
<VirtualHost *:443>
ServerName abc.com
####abc HTTPS Certificate
SSLEngine on
SSLCertificateFile /opt/organization/site/ssl_keys/abc/abc_gd.crt
SSLCertificateKeyFile /opt/organization/site/ssl_keys/abc/abc.pem
SSLCertificateChainFile /opt/organization/site/ssl_keys/abc/abc_gd_bundle.crt
WSGIScriptAlias / /opt/organization/site/deployment-config/abc.wsgi
ServerSignature On
Alias /media/ /opt/organization/site/media/
<Directory /opt/organization/site/media/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
NameVirtualHost *:80
<VirtualHost *:80>
ServerName abc.com
#Rewrite to HTTPS in case of HTTP
RewriteEngine On
RewriteCond %{SERVER_NAME} abc.com
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
WSGIScriptAlias / /opt/organization/site/deployment-config/abc.wsgi
ServerSignature On
Alias /media/ /opt/organization/site/media/
<Directory /opt/organization/site/media/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>