HTTPS cho trang web tĩnh Amazon S3 [đã đóng]


90

Tôi muốn lưu trữ trang web tĩnh chỉ HTTPS bằng Amazon S3 và CloudFront. Đây là những gì tôi đã làm cho đến nay:

  1. Thiết lập nhóm S3 để lưu trữ trang web tĩnh và đặt các tệp trang web của tôi vào đó
  2. Đã tạo bản phân phối CloudFront và trỏ nó vào nhóm S3
  3. Đã thêm bản ghi CNAME trong máy chủ định danh miền của tôi cho wwwmiền phụ trỏ đến nhóm CloudFront.

Cho đến nay, rất tốt - tôi có thể truy cập trang web của mình bằng www.example.comđịa chỉ. Tuy nhiên, tôi muốn trang web chỉ khả dụng qua HTTPS mà tôi đã mua chứng chỉ SSL từ GoDaddy.

Bây giờ, câu hỏi là:

  1. Có cách nào để cài đặt chứng chỉ SSL của bên thứ ba này trên trang web được lưu trữ trên S3 của tôi không?
  2. Có cách nào để chuyển hướng http sang https tự động với thiết lập này không?

1
Tôi có thể làm điều đó miễn phí không?
Piyush S. Wanare

Bạn có thể nhận chứng chỉ SSL từ Amazon miễn phí và nó sẽ tự động gia hạn. aws.amazon.com/certificate-manager Cuộn xuống biểu tượng ký hiệu đô la:)
Costa

1
Tôi bỏ phiếu để đóng câu hỏi này như off-topic vì nó không đối phó với lập trình
Zach Saucier

1
Tại sao không chuyển câu hỏi sang ServerFault?
nu everest

@nueverest Vì nó quá cũ để di chuyển.
gre_gor

Câu trả lời:


63

Có, kể từ hôm nay, bạn có thể làm điều đó miễn phí.

