2013-08-20 3 views
19

Amazon S3과 일치하지 않으며 railsfog을 사용합니다. rake assets:precompile 내 자산을 미리 컴파일하려고 :Amazon S3 - hostname이 서버 인증서 (OpenSSL :: SSL :: SSLError) + 레일

메시지 :

  1. 이미 config (설정)하는 것을 시도했다 :

    [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/인증서 표시는"))

  2. here

    에서 우분투 12.04에 openssl 설치

질문은 다음과 같습니다 어떻게 인증서와 아마존 S3 거래

+0

SSL없이 작동합니까? jruby를 사용하고 있습니까? – archie

답변

-4

문제는이 경우, bucketnaming 함께 : myproject.de은 Amazon S3 서비스가 유효한 것으로 간주하지 않는 형식입니다 (이름에 점이 없음).

버킷 이름을 myproject.de에서 myprojectde으로 변경했으며 현재 작동합니다. 버킷 이름 다음과 같은 규칙을 준수해야 미국 표준 지역을 제외한 모든 지역에서

명명 버킷에 대한

규칙. DNS 준수 버킷 이름이 생성됩니다.

버킷 이름은 최소 3이어야하며

버킷 이름 긴 더 이상 63 개 문자는 기간으로 구분 된 하나 개 이상의 일련의 라벨 없어야합니다 여기서 각 레이블 (.) :

소문자 또는

는 소문자 또는 숫자로 끝나야합니다 숫자로 시작해야합니다

소문자, 숫자 및 대시

를 포함 할 수 있습니다개

버킷 이름은 IP 주소로 포맷하지 않아야합니다 (예를 들어, 192.168.5.4)

유효한 버킷 이름의 예는 다음과 같습니다

myawsbucket

my.aws.bucket

myawsbucket.

다음 일이 잘못 버킷 이름의 예는 다음과 같습니다 (.)

잘못된 버킷 이름 설명 .myawsbucket 통 이름 로 시작할 수 없습니다 기간. myawsbucket. 버킷 이름은 마침표 (.)로 끝날 수 없습니다. 가상 호스팅 스타일의 요청을 사용하여 양동이에 액세스하려면 에만 SSL을 통한 예를 http://mybucket.s3.amazonaws.com를 들어, 버킷 이름에 마침표 (포함 할 수 없습니다, 라벨

주 사이에 한주기가있을 수 있습니다 my..examplebucket.).

더 참조 here

+5

올바르지 않습니다. 버킷 이름'myproject.de'는 유효한 버켓 이름입니다. 버킷 이름에 마침표가 포함되어 있어야합니다 (http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html). '이 단계에서 AWS 계정 자격 증명으로 Amazon S3 콘솔에 로그인하고 example.com & www.example.com ' – Undistraction

22

은 실제로 당신이 점으로 버킷 이름을 사용할 수 있습니다. 당신이해야 할 일은 config.fog_credentials:path_style => true을 추가하는 것입니다. 당신의 예에서

, 그것은 줄 것이다 :

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

두 가지 버킷을 만듭니다. 감사합니다. : path_style이 매력처럼 작동했습니다! –

+0

또는 asset sync initializer에서'Fog.credentials = {path_style : true} '를 추가하십시오. –

10

TLDR을; 마침표 '.'를 사용하는 "Virtual Hosted–Style"에 포함하도록

  • 는 버킷 이름을 선택 : S HTTP 를 통해 S3 버킷 URL을 액세스하기 위해 솔루션

, 당신이 중 하나를해야합니다 URL과 같은
https://simplebucketname.s3.amazonaws.com/myObjectKey
또는

  • 예를 들어, 호스트 이름 뒤에 별도로 버킷의 이름을 지정하는 "Path Style"URL 양식을 사용하여
    을 81,868,381,867,775,934,168,623,210
  • fog, 당신은 옵션을 설정할 수 있습니다 설명 :path_style => truethis solution한다.

    SSL 인증서 검증 문제는 "가상 방법 스타일 호스팅"URL 형식과 함께 S3 버킷 이름에 '.'를 사용하여 점에서 발생하는 문제 & 설명.

    1. : 그래서 무슨 일이 일어나고 있는지이있다

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

      :

      Amazon S3 Documentation는 S3 양동이 및 개체에 액세스하기위한 두 가지 URL 형식을 허용하는 상태 안개가 buc에 대한 URL을 요청하려고합니다. 같은 KET : https://myproject.de.s3-us-west-2.amazonaws.com/foo/bar

    2. *.amazonaws.net
    3. 안개
    4. 안개가 일치하려고 SSL CERT는 & CA 인증서 체인을 확인하려고 SSL TLS 협상 동안 제공됩니다에 대한 요청의 호스트 이름이 myproject.de.s3-us-west-2.amazonaws.com
    5. SSL CERT는이다 CERT는의 RFC 2818에서 Certificate CN wildcard matching rules에 따르면 myproject.de.s3-us-west-2.amazonaws.com
    6. 에 대한 CN *.s3.amazonaws.com는 하위 하위 도메인 와일드 카드 CN과 일치하지 않습니다 *.s3.amazonaws.com
    7. 연결은 SSL CERT는 CA가 검증

    S3의 URL 문제의 점 around the internet 같은 Drupal Project, AWS Forums, Python Boto Library에서 언급되고 아주 잘 자격이 블로그 게시물에 설명되어 인해 잘못된에 hostname does not match the server certificate와 함께 실패 Amazon S3 Gotcha: Using Virtual Host URLs with HTTPS < - 자세한 내용을 보려면이 설명서를 읽는 것이 좋습니다.

    관련 문제