我可以使用单个AWS ELB为2个不同的域托管2个SSL证书吗?

时间:2014-02-20 09:43:32

标签: ssl dns certificate amazon-elb

在AWS上,我在顶层ELB覆盖的EC2上托管多个(完全不同的)域。我已经为1个域及其子域提供了1个通配符SSL证书。 (xxxx.site1.com)

那么我现在可以为另一个不同的域添加一个单一SSL证书(在同一个ELB上),比如(www.site2.com)吗?

我问这是因为有些文章说,它不会起作用,只是粉碎。

请劝告。

4 个答案:

答案 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>