Как перенаправить HTTP на HTTPS, используя S3, Cloudfront и Route 53, используя голые домены?

У меня есть домен (example.com) с поддержкой SSL. У меня возникла проблема при попытке перенаправить запрос из www.example.comhttps://example.com.

Ошибка при попытке доступа к www.example.com:

Запрос не может быть удовлетворен.

Плохой запрос.

Эти URL-адреса работают (перенаправляются на https://example.com)

  • example.com
  • http://example.com
  • https://example.com

http://www.example.com показывает, что веб-сайт не является безопасным, то есть он не использует сертификат.


S3

Я создал 2 S3 buckets example.com и www.example.com(соответственно A и B). Ведро Статический хостинг веб-сайтов позволяет размещать веб-сайт, указывая на example.com. Bucket B Статический хостинг веб-сайтов перенаправляет все запросы на example.com.


CloudFront

У меня есть дистрибутив с двумя альтернативными именами доменов (CNAME), example.com и www.example.com. У меня также есть сертификат SSL на этом dist.


Маршрут 53

У меня есть зона с двумя алиасами типа A, example.com и www.example.com, которые указывают на распространение Cloudfront (XX.cloudfront.net)

Ответ 1

Вам нужно, чтобы ваш контент распространялся Cloudfront. Таким образом, содержимое из вашего сегмента S3 будет проходить через Cloudfront, прежде чем его обслужат. Вы можете найти информацию о том, как это сделать, здесь: Использование CloudFront с Amazon S3

Затем, во второй части, чтобы все ваши данные обслуживались с помощью https, выполните следующие действия: Перейдите в CloudFront> Ваш дистрибутив> вкладка поведения> выберите первый элемент списка и нажмите "Изменить". Тогда вы сможете увидеть опцию для перенаправления http на https.

enter image description here

Ответ 2

Я удивлен, что вам повезло с конечными точками SSL, так как я понимаю, что правильная настройка - отключить статический хостинг веб-сайтов в корзинах s3 и убедиться, что весь трафик к ним проходит через Cloudfront. Cloudfront будет обрабатывать сам SSL, включая перенаправления с HTTP на HTTPS, при условии, что вы настроили свой источник Cloudfront, чтобы разрешить доступ HTTPS только через параметр Origin Protocol Policy.

Для настройки конфигурации Cloudfront-to-s3: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html

Чтобы ограничить доступ к s3 только Cloudfront: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html