Lưu trữ trang web đơn giản với Amazon S3 và HTTPS

Hiya các bạn!

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách lưu trữ một trang web tĩnh với HTTPS trên AWS với một miền tùy chỉnh. Tất cả điều này đều có thể thực hiện được bằng cách sử dụng cấp miễn phí AWS.

Tuy nhiên, các dịch vụ chúng tôi sẽ sử dụng phải chịu một số khoản phí nhỏ. Nói chung, những khoản này không được vượt quá $ 1 / tháng.

Chúng tôi sẽ sử dụng kết hợp các dịch vụ AWS sau:

—S3

- Tuyến đường53

- Người quản lý chứng chỉ

- CloudFront

Hãy vào đó!

Thiết lập nhóm S3 của bạn

Đầu tiên, bạn sẽ cần hai nhóm S3 , cả hai đều phải khớp với tên miền tùy chỉnh của bạn với nhóm thứ hai bao gồm tên miền phụ www.

Nhóm 1:mywebsite.com

Nhóm 2:www.mywebsite.com

Nhóm đầu tiên (mywebsite.com) là nhóm chính cho trang web của bạn. Điều này chứa tất cả các tệp và nội dung của bạn cho trang web tĩnh của bạn.

Tiếp theo, chúng tôi thiết lập nhóm này để lưu trữ trang web tĩnh. Bạn có thể tìm thấy điều này trong tab Thuộc tính của nhóm và chúng tôi sẽ giữ các giá trị mặc định được cung cấp ở đây với chỉ mục của trang web được đặt thành index.html.

Chúng tôi cũng cần làm cho nhóm này có thể truy cập công khai vì trình duyệt của người dùng sẽ cần truy cập các tệp của nhóm để hiển thị trang web. Chúng tôi có thể thực hiện việc này bằng cách thiết lập Chính sách nhóm trong tab Quyền.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "MY_BUCKET_ARN" } ]}

Đây là một chính sách đơn giản sẽ chỉ cho phép truy cập đọc công khai của các đối tượng trong nhóm. Bây giờ, nếu bạn đi đến điểm cuối được xác định trong cấu hình lưu trữ tĩnh của nhóm, bạn sẽ thấy trang web của mình.

Phát triển! Nhưng chúng tôi có thể làm tốt hơn thế.

Nhóm thứ hai (www.mywebsite.com), chúng tôi sẽ để trống nhưng định cấu hình để chuyển hướng đến nhóm đầu tiên của chúng tôi bằng cách sử dụng HTTP làm giao thức (chúng tôi sẽ đặt nó thành HTTPS sau).

Nhóm của bạn hiện đã sẵn sàng!

Định cấu hình miền với Route53

Vì vậy, trang web của bạn đã được thiết lập và đang chạy nhưng chỉ có thể truy cập thông qua điểm cuối nhóm chứ không phải miền tùy chỉnh của bạn. Hãy thay đổi điều đó.

Đi đến Tuyến đường53 . Nếu bạn đã đăng ký miền của mình với Công ty đăng ký Amazon, bạn sẽ thấy rằng một khu vực được lưu trữ đã được thiết lập cho bạn với hai bộ hồ sơ. Một cho Máy chủ Định danh (NS) và một cho SOA.

Tất cả những gì chúng ta cần làm là tạo thêm hai bộ bản ghi để trỏ đến các điểm cuối của nhóm S3.

Đối với mỗi bộ kỷ lục:

- Loại: A - Địa chỉ IPv4

- Bí danh: Có

- Mục tiêu bí danh: điểm cuối của trang web S3 phù hợp với những gì bạn đặt cho Tên.

Bây giờ chúng ta có thể đi đến url tùy chỉnh… và voilà!

Chúng tôi sắp đến nơi rồi, nhưng còn một điều cuối cùng chúng tôi còn thiếu…

Lưu ý : Nếu miền của bạn được đăng ký với một công ty đăng ký miền khác (không phải Amazon), bạn sẽ cần làm theo một số bước khác nhau để thiết lập. Thông thường, bạn sẽ cần thêm bản ghi CNAME với giá trị của điểm cuối nhóm S3 chính.

