在AWS上,我在顶层ELB覆盖的EC2上托管多个(完全不同的)域。我已经为1个域及其子域提供了1个通配符SSL证书。 (xxxx.site1.com)
那么我现在可以为另一个不同的域添加一个单一SSL证书(在同一个ELB上),比如(www.site2.com)吗?
我问这是因为有些文章说,它不会起作用,只是粉碎。
请劝告。
答案 0 :(得分:13)
没有。唯一可行的方法是使用第二个端口进行HTTPS连接(443除外),这不适用于真实场景,因为443是HTTPS的默认端口
话虽如此,您只需创建第二个ELB并将第二个通配符证书分配给它。您还可以将流量转发到与第一个ELB将其流量转发到的后端服务器相同的后端服务器。
希望这有帮助。
答案 1 :(得分:8)
是。但不是通过在负载均衡器上终止SSL。您必须在ELB上启用代理协议,并透明地将TCP请求转发到Web服务器。本文中有更多关于如何使用示例NGINX配置配置ELB的详细信息:
Multiple SSL domains on AWS ELB with Nginx
使用AWS CLI启用:
case
如果您使用的是Apache,还可以使用defmethod
模块。
NOT 添加额外的分发图层; ELB仍然处理流量分配,连接耗尽。但是,SSL终止由每个服务器处理。
答案 2 :(得分:7)
自2017年10月10日起,可以使用Application Load Balancer执行此操作。您可以将多个证书绑定到负载均衡器上的同一个安全侦听器,ALB将自动为每个客户端选择最佳TLS证书。有关详细信息,请参阅:https://aws.amazon.com/blogs/aws/new-application-load-balancer-sni/
答案 3 :(得分:0)
我同意Garth Kerr对Nginx的上述答案。
如果是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>