Включение HTTPS и HTTP с помощью приложения Elastic Beanstalk - PullRequest
0 голосов
/ 14 ноября 2018

Мы пытаемся настроить HTTPS-доступ к нашему веб-сайту, который развертывается с помощью Elastic Beanstalk.

Вот шаги, которые мы предприняли:

  1. Полученосертификат от диспетчера сертификатов Amazon.

  2. В нашей среде приложений EB в разделе «Конфигурация» мы добавили еще одного прослушивателя к классическому балансировщику нагрузки.Параметр для этого нового прослушивателя таков:

    Port: 443  
    Protocol: HTTPS  
    Instance Port: 443  
    Instance Protocol: HTTPS  
    SSL certificate: (certificate that we created in step 1)  
    
  3. Поскольку при добавлении этого нового прослушивателя была создана другая группа безопасности с правилом входящих для 443, эта группа безопасности была добавлена ​​в экземпляр.

  4. Наконец, мы перешли на страницу «Балансировщики нагрузки», и для балансировщика нагрузки для этого приложения мы добавили еще одного прослушивателя со следующими настройками:

    Load Balancer Protocol: HTTPS  
    Load Balancer Port: 443  
    Instance Protocol: HTTPS  
    Instance Port: 443  
    Cipher: ELBSecurityPolicy-2016-08 (default)  
    SSL Certificate: (certificate that we created in step 1)  
    

Но мы по-прежнему не можем получить доступ к нашему веб-сайту через https.Есть идеи, что еще нужно сделать?

Еще один момент.На шаге # 4, если присутствует только 443 порт балансировщика нагрузки со следующими настройками:

HTTPS 443 HTTP 80 (cert)

, тогда веб-сайт доступен только через https, а не через http.

Таким образом, этот твик указывает, что с сертификатом проблем нет.

Чего нам не хватает в нашей конфигурации?

1 Ответ

0 голосов
/ 14 ноября 2018

Если вы назначаете сертификат слушателю в настройках EB, по умолчанию он назначается балансировщику нагрузки. Балансировщик нагрузки завершает HTTPS-соединение из Интернета, и связывается с экземплярами, используя HTTP (без шифрования). Поэтому вам необходимо открыть незашифрованный порт 80 для экземпляров из балансировщика нагрузки.

Если для ваших экземпляров требуется сквозное шифрование , вам необходимо настроить среду EB для прямой передачи HTTPS через балансировщик нагрузки:

.ebextensions / HTTPS-reencrypt-clb.config

Используйте этот файл конфигурации с классическим балансировщиком нагрузки. К тому же чтобы настроить балансировщик нагрузки, файл конфигурации также изменяется проверка работоспособности по умолчанию для использования порта 443 и HTTPS, чтобы гарантировать, что Балансировщик нагрузки может надежно подключиться.

option_settings:
  aws:elb:listener:443:
    InstancePort: 443
    InstanceProtocol: HTTPS
  aws:elasticbeanstalk:application:
    Application Healthcheck URL: HTTPS:443/

Обновите конфигурацию Группы безопасности для ваших экземпляров:

.ebextensions / HTTPS-экземпляра securitygroup.config

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

И настройте сертификат на экземплярах, которые могут быть самозаверяющим сертификатом:

.ebextensions / HTTPS-backendauth.config

option_settings:
  # Backend Encryption Policy
  aws:elb:policies:backendencryption:
    PublicKeyPolicyNames: backendkey
    InstancePorts:  443
  # Public Key Policy
  aws:elb:policies:backendkey:
    PublicKey: |
      -----BEGIN CERTIFICATE-----
      ################################################################
      ################################################################
      ################################################################
      ################################################################
      ################################################
      -----END CERTIFICATE-----

Более подробное изложение с опциями для различных типов балансировщиков нагрузки здесь .

...