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

问题描述 投票:0回答:4

在 AWS 上,我在 EC2 上托管多个(完全不同的)域,并由顶部的 ELB 覆盖。我已经拥有 1 个域及其子域的 1 个通配符 SSL 证书。 (xxxx.site1.com)

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

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

请多多指教。

ssl dns certificate amazon-elb
4个回答
14
投票

不。唯一的方法是使用第二个端口进行 HTTPS 连接(443 除外),这不适用于现实场景,因为 443 是 HTTPS 的默认端口

话虽如此,您可以简单地创建第二个 ELB 并向其分配第二个通配符证书。您还可以将流量转发到与第一个 ELB 将流量转发到的后端服务器相同的后端服务器。

希望这有帮助。


8
投票

是的。但不能通过终止负载均衡器上的 SSL 来实现。您必须在 ELB 上启用代理协议并将 TCP 请求透明转发到 Web 服务器。本文提供了有关如何使用示例 NGINX 配置来配置 ELB 的更多详细信息:

使用 Nginx 在 AWS ELB 上实现多个 SSL 域

使用 AWS CLI 启用:

aws elb create-load-balancer-policy \  
  --load-balancer-name acme-balancer \
  --policy-name EnableProxyProtocol \
  --policy-type-name ProxyProtocolPolicyType \
  --policy-attributes AttributeName=ProxyProtocol,AttributeValue=True

aws elb set-load-balancer-policies-for-backend-server \  
  --load-balancer-name acme-balancer \
  --instance-port 9443 \
  --policy-names EnableProxyProtocol

aws elb describe-load-balancers --load-balancer-name acme-balancer

如果您使用 Apache,还有一个

mod_proxy_protocol
模块可用。

这不会添加额外的分布层; ELB 仍然处理流量分配、连接耗尽。但是,SSL 终止由每个单独的服务器处理。


8
投票
自 2017 年 10 月 10 日起,可以使用 Application Load Balancer 来执行此操作。您可以将多个证书绑定到负载均衡器上的同一个安全侦听器,ALB 会自动为每个客户端选择最佳的 TLS 证书。有关更多信息,请参阅:

https://aws.amazon.com/blogs/aws/new-application-load-balancer-sni/


0
投票
我同意上述 Garth Kerr 对 Nginx 的回答。

对于阿帕奇:

您可以在 ELB 或 Apache/Nginx(服务器)级别终止 SSL 证书

在多租户(多客户端)架构的情况下,我们可能需要在单个 ELB 下支持不同的客户(具有不同的域 - *.abc.com、*.xyz.com),这在现有的 ELB 中无法工作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>
    
© www.soinside.com 2019 - 2024. All rights reserved.