Невозможно принудительно установить HTTPS для веб-сайта с ASP.NET в Elastic Beanstalk AWS (с классическим балансировщиком нагрузки) - PullRequest
0 голосов
/ 01 июля 2018

Итак, я наконец-то смог успешно создать веб-сайт https. Это просто запуск шаблона веб-проекта ASP.NET. У меня есть сертификат, и он добавляется в ELB (Elastic Load Balancer - classic) в AWS. Моя среда работает так, что я могу перейти к https://www.mvc.cloudy -skies.org и она безопасна. Это потрясающе! Однако остаются две проблемы:

1 - вы все равно можете просто перейти на http: //, и это работает. Не идеально. 2 - У меня есть аутентификация Azure AD через промежуточное ПО OWIN. Это прекрасно работает, но, несмотря на указание HTTPS в URL-адресе для перенаправления после входа, я перенаправлен обратно на HTTP-версию сайта.

Может кто-нибудь помочь здесь, пожалуйста? Я в недоумении. Вот как у меня настроены слушатели в среде Elastic Beanstalk (Load Balancer)

enter image description here Я попытался добавить перенаправления в Web.Config (например, *

).
<!--<rewrite>
<rules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
    <add input="{REMOTE_HOST}" pattern="localhost" negate="true" />
    <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" />
    <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>-->

Однако это приводит к сбою развертывания Elastic Beanstalk при обновлении из-за сбоя проверки работоспособности. Я даже пытался создать базовую HTML-страницу в корне решения и использовать ее для проверки работоспособности, но она все равно не работает. Что-то с указанием перенаправления в web.config не очень хорошо.

Конечно, это действительно просто, чтобы заставить пользователя соответствовать HTTPS?

1 Ответ

0 голосов
/ 01 июля 2018

Лучше всего добавить дистрибутив CloudFront с установленным параметром «Перенаправить HTTP на HTTPS». CloudFront завершает сеанс TLS вашим сертификатом, а затем общается с ELB вашего Elastic Beanstalk по протоколу http, хотя общедоступные пользователи Интернета автоматически перенаправляются на конечную точку HTTPS.

Этого можно достичь, выполнив следующие действия:

  1. Перейдите в CloudFront> Создать рассылку> Интернет
  2. Выберите источник ELB
  3. Выбор политики просмотра: перенаправить HTTP на HTTPS
  4. Выбрать кэш на основе заголовков: все (это позволяет кэшировать для каждого пользователя, хотя вы можете захотеть улучшить это позже)
  5. Кэширование объектов: настройка (отключает кэширование по умолчанию, просмотрите позже для оптимизации)
  6. Введите минимальное, максимальное и значение по умолчанию TTL как 0
  7. Cookies и QueryString to All
  8. Выберите подходящий ценовой класс, меньше регионов дешевле.
  9. Альтернативные доменные имена: добавьте все доменные имена, которые вы хотите направить на этот дистрибутив
  10. Пользовательский сертификат SSL (это должен быть сертификат в us-east-1 со всеми доменными именами, введенными выше в качестве альтернативных имен.
  11. После создания рассылки вам необходимо обновить DNS CNAME, чтобы он указывал на указанный вами адрес ___.cloudfront.net.
...