Giờ đây, bạn có thể sử dụng HTTPS với CNAME trên CloudFront vì nó hiện hỗ trợ chứng chỉ SSL tùy chỉnh bằng cách sử dụng Chỉ báo tên máy chủ (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Tôi đã quản lý để thiết lập chứng chỉ StartSSL Lớp 1 miễn phí cho trang web tĩnh phân phối CloudFront của mình trên S3 mà không gặp quá nhiều khó khăn (xem: Lỗi CloudFront khi phân phối qua HTTPS bằng SNI ).


7
Hướng dẫn chi tiết: bryce.fisher-fleig.org/blog/…
elado

3
Phản hồi: hướng dẫn của ngư dân bryce rất tốt.
tresf

6
Có một sự tinh tế ở đây. Bạn có thể có HTTPS cho nhóm S3 nếu nó không được định cấu hình để lưu trữ trang web . Xem Ghi chú có nội dung "Các điểm cuối của trang web không hỗ trợ https".
skeller88

6
OK, để vượt qua "sự tinh tế" và mô tả bằng tiếng Anh đơn giản, đây là cảnh quay của tôi. Một thùng S3 với nội dung trang web tĩnh (html) có thể được chuyển thành một trang web với một vài cú nhấp chuột. Trang web này chỉ có thể sử dụng http. Nếu bạn muốn https, bạn phải sử dụng dịch vụ Cloudfront của AWS và định cấu hình nó cho SNI để nhận https miễn phí. (Một số trình duyệt cũ hoặc kỳ quặc không hỗ trợ SNI.) Html và các tài nguyên khác có thể được lưu trữ trên S3 với chi phí thấp. Ngoài ra, nếu bạn nhận được tên miền từ AWS, bạn phải sử dụng dịch vụ Cân bằng tải đàn hồi của họ. Phí là một vài xu cho mỗi buổi biểu diễn.
Mike_Laird

5
Tôi thấy thật ngạc nhiên khi câu trả lời này được trao là câu trả lời đúng, khi nó chỉ đơn giản là không giải quyết được câu hỏi: như được nêu bởi @ skeller88, s3 https không hoạt động cho lưu trữ trang web.
abbood

36

Vào ngày 21 tháng 1 năm 2016, AWS đã ra mắt Trình quản lý chứng chỉ AWS , đây là một dịch vụ miễn phí cho phép bạn cấp chứng chỉ SSL để sử dụng với Elastic Load Balancer và Cloud Front (cùng với S3).

Bạn có thể tìm hiểu thêm tại: https://aws.amazon.com/certificate-manager/

Và bạn có thể kiểm tra cách triển khai trang web S3 + Cloudfront của mình với SSL miễn phí từ AWS tại: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -aws /


1
Tôi vừa thiết lập điều này cho trang web của tôi sáng nay. Đó là một trang web tĩnh được lưu trữ trong s3. Đó là siêu dễ dàng. Tôi chỉ cần đến gặp người quản lý acm, yêu cầu chứng chỉ, khắc phục cài đặt email của mình trong vài giờ (cuối cùng đã đặt thông tin WHOIS của tôi ở chế độ công khai trong khi tôi chờ email xác nhận), sau đó thiết lập route53 để trỏ đến điểm cuối mặt tiền đám mây . Rất vui khi tôi tìm thấy bình luận này.
hoang tưởng

1
@paranoid Với điều này, tôi có thể lưu trữ trang web s3 của mình ở dạng chỉ https không?
Piyush S. Wanare

1
@ PiyushS.Wanare vâng, bạn có thể!
barbolo

Đặt liên kết HTTPS trong bản ghi CNAME trong Route53.
Costa

@paranoid không rõ ý của bạn về "điểm cuối mặt tiền đám mây" .. tôi lấy thông tin đó từ đâu?
abbood

17

Kể từ hôm nay, Cloudfront cung cấp SSL tùy chỉnh: http://aws.amazon.com/cloudfront/pricing/

Hãy nhớ rằng họ đang tính phí $ 600 / tháng. Thêm chi tiết vào liên kết ở trên.


7
600 / tháng ......
Pacerier

11
Bạn chỉ phải trả 600 đô la nếu bạn muốn có một địa chỉ IP chuyên dụng. Nếu bạn đang hạnh phúc để sử dụng SNI (mà không được hỗ trợ bởi các trình duyệt cũ), không có chi phí thêm áp dụng
Martin OConnor

2
Nếu bạn sẵn sàng để hỗ trợ các trình duyệt hiện đại duy nhất (thông qua SNI), điều này bây giờ rẻ hơn nhiều là: aws.amazon.com/about-aws/whats-new/2014/03/05/...
Andrew Newdigate

Điều này là miễn phí ngay bây giờ! aws.amazon.com/certificate-manager Cuộn xuống biểu tượng ký hiệu đô la. Thêm vào đó, tôi nghĩ rằng họ tự động gia hạn. Và việc thiết lập cũng dễ dàng như nhập tên miền bạn muốn vào chứng chỉ và nhấp vào liên kết xác thực trong email sau đó.
Costa

3

Đối với tôi, tôi phải tải một trang web React đơn giản lên S3. Như barbolo mô tả, bạn cần chứng chỉ để truy cập trang web thông qua SSL. Nếu trang web tĩnh mà bạn muốn triển khai đủ đơn giản, bạn có thể:

  1. Tải lên S3.
  2. Đừng không chọn "Static Website Hosting"
  3. Chuyển đổi tất cả các liên kết tương đối (sang css, js, v.v.) thành liên kết tuyệt đối.

Ví dụ: từ /css/media.css, bạn nên chuyển đổi nó thành https://s3-region-amazonaws.com/bucket-name/css/media.css (đối với tôi, tôi chỉ phải thay đổi các liên kết trong index.html)

  1. Chỉ đặt nội dung của nhóm ở chế độ công khai.

Đó là nó. Bạn có thể truy cập tệp chỉ mục thông qua https.

Trang web Đơn giản là một trang web có tệp index.html chính trỏ đến một số trang css và js.


Tuyệt vời. Cảm ơn
user1874634

Nếu ứng dụng của bạn nhắm mục tiêu sản xuất thì đây là một ý tưởng tồi.
Sébastien

sébastien vui lòng chia sẻ với chúng tôi thêm chi tiết tại sao đây là ý tưởng tồi. Chúng tôi cung cấp quyền truy cập đọc công khai cho các đối tượng không phải xô.
alexopoulos7

Đó là một cách tốt và đơn giản nhất nhưng hãy nhớ rằng, đối với mỗi tệp trong ứng dụng của bạn, yêu cầu sẽ được truyền trên internet, điều này sẽ làm giảm hiệu suất của ứng dụng của bạn. Sử dụng CloudFront là ý tưởng tốt nhất trong trường hợp này.
Nitesh B.

@ NiteshB.CloudFront thật khó chịu khi bạn cần cập nhật các đối tượng S3 của mình thường xuyên
Dustin Sun

0

Ngoài câu trả lời của @ wikichen.

Từ: https://aws.amazon.com/cloudfront/custom-ssl-domains/

Theo mặc định, bạn có thể phân phối nội dung của mình cho người xem qua HTTPS bằng cách sử dụng tên miền phân phối CloudFront trong URL của bạn, ví dụ: https://dxxxxx.cloudfront.net/image.jpg .

Nếu bạn muốn phân phối nội dung của mình qua HTTPS bằng tên miền riêng và chứng chỉ SSL của riêng bạn, bạn có thể sử dụng một trong các tính năng hỗ trợ chứng chỉ SSL tùy chỉnh của chúng tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.