Amazon S3 버킷에 SSL을 구성하는 방법


142

내 .NET 애플리케이션을 사용하여 데이터를 업로드하고 다운로드하기 위해 Amazon S3 버킷을 사용하고 있습니다. 이제 내 질문은 : SSL을 사용하여 S3 버킷에 액세스하고 싶습니다. Amazon s3 버킷에 SSL을 구현할 수 있습니까?


도움이 될 수 있습니다 : Amazon S3 정적 웹 사이트에서 SSL 구현
vsync

답변:


151

다음과 같이 SSL을 통해 파일에 액세스 할 수 있습니다.

https://s3.amazonaws.com/bucket_name/images/logo.gif

버킷에 사용자 지정 도메인을 사용하는 경우 S3 및 CloudFront를 자체 SSL 인증서와 함께 사용하거나 Amazon Certificate Manager를 통해 무료로 생성 할 수 있습니다. http://aws.amazon.com/cloudfront/custom-ssl- 도메인 /


42
그것은 사실이 아닙니다. 점없이 버킷 이름을 사용할 수 있습니다. this-is-my-awesome-bucket.s3.amazonaws.com Amazon에는 와일드 카드 인증서가 있습니다. 점을 사용할 수 없으므로 버킷을 가리키는 CNAME 도메인을 가질 수 없습니다.
Docunext

4
마침표가 포함 된 버킷 이름을 조심하십시오! SSL은 iOS 기기에서는 작동하지 않지만 Chrome에서는 제대로 작동합니다. 참조 stackoverflow.com/questions/3048236/...
Simon_Weaver

1
Amazon CloudFront가이를 수행합니다.
그렉

3
도트 표기법 버킷 이름을 가지므로 (Route 53 별칭을 사용할 수 있음) REST를 통해 객체를 PUT하려면 호스트 이름이 리전과 일치해야합니다. 예를 들어, 내 버킷이 us-west-2있으므로 호스트 이름이 실제로 s3-us-west-2.amazonaws.com그렇지 않으면 오류가 발생합니다.
noetix

1
클라우드 프론트 없이는 이것을 달성 할 수 있습니까?
Arun Kumar

28

맞춤 도메인 SSL 인증서는 오늘 $ 600 / cert / month에 추가되었습니다. 아래에서 초대에 가입하십시오 : http://aws.amazon.com/cloudfront/custom-ssl-domains/

업데이트 : 이제 SNI 고객 제공 인증서 추가 비용없이 사용할 수 있습니다 . $ 600 / mo보다 훨씬 저렴하고 XP가 거의 사라지면 대부분의 사용 사례에서 잘 작동합니다.

@skalee AWS에는 "Amazon s3 버킷에 SSL 구현"이라는 포스터가 요구하는 것을 달성하기위한 메커니즘이 CloudFront있습니다. "구현"을 "SSL 인증서 사용"으로 읽고 있는데, "단, OP가 추측 할 수 있다고 확신하는 HTTP URL에 S를 넣지 않았습니다.

CloudFront의 가격은 S3 (GB 당 $ 0.12)와 동일하지만 SSL과 관련하여 많은 추가 기능이 있으며 추가 비용없이 자체 SNI 인증서를 추가 할 수 있으므로 도메인에서 "SSL 구현"에 대한 확실한 수정입니다.


64
CloudFront는 S3이 아닙니다.
skalee

6
@skalee 맞지만 OP 요청으로 사용자 지정 SSL 인증서가있는 도메인을 통해 액세스하려는 경우 이러한 방식으로 사용자 지정 CNAME SSL 인증서를 설정하고 CF를 통해 액세스 할 수 있습니다.
Joseph Lust

2
당분간 저는 static-s3과 static-cf의 두 가지 CNAME을 설정했습니다. 첫 번째는 내 S3을 가리키고 두 번째는 CF를 가리 킵니다. 첫 번째는 SSL을 지원할 수 없지만 두 번째는 지원할 수 있지만 skalee가 지적한 것처럼 CF이며 S3이 아닙니다. 그것이 내가 지금 할 수있는 최선이라고 생각합니다.
위험

