Подтвердить что ты не робот

Amazon S3 - имя хоста не совпадает с сертификатом сервера (OpenSSL:: SSL:: SSLError) + рельсы

Amazon S3, используя rails и fog. Попытка прекомпилировать мои ресурсы с помощью rake assets:precompile:

сообщение:

[WARNING] fog: followed redirect to myproject.de.s3-us-west-2.amazonaws.com, connecting to the matching region will be more performant
rake aborted!
hostname does not match the server certificate (OpenSSL::SSL::SSLError)

Итак, есть что-то с OpenSSL

Я уже пробовал:

  • Я уже пытался настроить сертификаты в application.rb следующим образом: без успеха.

    AWS.config(: http_handler = > AWS:: Http: HTTPartyHandler.new(: ssl_ca_path = > "/etc/ssl/certs" ))

  • также установил openssl на Ubuntu 12.04 из здесь

Вопрос: Как Amazon S3 имеет дело с сертификатами

4b9b3361

Ответ 1

На самом деле вы можете использовать имя ведра с точкой. Все, что вам нужно сделать, это добавить :path_style => true к вашему config.fog_credentials.

В вашем примере это даст:

config.fog_credentials = {
   :provider              => 'AWS',
   :aws_access_key_id     => ENV['S3_KEY'],
   :aws_secret_access_key => ENV['S3_SECRET'],
   :region                => ENV['S3_REGION'],
   :path_style            => true
}

config.fog_directory    = "myproject.de"

Ответ 2

TL;DR; Решение

Чтобы получить доступ к вашим URL-адресам S3 с помощью http S, вам необходимо либо:

  • Выберите имя ведра, чтобы оно не содержало периодов "." и использовало URL Virtual Hosted Style, как
    https://simplebucketname.s3.amazonaws.com/myObjectKey
    ИЛИ
  • Используйте Path Style "URL-форму, которая определяет имя ведра отдельно, после имени хоста, например:
    https://s3.amazonaws.com/mybucket.mydomain.com/myObjectKey

С помощью fog вы можете установить параметр: :path_style => true в качестве данного решения.

Проблема и пояснение

Проблема проверки SSL-сертификата возникает из-за использования точек . 'в имени байта S3 вместе с форматом URL-адреса "Метод виртуального хоста".

Документация Amazon S3 утверждает, что он позволяет использовать два основных формата URL для доступа к кодам и объектам S3:

Итак, что происходит:

  • Fog пытается запросить URL-адрес вашего ведра, например: https://myproject.de.s3-us-west-2.amazonaws.com/foo/bar
  • Имя хоста в запросе myproject.de.s3-us-west-2.amazonaws.com
  • Сертификат SSL для *.amazonaws.net предоставляется во время переговоров по SSL TLS
  • Fog пытается проверить сертификаты сертификатов SSL и CA
  • Туман пытается сопоставить Cert CN *.s3.amazonaws.com с myproject.de.s3-us-west-2.amazonaws.com
  • В соответствии с Правилами сопоставления шаблонов сертификата CN в RFC 2818, -subdomain не соответствует групповому символу CN: *.s3.amazonaws.com
  • Не удалось выполнить соединение с hostname does not match the server certificate из-за неверной проверки сертификата CA Certification

Точки в проблеме URL-адреса S3 упоминаются в Интернете, например, в Drupal Project, Форумы AWS, Python Boto Library и очень хорошо объясняется в этом сообщении в блоге: Amazon S3 Gotcha: использование URL-адресов виртуальных хостов с HTTPS < - Я настоятельно рекомендую прочитать это для дальнейшего уточнения.

Ответ 3

Проблема заключается в naming of bucket, в данном случае: myproject.de, который является форматом, который службы Amazon S3 не считают действительными (нет точки в имени).

Я изменил имя ведра с myproject.de на myprojectde, и теперь он работает.

Правила для присвоения имен в буклете

Во всех регионах, кроме региона стандартного стандарта США, имя ведра должно соблюдать следующие правила. Это приводит к совместимости с DNS имя ковша.

Названия ковша должны быть не менее 3 и не более 63 символов

Имя байта должно быть серией из одной или нескольких меток, разделенных период (.), где каждая метка:

Необходимо начинать с строчной буквы или числа

Должен заканчиваться строчной буквой или числом

Может содержать строчные буквы, цифры и тире

Имена bucket не должны быть отформатированы как IP-адрес (например, 192.168.5.4)

Ниже приведены примеры допустимых имен ведра:

myawsbucket

my.aws.bucket

myawsbucket.1

Ниже приведены примеры недопустимых имен ведра:

Недопустимое имя элемента в виде ведра .myawsbucket Имя ведра не может начинаться с Период (.). myawsbucket. Название ведра не может заканчиваться периодом (.). my..examplebucket Между метками может быть только один период

Обратите внимание, что если вы хотите получить доступ к ведру с помощью запроса виртуального хостинга, например http://mybucket.s3.amazonaws.com через SSL, имя ведра не может включают период (.).

дополнительная ссылка здесь