HTTPS для статического веб-сайта Amazon S3 [закрыто]

90

Я хочу разместить статический веб-сайт только с HTTPS с помощью Amazon S3 и CloudFront. Вот что я сделал до сих пор:

  1. Настройте ведро S3 для статического хостинга веб-сайтов и поместите в него файлы моего веб-сайта
  2. Создал раздачу CloudFront и указал его на корзину S3
  3. Добавлена ​​запись CNAME на серверах имен моего домена для wwwсубдомена, указывающего на корзину CloudFront.

Пока все хорошо - я могу получить доступ к своему веб-сайту, используя www.example.comадрес. Однако я хочу, чтобы сайт был доступен только через HTTPS, для чего я купил SSL-сертификат у GoDaddy.

Теперь вопрос:

  1. Есть ли способ установить этот сторонний SSL-сертификат на мой веб-сайт, размещенный на S3?
  2. Есть ли способ иметь автоматическое перенаправление с http на https при этой настройке?
Jamix
источник
1
Могу ли я сделать это бесплатно?
Пиюш С. Ванаре
Вы можете получить сертификат SSL на Amazon бесплатно, и он будет автоматически продлен. aws.amazon.com/certificate-manager Прокрутите вниз до значка со знаком доллара :)
Costa
1
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он не имеет отношения к программированию
Зак
1
Почему бы не переместить вопрос в ServerFault?
nu everest
@nueverest Потому что он слишком стар для миграции.
gre_gor

Ответы:

63

Да, с сегодняшнего дня это можно сделать бесплатно.

Теперь вы можете использовать HTTPS с CNAME в CloudFront, так как теперь он поддерживает настраиваемые сертификаты SSL с использованием индикации имени сервера (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Мне удалось без особых проблем настроить бесплатный сертификат StartSSL класса 1 для моего распределенного статического сайта CloudFront на S3 (см. Ошибка CloudFront при обслуживании через HTTPS с использованием SNI ).

викихен
источник
7
Подробное руководство: bryce.fisher-fleig.org/blog/…
elado
3
Отзыв: гид Брайс Фишер был очень хорош.
tresf
6
Здесь есть тонкость. Вы можете использовать HTTPS для корзины S3, если она не настроена для хостинга веб-сайтов . См. Примечание, в котором говорится: «Конечные точки веб-сайта не поддерживают https».
skeller88
6
Хорошо, чтобы обойти "тонкость" и описать простым английским языком, вот мой шанс. Ведро S3 со статическим содержимым веб-страницы (html) можно превратить в веб-сайт с помощью нескольких щелчков мышью. Этот веб-сайт может использовать только http. Если вам нужен https, вы должны использовать сервис AWS Cloudfront и настроить его для SNI, чтобы получить https бесплатно. (Некоторые очень старые или нестандартные браузеры не поддерживают SNI.) HTML и другие ресурсы можно хранить на S3 с небольшими затратами. Кроме того, если вы получили доменное имя от AWS, вы должны использовать их сервис Elastic Load Balance. Плата составляет несколько центов за гиг.
Mike_Laird
5
Я нахожу удивительным, что этот ответ получил правильный ответ, когда он просто не отвечает на вопрос: как указано @ skeller88, s3 https не работает для хостинга веб-сайтов.
abbood
36

21 января 2016 года AWS запустила AWS Certificate Manager - бесплатный сервис, позволяющий выдавать SSL-сертификат для использования с Elastic Load Balancer и Cloud Front (а также с S3).

Вы можете узнать больше по адресу: https://aws.amazon.com/certificate-manager/

И вы можете проверить, как развернуть свой веб-сайт S3 + Cloudfront с бесплатным SSL от AWS, по адресу: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -AW /

барболо
источник
1
Я только что настроил это для своего сайта сегодня утром. Это статический сайт, размещенный в s3. Это было очень просто. Я просто пошел к диспетчеру acm, запросил сертификат, поработал с настройками электронной почты в течение нескольких часов (в итоге сделал свою информацию WHOIS общедоступной, пока я ждал письма с подтверждением), а затем настроил route53, чтобы указать на конечную точку облачного интерфейса . Очень рад, что нашел этот комментарий.
параноик
1
@paranoid Могу ли я разместить свой сайт s3 как https-only?
Пиюш С. Ванаре
1
@ PiyushS.Wanare да, можно!
barbolo
Поместите ссылку HTTPS в запись CNAME в Route53.
Costa
@paranoid не уверен, что вы имеете в виду под "конечной точкой облачного интерфейса" .. откуда я могу получить эту информацию?
abbood
17

На сегодняшний день Cloudfront предлагает собственный SSL: http://aws.amazon.com/cloudfront/pricing/

Имейте в виду, они берут 600 долларов в месяц. Подробнее по ссылке выше.

Кристиан Фаццини
источник
7
600 / месяц ......
Pacerier
11
Вы платите 600 долларов только за выделенный IP-адрес. Если вы счастливы использовать SNI (который не поддерживается старыми браузерами), никаких дополнительных сборов не взимается
Мартин ОКоннор,
2
Если вы хотите поддерживать только современные браузеры (через SNI), это теперь намного дешевле: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Эндрю Ньюдигейт
Теперь это БЕСПЛАТНО! aws.amazon.com/certificate-manager Прокрутите вниз до значка со знаком доллара. Плюс я думаю, что они продлеваются автоматически. И настроить так же просто, как ввести желаемые домены в сертификате и щелкнуть ссылку для подтверждения в следующем электронном письме.
Costa
3

Мне пришлось загрузить простой веб-сайт React на S3. Как описывает Барболо, вам нужен сертификат для доступа к сайту через SSL. Если статический сайт, который вы хотите развернуть, достаточно прост, вы можете:

  1. Загрузите в S3.
  2. Вы не выберите «Static Хостинг веб - сайтов»
  3. Преобразуйте все относительные ссылки (в CSS, JS и т. Д.) В абсолютные ссылки.

например, из /css/media.css вы должны преобразовать его в https://s3-region-amazonaws.com/bucket-name/css/media.css (мне пришлось изменить только ссылки в index.html)

  1. Сделайте общедоступным только содержимое корзины.

Это оно. Вы можете получить доступ к файлу индекса через https.

Простой сайт - это сайт с основным файлом index.html, который указывает на некоторые страницы css и js.

алексопулос7
источник
Потрясающе. Спасибо
user1874634
Если ваше приложение нацелено на производство, это плохая идея.
Себастьен
Себастьен, пожалуйста, расскажите нам подробнее, почему это плохая идея. Мы предоставляем публичный доступ на чтение к объектам, а не к ведру.
alexopoulos7,
Это хороший и самый простой способ, но помните, что для каждого файла в вашем приложении запрос будет перемещаться в Интернете, что снизит производительность вашего приложения. Использование CloudFront - лучшая идея в этом случае.
Nitesh B.
@ NiteshB.CloudFront - задница, когда вам нужно часто обновлять объекты S3,
Дастин Сан
0

В дополнение к ответу @wikichen.

От: https://aws.amazon.com/cloudfront/custom-ssl-domains/

По умолчанию вы можете доставлять свой контент зрителям через HTTPS, используя имя вашего домена распространения CloudFront в своих URL-адресах, например https://dxxxxx.cloudfront.net/image.jpg .

Если вы хотите доставлять свой контент через HTTPS, используя собственное доменное имя и собственный сертификат SSL, вы можете использовать одну из наших функций поддержки настраиваемых сертификатов SSL.

Джейсон
источник