2
어쨌든 그들은 점점 더 저렴한 스토리지 비용을 보충해야한다고 생각합니다. 적어도 그것은 비례 배분됩니다. 한 달에 1 시간 동안 만 SSL 인증서를 사용하는 경우 단 $ 20입니다. ;-)
Simon_Weaver

1
@ Elegant.Scripting SNI 인증서가 아닌 전용 SSL 인증서가있는 경우 해당 시스템에는 비용이 발생하는 전용 IP가 필요합니다. 아마도 S3가 데이터를 호스팅하는 전 세계 모든 위치에 대해 전용 IP가 필요합니다. 그래서 합산됩니다. 그러나 나는 주로 포스트 사람들이 그것을 필요로하지 않는 사람들이라고 생각합니다. 그들은 사람들에게 가격을 올릴 수 있습니다. IE6를 지원할 필요가없는 경우 CloudFront에서 SNI 인증서를 사용해도됩니다.
Simon_Weaver


3

실제로 필요한 경우 리디렉션을 고려하십시오.

예를 들어, 요청에 assets.my-domain.example.com/path/to/file당신에게 301 또는 302 리디렉션을 수행 할 수 my-bucket-name.s3.amazonaws.com/path/to/file또는 s3.amazonaws.com/my-bucket-name/path/to/file(첫 번째 경우에 그 기억하십시오 my-bucket-name그렇지 않으면이 일치하지 않습니다, 어떤 점을 포함 할 수 없습니다 *.s3.amazonaws.com, s3.amazonaws.comS3 인증서에 명시).

테스트되지는 않았지만 작동한다고 생각합니다. 그러나 몇 가지 문제가 있습니다.

첫 번째는이 방법을 사용하기위한 추가 요청입니다. 그리고 도메인 이름 등록 기관에서 제공 한 리디렉션 서버를 사용할 수있을 것입니다. 어떻게 든 적절한 인증서를 업로드해야합니다. 따라서이를 위해서는 자체 서버를 사용해야합니다.

두 번째는 페이지 소스 코드에 도메인 이름을 가진 URL을 가질 수 있지만 예를 들어 사용자가 별도의 탭에서 그림을 열면 주소 표시 줄에 대상 URL이 표시됩니다.


2
확실하지 않지만 이것이 CORS 문제를 일으킬 수 있다고 생각합니다.
xdhmoore

3

S3에서는 직접 사용할 수 없지만 버킷에서 Cloud Front 배포를 만들 수 있습니다. 그런 다음 인증서 관리자로 이동하여 인증서를 요청하십시오. 아마존은 무료로 제공합니다. 인증을 성공적으로 확인한 후 Cloud Front 배포에 할당하십시오. 또한 http를 https로 리디렉션하도록 규칙을 설정해야합니다.

Cloud Front 배포시 SSL 인증서를 할당 한 개인 웹 사이트와 같이 Amazon S3에서 정적 웹 사이트 몇 개를 호스팅하고 있습니다.


도메인 이름을 어떻게 지정 했습니까?
netshark1000

먼저 인증서 관리자로 가서 새 인증서를 요청하십시오. 거기에 도메인을 추가하고 필요한 경우 하위 도메인도 포함하십시오. 하위 도메인을 배치하는 데 아무런 문제가되지 않으므로 example.com 및 * .example.com을 넣으십시오.
Mika Kujapelto

0

앞에서 언급했듯이 S3 버킷에 대한 무료 인증서를 만들 수 없습니다. 그러나 Cloud Front 배포를 생성 한 다음 Cloud Front에 대한 인증서를 대신 할당 할 수 있습니다. 도메인의 인증서를 요청한 다음 Cloud Front 설정에서 Cloud Front 배포에 할당하면됩니다. 이 방법을 사용하여 SSL을 통해 정적 웹 사이트를 제공하고 정적 파일을 제공했습니다.

정적 웹 사이트 생성을 위해서는 Amazon이 제격입니다. SSL을 사용하여 정적 웹 사이트를 얻는 것이 실제로 저렴합니다.


2
Google을 사용하여 여기에 온 모든 사람 : N. Virginia 지역에서 AWS 인증서 (또는)를 만들어야합니다. 그렇지 않으면 CF 배포에서 선택할 수 없습니다
KLoozen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.