Khắc phục sự cố :

Nếu bạn đã xóa vùng được lưu trữ mà Amazon đã tạo khi bạn đăng ký miền lần đầu (tôi đã thực hiện việc này vì các vùng được lưu trữ phải chịu một số khoản phí), bạn sẽ cần tạo một vùng được lưu trữ mới từ đầu.

  1. Chọn “Tạo vùng được lưu trữ” và đặt tên miền, ví dụ: “mywebsite.com”
  2. Điều này sẽ tạo ra một số bộ bản ghi mới cho các loại NS và SOA.
  3. Đi vào miền đã đăng ký của bạn và cập nhật các giá trị Máy chủ định danh cho các giá trị được tạo trong bộ bản ghi NS mới.

Yêu cầu chứng chỉ

Thật tuyệt vời, trang web hiện được lưu trữ bằng cách sử dụng url tùy chỉnh! Tuy nhiên chúng ta chỉ có thể truy cập nó thông qua giao thức HTTP.

Chúng tôi phải luôn đảm bảo các trang web của mình được bảo mật bằng giao thức HTTPS. Điều này bảo vệ trang web của chúng tôi và người dùng khỏi các cuộc tấn công tiêm nhiễm độc hại và đảm bảo tính xác thực.

Đi tới Trình quản lý chứng chỉ trong Bảng điều khiển AWS và yêu cầu chứng chỉ công khai mới (điều này miễn phí). Bạn sẽ được nhắc nhập tên miền mà bạn muốn bảo mật.

Trước khi chứng chỉ có thể được cấp, Amazon cần xác minh rằng bạn sở hữu các miền được chỉ định.

Bạn có thể chọn từ hai phương pháp xác minh: Email hoặc DNS.

Email thường đơn giản hơn, nhưng bạn cần đảm bảo có thể truy cập vào email được sử dụng để đăng ký miền. Ngoài ra, nếu bạn đã sử dụng Amazon Registrar và Route53, bạn có thể chọn phương pháp DNS. Điều này yêu cầu bạn thêm một số bộ bản ghi cụ thể vào vùng được lưu trữ, nhưng điều này chủ yếu được tự động hóa cho bạn nên khá đơn giản.

It can take a few minutes for the certificate to be issued after validation.

When its all done we can continue to the final step!

Configuring CloudFront

For the final step we are going to use CloudFront which allows us to use the new SSL certificate to serve the website with HTTPS. CloudFront also speeds up the distribution of web content by storing it at multiple edge locations and delivering from the closest edge location to a user.

We need two new web distributions, one for each S3 bucket. Head to CloudFront in the AWS Console and create the first web distribution.

There are lots of settings available to create a web distribution, but for the basics we only need to change five:

  1. Origin Domain Name: Set this to the S3 website endpoint for one of the buckets. Important: This field will give you some auto-complete options with your S3 bucket names. However, using these can cause issues with redirecting to the bucket endpoint. So instead use the bucket endpoint directly.
  2. Origin Id: This populated for you when you enter Origin Domain Name.
  3. Viewer Protocol Policy: Set to “Redirect HTTP to HTTPS”.
  4. Alternate Domain Names: This should match the name of the S3 bucket you’re pointing to. For example “mywebsite.com”.
  5. SSL Certificate: Select “Custom SSL Certificate” and select your new certificate from the dropdown.

Do this again for the second S3 bucket.

The distributions can take a while to spin up, so while we wait, let’s do the finishing steps.

Back in S3, go to your secondary bucket (www.mywebsite.com), in the Properties tab and under Static Website Hosting set the redirect protocol to HTTPS.

Finally, head back to Route53. We need to update the custom A records we created to now target the CloudFront distributions rather than the S3 buckets. For each record, change the Alias Target and select the CloudFront distribution available in the dropdown.

Note: Again, if you are using another DNS service you’ll need to go update the CNAME record from there to point to the CloudFront domain name.

And there you have it! Your beautiful website is now available at the custom domain and served with HTTPS!

Cảm ơn vì đã đọc! Tôi hy vọng hướng dẫn này hữu ích và thú vị, tôi muốn biết nếu bạn thấy nó hữu ích.