2013-08-20 9 views
19

Amazon S3, przy użyciu rails i fog. Próbując precompile moje aktywa z rake assets:precompile:Amazon S3 - nazwa hosta nie jest zgodna z certyfikatem serwera (OpenSSL :: SSL :: SSLError) + szyny

wiadomość:

[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) 

Więc jest coś z OpenSSL

już co starałem:

  1. Próbowałem już config certyfikaty w application.rb w następujący sposób: bez powodzenia.

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

  2. również zainstalowany openssl na Ubuntu 12.04 z here

Pytanie brzmi: Jak okazje Amazon S3 z certyfikatami

+0

Czy działa bez SSL? Czy używasz jruby? – archie

Odpowiedz

-4

problem jest z naming z bucket, w tym przypadku: myproject.de, który jest formatem, który usługi Amazon S3 nie uznają za poprawny (bez kropki w nazwie).

Zmieniłem nazwę wiadra z myproject.de na myprojectde i działa teraz.

Zasady Bucket nazewnictwa

we wszystkich regionach z wyjątkiem regionu US standardowa nazwa wiadro musi zgodne z następującymi zasadami. Wynikają one z nazwy zasobu zgodnej z DNS .

nazwy łyżki musi wynosić co najmniej 3 i nie więcej niż 63 znaków

nazwa łyżki może być seria jednego lub więcej etykiet oddzielonych przez okres , w którym każda etykieta().:

musi zaczynać się od małej litery lub liczby

musi kończyć się z małej litery lub liczby

Mogą zawierać małe litery, cyfry i myślniki

nazwy Bucket nie musi być sformatowany jako adres IP (np 192.168.5.4)

Poniżej przedstawiono przykłady poprawnych nazw wieloczynnościowy:

myawsbucket

my.aws.bucket

myawsbucket.1

Poniżej przedstawiono przykłady nieprawidłowych nazw wieloczynnościowy: (.) ​​

Nieprawidłowa nazwa łyżki Komentarz .myawsbucket nazwa Bucket nie może zaczynać się okres. myawsbucket. Nazwa segmentu nie może kończyć się kropką (.). my..examplebucket Nie może być tylko jeden okres pomiędzy etykietami

Uwaga Jeżeli chcesz uzyskać dostęp do wiadra za pomocą żądania wirtualny gospodarzem stylu, na przykład http://mybucket.s3.amazonaws.com over SSL, nazwa wiadro nie może zawierać kropkę (.).

dalsze odniesienia jest here

+5

To nie jest poprawne. Nazwa wiadra 'myproject.de' jest poprawną nazwą wiadra. W niektórych przypadkach nazwy zasobników muszą zawierać kropki. (Z Amazon Docs http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html): "W tym kroku , zalogujesz się do konsoli Amazon S3 z danymi uwierzytelniającymi konta AWS i utworzysz następujące dwa segmenty: example.com i www.example.com ' – Undistraction

22

Właściwie można użyć nazwy wiadro z kropką. Jedyne co musisz zrobić, to dodać :path_style => true do swojego config.fog_credentials.

W przykładzie, to podać:

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" 
+3

Dzięki, że: path_style działało jak czar! –

+0

lub dodaj 'Fog.credentials = {path_style: true}' w inicjalizatorze synchronizacji zasobów –

10

TLDR; Rozwiązanie

W celu uzyskania dostępu do adresów URL S3 kubełkowe poprzez http S, trzeba będzie albo:

  • Wybierz nazwę wiadra tak, że zawiera ona żadnych okresów „.” i użyj „Virtual Hosted–Style” URL, takich jak
    https://simplebucketname.s3.amazonaws.com/myObjectKey
    LUB
  • Użyj „Path Style” formę URL określający nazwę wiadro oddzielnie, po nazwie hosta, na przykład:
    https://s3.amazonaws.com/mybucket.mydomain.com/myObjectKey

Z fog, można ustawić opcję: :path_style => true jak this solution wyjaśnione.

Problem & Wyjaśnienie

Problem Certyfikat SSL Validation powstaje z wykorzystaniem kropek „.” w S3 Wiadro Nazwa wraz z „wirtualnych znajdujących-Style Metoda” formacie URL.

Amazon S3 Documentation stwierdza, że ​​pozwala ona dwa główne formaty URL dostępu S3 Wiadra i obiektów:

  1. Path Style Method
  2. Virtual Hosted–Style Method

Więc co się dzieje, jest to:

  1. Fog próbuje zażądać adresu URL do twojego buc ket jak: https://myproject.de.s3-us-west-2.amazonaws.com/foo/bar
  2. nazwę hosta w żądaniu jest myproject.de.s3-us-west-2.amazonaws.com
  3. SSL Cert dla *.amazonaws.net serwowane podczas SSL TLS Negocjacji
  4. mgła dociera do sprawdzania SSL cert & CA Cert łańcuch
  5. mgła próbuje dopasować Certa CN *.s3.amazonaws.com przeciwko myproject.de.s3-us-west-2.amazonaws.com
  6. Według Certificate CN wildcard matching rules w RFC 2818, sub-subdomeny nie pasuje wieloznaczny CN: *.s3.amazonaws.com
  7. Połączenie nie powiedzie się z powodu nieprawidłowej hostname does not match the server certificate SSL CA Cert Validation

Kropki w S3 problemu URL jest wymieniony around the internet takie jak w Drupal Project, AWS Forums, Python Boto Library i jest bardzo dobrze wyjaśnione w tym poście zatytułowanym: Amazon S3 Gotcha: Using Virtual Host URLs with HTTPS < - Gorąco polecam przeczytanie tego w celu uzyskania dalszych wyjaśnień.

Powiązane problemy