AWS S3 CloudFront SSL

目錄
AWS S3 CloudFront SSL 架設靜態網站
使用AWS上的 S3, CloudFront 架設網站, 並藉由 AWS Certificate Manager 申請 SSL
. 這樣的會就可以不用開啟S3的Static website hosting . 藉由 CloudFront 還可以讓 bucket 不必公開, 限制 bucket 只能由cloudfront讀取~

流程
- S3 建立 Bucket, public 權限打開, 放入你的靜態網頁(index.html)
- AWS Certificate Manager 申請 SSL (一定要在 virginia us-east-1 !!)
- Cloudfront 建立 Distribution, 並指向S3 Bucket
- S3 public 權限要關掉
https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html
Content
1. S3 建立 Bucket
- Everyone Read 權限打開 不然沒人連的到網站
- 指定CloudFront cache 時間 https://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
- 因為透過 Cloudfront 所以 Static website hosting 並不需要開啟

2. AWS Certificate Manager 申請 SSL

使用DNS驗證
使用DNS驗證的話, AWS會自動幫你 renew憑證, 如果使用email的話這樣每年都要自己手動renew
有以下2種方式做認證, 看是要用AWS 的 Route 53 , 或是第三方的DNS供應商

不是使用 Route 53 做為 DNS 供應商,
- 您必須擷取 CNAME 資訊並新增至 DNS 資料庫。您可以使用兩種方式的任一種執行此動作:
- 複製顯示在 Domains(網域)部分的 CNAME 元件。這些資訊需手動新增至 DNS 資料庫。
- 選擇 Export to CSV(匯出至 CSV)。結果檔案中的資訊需手動新增至 DNS 資料庫。

- 您必須擷取 CNAME 資訊並新增至 DNS 資料庫。您可以使用兩種方式的任一種執行此動作:
(選用) 使用 Route 53 進行驗證。
- Create records in Route 53(在 Route 53 中建立記錄)按鈕會在符合以下情況時顯示:
- 您使用 Route 53 做為 DNS 供應商。
- 您擁有寫入 Route 53 託管區域的許可。
- 您的 FQDN 未經驗證。
1 2注意 如果 Create record in Route 53 (在 Route 53 中建立記錄) 按鈕遺失或停用,請參閱「ACM 主控台不會顯示「Create record in Route 53」(在 Route 53 中建立記錄) 按鈕」。- 選擇 Create records in Route 53(在 Route 53 中建立記錄)按鈕,然後選擇 Create records(建立記錄)。所以此 Certificate status(憑證狀態)頁面應該開啟並顯示狀態橫幅報告 Successfully created DNS records(成功建立 DNS 記錄)。 您的新憑證可能會繼續顯示 Pending validation(待定驗證)狀態最多 30 分鐘。
提示
1您無法透過編寫程式的方式請求 ACM 自動在 Route 53 中建立記錄。但是您可以對 Route 53 發出 AWS CLI 或 API 呼叫,以在 Route 53 DNS 資料庫中建立記錄。如需有關 Route 53 記錄集的詳細資訊,請參閱使用 Route 53使用資源記錄集。- Create records in Route 53(在 Route 53 中建立記錄)按鈕會在符合以下情況時顯示:
更詳細的話可以看官網的介紹 -> https://docs.aws.amazon.com/zh_tw/acm/latest/userguide/dns-validation.html
3. Cloudfront 建立 Distribution
這邊就要建立一個CDN, 然後對應到剛剛建立好的 S3 Bucket
Origin Domain Name選擇剛剛建立的S3 Bucket
- OAI
- 如果沒有 Origin Access Identity (OAI) 的話,Cloudfront 會透過這個 identity 來存取 S3, 所以在S3的
Grant Read Permissions on Bucket這邊必須選擇Yes, 這會自動 update S3 bucket policy, 這樣就允許 Cloudfront 讀取 origin bucket. - 如果選擇OAI. bucket can restrict access to only CloudFron, 用在限制 user 只能透過 Cloudfront 讀取靜態網頁, 而不能直接 access S3 bucket.
| |
Viewer protocol policy勾Redirect HTTP to HTTPS, 因為都用HTTPS了
cache 就走他建議的

選剛剛驗證過的SSL

更多設定可以參考 -> 使用 CloudFront 分發更新現有內容





