HTTPS Elastic Beanstalk не пользовательский домен

Я развернул свое приложение Django на Elastic Beanstalk. Это дает мне URL, как это

http://<my-environment>.us-west-2.elasticbeanstalk.com 

Есть ли простой способ иметь тот же URL с HTTPS без необходимости покупать сертификат?

3 ответа

Решение

Я не согласен с принятым ответом: Да, есть одобренные Amazon способы загрузки сертификата (бесплатный самоподписанный сертификат) с доменом по умолчанию, который предоставляет Elastic Beanstalk. Я только что выполнил эту задачу с последним приложением Django по умолчанию в качестве доказательства концепции (Django ver 2.1 и Python ver 3.6). Мое развертывание было выполнено на компьютере с Windows 10 с последними версиями AWS.

На начальном этапе тестирования и валидации вашего приложения вы обычно выполняете такую ​​процедуру. Чтобы обеспечить выполнимость, не выходя на покупку сертификата для вашего окончательного домена. У вас есть приложение, и вы хотите посмотреть, будет ли оно безопасно развернуто на Elastic Beanstalk. Амазонка рекомендует это из принятых документов связанных ссылок:

Для разработки и тестирования вы можете самостоятельно создать и подписать сертификат с помощью инструментов с открытым исходным кодом. Самозаверяющие сертификаты бесплатны и просты в создании, но их нельзя использовать для расшифровки интерфейса на общедоступных сайтах. Если вы попытаетесь использовать самозаверяющий сертификат для подключения HTTPS к клиенту, браузер пользователя отобразит сообщение об ошибке, указывающее, что ваш веб-сайт небезопасен. Однако вы можете использовать самозаверяющий сертификат для защиты внутренних подключений без проблем.

В качестве доказательства концепции, которую я покажу ниже, используется стандартная среда Elastic Beanstalk Python 3.6, которая завершает HTTPS на балансировщике нагрузки. (Примечание: самозаверяющие сертификаты могут также использоваться для защиты трафика между балансировщиком нагрузки и экземпляром, но мой ответ не охватывает эту тему)

Следуй этим шагам:

  1. Установите приложение Django в Elastic Beanstalk, используя интерфейс командной строки (EB CLI). Я следую инструкциям в следующем руководстве: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html. На момент написания этой статьи версия Django, которую я взял, была 2.1, а версия Python, которую я выбрал для EB, была 3.6. Просто следуйте инструкциям до "Обновление приложения". Запишите и сохраните возвращенное после запуска CNAME (имя домена EB) eb status потому что вам это понадобится на моем шаге 2.

  2. Установите OpenSSL на свой компьютер для разработки. Затем выполните следующие шаги для создания самозаверяющего сертификата с openSSL: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html. Вам не нужно делать последний шаг на этой странице. Вам понадобится содержимое server.crt а также privatekey.cer файлы для следующего шага. В самом низу этого ответа находятся поддельные значения, которые я использовал для сертификата. Это не имеет значения, за исключением доменного имени.

  3. Перейдите в диспетчер сертификации в консоли AWS. Есть большая синяя кнопка, Сертификат импорта. Нажмите это. Открой server.crt файл с вашим любимым текстовым редактором и вставьте содержимое в верхнем поле с надписью: тело сертификата. Затем откройте privatekey.cer файл с вашим любимым текстовым редактором и вставьте содержимое во втором поле с надписью: Сертификат закрытого ключа. Нажмите "Просмотр и импорт" и убедитесь, что все в порядке.

  4. Последний шаг - включить HTTPS и завершить его на вашем балансировщике нагрузки. Выполните действия, описанные в этом руководстве для Amazon: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-elb.html. Обратите внимание, что на шаге 5 данного руководства вы захотите выполнить шаги для Classic Load Balancer. Выберите сертификат, который вы загрузили в диспетчер сертификатов на шаге 3 этого ответа.

После того, как вы подадите заявку - ваш сайт будет работать по протоколу HTTPS с самозаверяющим сертификатом. Ниже приведен мой концептуальный сайт, который является просто приложением Django по умолчанию:

При нажатии на сертификат отображаются детали:

Надеюсь, что это поможет вам на пути к проверке приложения Django в AWS. Пожалуйста, не запускайте самоподписанный сертификат для вашей рабочей среды.

"Есть ли простой способ иметь тот же URL"

Простой ответ: Нет.

Поскольку вы не являетесь владельцем доменного имени asticbeanstalk.com, вы не можете назначить действительный сертификат SSL. Даже если вы создадите самозаверяющий сертификат самостоятельно, он будет ненадежным, и браузеры покажут ошибку.

Вы можете предоставлять только действительные сертификаты SSL для доменов, над которыми у вас есть "контроль". т.е. докажи свое право собственности. Таким образом, чтобы действующий HTTPS работал и имел действующий сертификат, необходимо зарегистрировать доменное имя.

Источник: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html

Вам понадобится сертификат. Вы можете загрузить свой собственный или просто использовать AWS ACM, где сертификаты бесплатны ( https://docs.aws.amazon.com/acm/latest/userguide/acm-billing.html).

  1. Запросите сертификат в AWS ACM
  2. Добавьте файл конфигурации в .ebextensions каталог с LoadBalancer ресурс и набор SSLCertificateId на ARN из сертификата в (1):

    Resources:
    AWSEBLoadBalancer:
        Type: "AWS::ElasticLoadBalancing::LoadBalancer"
    Properties:
        Listeners: [{
            "LoadBalancerPort": "443",
            "SSLCertificateId": "$CERT_ARN",
            "Protocol": "HTTPS" }]
    
Другие вопросы по тегам