Как настроить SSL для корзины Amazon S3

142

Я использую ведро Amazon S3 для загрузки и выгрузки данных с помощью моего приложения .NET. Теперь мой вопрос: я хочу получить доступ к своей корзине S3, используя SSL. Возможно ли реализовать SSL для корзины Amazon s3?

Сям Кумар
источник

Ответы:

151

Вы можете получить доступ к своим файлам через SSL следующим образом:

https://s3.amazonaws.com/bucket_name/images/logo.gif

Если вы используете собственный домен для своей корзины, вы можете использовать S3 и CloudFront вместе со своим собственным сертификатом SSL (или создать бесплатный с помощью диспетчера сертификатов Amazon): http://aws.amazon.com/cloudfront/custom-ssl- домены /

reach4thelasers
источник
42
Это не совсем так. Вы можете использовать имена сегментов без точек: this-is-my-awesome-bucket.s3.amazonaws.com Amazon имеет сертификат подстановочного знака. Поскольку вы не можете использовать точки, у вас не может быть домена CNAME, указывающего на ваш контейнер.
Docunext
4
остерегайтесь имен ковшей, содержащих точки! SSL не будет работать на устройствах iOS, но будет отлично работать в Chrome. См stackoverflow.com/questions/3048236/...
Simon_Weaver
1
Amazon CloudFront сделает это за вас.
Грег
3
Чтобы иметь точечные имена сегментов (чтобы вы могли использовать псевдоним Route 53) и вы хотите поместить объекты через REST, убедитесь, что имя хоста соответствует региону. Например, мое ведро находится в us-west-2так, имя хоста на самом деле в s3-us-west-2.amazonaws.comпротивном случае вы получите ошибку.
noetix
1
без облачного фронта мы можем достичь этого?
Арун Кумар
28

Сертификаты SSL для пользовательских доменов были добавлены сегодня за 600 долларов США / сертификат / месяц. Подпишитесь на ваше приглашение ниже: http://aws.amazon.com/cloudfront/custom-ssl-domains/

Обновление : сертификаты SNI, предоставляемые клиентом , теперь доступны без дополнительной оплаты. Гораздо дешевле, чем $ 600 / мес, и с XP почти убил, это должно работать хорошо для большинства случаев использования.

@skalee AWS имеет механизм для достижения того, о чем просит автор: «внедрить SSL для корзины Amazon s3», он называется CloudFront. Я читаю «внедрить» как «использовать мои сертификаты SSL», а не «просто» поставить S на URL-адресе HTTP, который, я уверен, ОП мог бы предположить.

Поскольку CloudFront стоит точно так же, как S3 ($ 0,12 / ГБ), но имеет массу дополнительных функций, связанных с SSL, и позволяет добавлять собственный сертификат SNI без дополнительных затрат, это очевидное решение для «внедрения SSL» в вашем домене.

Джозеф Ласт
источник
64
CloudFront не является S3.
Скали
6
@skalee Правильно, но если вы хотите получить к нему доступ через домен с настраиваемыми сертификатами SSL, в качестве запросов OP вы можете настроить настраиваемые сертификаты CNAME SSL таким образом и получить к нему доступ через CF.
Джозеф Люст
2
В настоящее время я установил два CNAME: static-s3 и static-cf, первый из которых направлен прямо на мой S3, второй - на CF. Первый не может поддерживать SSL, второй может, но это CF, а не S3, как указывает скали. Это лучшее, что я думаю, мы можем сделать сейчас.
Опасность
2
WOW Я думаю, они должны как-то компенсировать все более и более дешевую стоимость хранения. по крайней мере, это пропорционально. если вы используете свой SSL-сертификат только на 1 час в месяц, это всего $ 20 ;-)
Simon_Weaver
1
@ Elegant.Scripting, если у вас есть выделенный сертификат SSL (не сертификат SNI), то для этого компьютера требуется выделенный IP-адрес, что требует затрат. предположительно, вам нужен выделенный IP-адрес для каждого места в мире, где S3 хранит ваши данные. Так что складывается. Но я думаю, что это в основном то, что пост-людям это не нужно, и они могут поднять цену для тех, кто в этом нуждается. Если вам не нужно поддерживать IE6, тогда вы должны быть в порядке с сертификатом SNI под CloudFront.
Simon_Weaver
11

Я обнаружил, что вы можете легко сделать это через сервис Cloud Flare.

Установите ведро, включите веб-хостинг на нем и укажите нужный CNAME на эту конечную точку с помощью Cloudflare ... и, конечно, заплатите за обслуживание ... но 5 - 20 долларов США против 600 долларов - намного проще для желудка.

Полная информация здесь: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/

Ральф Вугц
источник
1
Попробуйте мой гид здесь: engaging.io/...
Ральф Vugts
3

Если вам это действительно нужно, подумайте о перенаправлениях.

Например, по запросу assets.my-domain.example.com/path/to/fileвы можете выполнить перенаправление 301 или 302 на my-bucket-name.s3.amazonaws.com/path/to/fileили s3.amazonaws.com/my-bucket-name/path/to/file(пожалуйста, помните, что в первом случае my-bucket-nameне может быть никаких точек, иначе это не будет соответствовать *.s3.amazonaws.com, s3.amazonaws.comуказанному в сертификате S3).

Не проверено, но я верю, что это сработает. Однако я вижу несколько ошибок.

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

Во-вторых, у вас могут быть URL-адреса с вашим доменным именем в исходном коде страницы, но когда, например, пользователь открывает рис в отдельной вкладке, то в адресной строке отобразится целевой URL-адрес.

skalee
источник
2
Я не уверен, но я думаю, что это может вызвать проблемы с CORS.
xdhmoore
3

С S3 это невозможно сделать напрямую, но вы можете создать дистрибутив Cloud Front из своего ведра. Затем перейдите к диспетчеру сертификатов и запросите сертификат. Амазонка дает их бесплатно. Если вы успешно подтвердили сертификацию, назначьте ее в свой дистрибутив Cloud Front. Также не забудьте установить правило перенаправления http на https.

Я размещаю несколько статических веб-сайтов на Amazon S3, например, мой личный веб-сайт, которому я назначил сертификат SSL, поскольку они имеют дистрибутив Cloud Front.

Мика Куджапелто
источник
а как вы присвоили доменное имя?
netshark1000
Сначала зайдите в диспетчер сертификатов и запросите новый сертификат. Добавьте туда свой домен и при необходимости добавьте туда субдомены. Ничего страшного в том, чтобы размещать там субдомены, так что можно просто поместить туда example.com и * .example.com.
Мика Куджапелто
0

Как упоминалось ранее, вы не можете создавать бесплатные сертификаты для блоков S3. Однако вы можете создать дистрибутив Cloud Front, а затем назначить сертификат для Cloud Front. Вы запрашиваете сертификат для своего домена, а затем просто назначаете его для распространения Cloud Front в настройках Cloud Front. Я использовал этот метод для обслуживания статических веб-сайтов через SSL, а также для обслуживания статических файлов.

Для статического создания веб-сайтов Amazon - идеальное место. Получить статический сайт с SSL действительно возможно.

Мика Куджапелто
источник
2
Для всех, кто попадает сюда с помощью Google: не забудьте создать свой сертификат AWS (также) в регионе Северная Вирджиния. В противном случае вы не сможете выбрать его в своем дистрибутиве CF
KLoozen