Amazon S3 - hostname stimmt nicht mit dem server-Zertifikat (OpenSSL::SSL::SSLError) + Schienen
Amazon S3
mit rails
und fog
.
Versuchen precompile mein Vermögen mit rake assets:precompile
:
Nachricht:
[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)
So, es ist etwas mit OpenSSL
Was ich bereits versucht:
-
Ich habe bereits versucht in der config-Zertifikate in
application.rb
wie dieses: ohne Erfolg.AWS.config(:http_handler => AWS::Http::HTTPartyHandler.neue(:ssl_ca_path => "/etc/ssl/certs"))
-
ebenfalls installiert
openssl
auf Ubuntu 12.04 aus hier
Frage ist:
Wie Amazon S3 beschäftigt sich mit Zertifikaten
- Funktioniert es ohne SSL? Sind Sie mit jruby?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tatsächlich können Sie einen bucket-Namen mit einem Punkt. Alles, was Sie tun müssen ist, fügen Sie
:path_style => true
zu Ihremconfig.fog_credentials
.In deinem Beispiel würde es geben:
Fog.credentials = { path_style: true }
im asset sync-Initialisierer:region
AUCH gesetzt werden muss, wie in deinem Beispiel. Wenn keine region angegeben ist, ist AWS berechtigt, eine 301-Umleitung der unwirksamen bucket-name style-Adresse, mit Punkten (statt den Pfad-Stil-Adresse).TLDR; Lösung
Um Zugriff auf Ihr S3-bucket-URLs per httpS, müssen Sie entweder:
.
' und verwenden Sie den "Virtual Hosted–Stil" URL, wie z.B.https://simplebucketname.s3.amazonaws.com/myObjectKey
ODER
https://s3.amazonaws.com/mybucket.mydomain.com/myObjectKey
Mit
fog
können Sie die option::path_style => true
als diese Lösung erklärt.Das Problem & Erklärung
Den SSL-Zertifikat-Validierung problem ergibt sich aus der Verwendung dots '
.
' in den S3-Bucket-Name zusammen mit dem "Virtual Hosted–Style-Methode" URL-format.Den Amazon S3 Dokumentation Staaten, die es erlaubt, zwei Haupt-URL-Formate für den Zugriff auf S3-Buckets und Objekte:
So was passiert, ist dies:
https://myproject.de.s3-us-west-2.amazonaws.com/foo/bar
myproject.de.s3-us-west-2.amazonaws.com
*.amazonaws.net
serviert, während SSL-TLS-Aushandlung*.s3.amazonaws.com
gegenmyproject.de.s3-us-west-2.amazonaws.com
*.s3.amazonaws.com
hostname does not match the server certificate
wegen Ungültiger SSL-Cert-ZERTIFIZIERUNGSSTELLE die ValidierungDen Punkten S3-URL problem ist erwähnt rund um das internet wie in der Drupal Projekt, AWS-Foren, Python Boto Bibliothek und ist sehr gut erklärt in diesem blog-Beitrag mit dem Titel: Amazon S3 Gotcha: die Verwendung von Virtuellen Host-URLs mit HTTPS <-- ich empfehlen Lesen Sie diese für weitere Klärung.
Problem mit
naming
vonbucket
, in diesem Fall :myproject.de
, das format, das Amazon S3 services nicht als gültig betrachten.(es ist kein Punkt im Namen).Ich änderte den Namen der Eimer aus
myproject.de
inmyprojectde
und es funktioniert jetzt.Regeln für Eimer Benennung
Hinweis: wenn Sie Zugriff auf einen Eimer mit einem virtual hosted-Stil, Anfrage, zum Beispiel http://mybucket.s3.amazonaws.com über SSL, der bucket-name nicht mit einem Punkt (.).
weitere Referenz ist hier
myproject.de
ist eine gültige bucket-Namen ein. In einigen Fällen bucket-Namen müssen enthalten Perioden.(aus der Amazon-Docs docs.aws.amazon.com/AmazonS3/latest/dev/...): 'In diesem Schritt, Sie werden unterzeichnen, in der Amazon S3-Konsole mit Ihrem AWS-Konto-Anmeldeinformationen und erstellen Sie die folgenden zwei Eimer: example.com & http://www.example.com'