Могу ли я использовать Single AWS ELB для размещения 2 сертификатов SSL для 2 разных доменов?

В AWS я размещаю несколько (полностью разных) доменов на EC2, покрытых ELB сверху. У меня уже есть 1 Wildcard SSL Cert для 1 домена и его дочерних элементов. (Xxxx.site1.com)

Затем теперь можно добавить еще один Single SSL Cert (на тот же ELB) для еще одного другого домена, например (www.site2.com), пожалуйста?

Я прошу об этом, потому что некоторые статьи говорят, что это не сработает и просто сокрушит.

Просьба проконсультироваться.

Ответ 1

Нет. Единственный способ, которым вы могли бы это сделать, - использовать второй порт для соединений HTTPS (кроме 443), который не применяется к реальным сценариям мира, поскольку 443 является портом по умолчанию для HTTPS

Сказав это, вы можете просто создать второй ELB и присвоить ему свой второй подстановочный сертификат. Вы также можете перенаправить свой трафик на тот же серверный сервер, что и тот, где первый ELB пересылает свой трафик.

Надеюсь, что это поможет.

Ответ 2

Да. Но не прерывая SSL на балансировщике нагрузки. Вы должны включить прокси-протокол на ELB и прозрачно пересылать запросы TCP на веб-сервер. В этой статье более подробно описано, как настроить ELB с примерами конфигураций NGINX:

Несколько доменов SSL на AWS ELB с Nginx

Использование 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

Существует также модуль mod_proxy_protocol, если вы используете Apache.

Это означает НЕ добавление дополнительного уровня распространения; ELB по-прежнему обрабатывает распределение трафика, сливание соединения. Однако завершение SSL обрабатывается каждым отдельным сервером.

Ответ 3

С 10 октября 2017 года это можно сделать с помощью Application Load Balancer. Вы можете связывать несколько сертификатов с одним и тем же безопасным прослушивателем на балансировщике нагрузки, и ALB автоматически выбирает оптимальный сертификат TLS для каждого клиента. Для получения дополнительной информации см. https://aws.amazon.com/blogs/aws/new-application-load-balancer-sni/

Ответ 4

Я согласен с приведенным выше ответом на Nginx от Garth Kerr.

В случае Apache:

Вы можете завершить сертификаты SSL на уровне ELB или Apache/Nginx (сервер)

В случае многопользовательской (многоклиентской) архитектуры нам может потребоваться поддержка разных клиентов (с разными доменами - *.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>