2013-08-20 39 views
19

Amazon S3, sử dụng railsfog. Đang cố gắng để tiền biên dịch tài sản của tôi với rake assets:precompile:Amazon S3 - tên máy chủ không khớp với chứng chỉ máy chủ (OpenSSL :: SSL :: SSLError) + đường ray

nhắn:

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

Vì vậy, có cái gì đó với OpenSSL

Những gì tôi cố gắng đã:

  1. Tôi đã cố gắng để cấu hình giấy chứng nhận trong application.rb như thế này: không thành công.

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

  2. cũng cài đặt openssl trên Ubuntu 12.04 từ here

Câu hỏi là: Làm thế nào giao dịch Amazon S3 với giấy chứng nhận

+0

Có hoạt động không có SSL không? Bạn đang sử dụng jruby? – archie

Trả lời

-4

vấn đề là với naming của bucket, trong trường hợp này: myproject.de, là định dạng mà dịch vụ Amazon S3 không coi là hợp lệ. (Không có dấu chấm trong tên).

Tôi đã thay đổi tên của thùng từ myproject.de thành myprojectde và hiện hoạt động.

Rules cho Bucket Naming

Trong tất cả các vùng, ngoại trừ đối với khu vực Tiêu chuẩn Mỹ một tên xô phải tuân thủ các quy tắc sau đây. Các kết quả này tuân theo tên nhóm tuân thủ DNS .

tên Bucket phải có ít nhất 3 và không nhiều hơn 63 ký tự dài

tên Bucket phải là một loạt các một hoặc nhiều nhãn cách nhau bởi một khoảng thời gian , trong đó mỗi nhãn (.):

phải bắt đầu với một chữ cái thường hoặc một số

phải kết thúc với một chữ cái thường hoặc một số

có thể chứa các chữ thường, chữ số và dấu gạch ngang

tên Bucket phải không được định dạng như một địa chỉ IP (ví dụ: 192.168.5.4)

Sau đây là những ví dụ về tên xô hợp lệ:

myawsbucket

my.aws.bucket

myawsbucket.1

Sau đây là ví dụ về tên xô không hợp lệ: (.) ​​

không hợp lệ Bucket Tên Comment .myawsbucket tên Bucket không thể bắt đầu với một thời gian. myawsbucket. Tên nhóm không thể kết thúc bằng dấu chấm (.). my..examplebucket Chỉ có thể có một khoảng thời gian giữa nhãn

Lưu ý nếu bạn muốn truy cập vào một xô sử dụng một yêu cầu tổ chức theo phong cách ảo, ví dụ http://mybucket.s3.amazonaws.com qua SSL, tên xô không thể bao gồm một dấu chấm (.).

thêm tài liệu tham khảo là here

+5

Điều này không đúng. Tên nhóm 'myproject.de' là tên nhóm hợp lệ. Trong một số trường hợp, tên nhóm phải chứa dấu chấm (từ Tài liệu của Amazon http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html): 'Trong bước này , bạn sẽ đăng nhập vào bảng điều khiển Amazon S3 với thông tin tài khoản AWS của bạn và tạo hai nhóm sau: example.com & www.example.com ' – Undistraction

22

Trên thực tế bạn có thể sử dụng một tên xô với một dấu chấm. Tất cả những gì bạn phải làm là thêm :path_style => true vào config.fog_credentials của mình.

Trong ví dụ của bạn, nó sẽ cung cấp cho:

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

Cảm ơn, path_style đã hoạt động như một sự quyến rũ! –

+0

hoặc thêm 'Fog.credentials = {path_style: true}' vào trình khởi tạo đồng bộ hóa nội dung –

10

TLDR; Giải pháp

Để truy cập vào URL S3 xô của bạn thông qua http S, bạn sẽ cần một trong hai:

  • Chọn một tên xô như vậy mà nó không chứa dấu chấm '.' và sử dụng "Virtual Hosted–Style" URL, chẳng hạn như
    https://simplebucketname.s3.amazonaws.com/myObjectKey
    HOẶC
  • Sử dụng "Path Style" mẫu URL chỉ định tên xô riêng biệt, sau khi tên máy chủ, ví dụ:
    01.

Với fog, bạn có thể thiết lập các tùy chọn: :path_style => true như this solution giải thích.

Vấn đề & Giải thích

Vấn đề SSL Certificate Validation phát sinh từ việc sử dụng dấu chấm '.' trong S3 Bucket Tên cùng với các định dạng URL "Hosted-Style Phương pháp ảo".

Các Amazon S3 Documentation khẳng định rằng nó cho phép hai định dạng URL chính để truy cập S3 Xô và các đối tượng:

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

Vì vậy, những gì đang xảy ra là thế này:

  1. Sương mù đang cố gắng yêu cầu một URL đến buc của bạn ket như: https://myproject.de.s3-us-west-2.amazonaws.com/foo/bar
  2. Các Hostname trong yêu cầu là myproject.de.s3-us-west-2.amazonaws.com
  3. SSL Cert cho *.amazonaws.net được phục vụ trong SSL TLS đàm phán
  4. Sương mù cố gắng để chứng thực SSL Cert & CA Cert Chain
  5. Sương mù cố gắng để phù hợp với của Cert CN *.s3.amazonaws.com chống myproject.de.s3-us-west-2.amazonaws.com
  6. Theo Certificate CN wildcard matching rules trong RFC 2818, tiểu subdomain không phù hợp với ký tự đại diện CN: *.s3.amazonaws.com
  7. Kết nối không thành công với hostname does not match the server certificate do không hợp lệ SSL Cert CA Validation

Các dấu chấm trong vấn đề URL S3 được đề cập around the internet chẳng hạn như trong Drupal Project, AWS Forums, Python Boto Library và được giải thích rất tốt trong bài viết trên blog này mang tên: Amazon S3 Gotcha: Using Virtual Host URLs with HTTPS < - Tôi khuyên bạn nên đọc bài viết này để làm rõ thêm.

Các vấn đề liên quan