AWS中國區使用https訪問部署在S3上的網站


問題描述

最近一個項目需要通過https的方式訪問部署在S3上的網站,通過搜索引擎找到一篇文章,可以在AWS Global實現整個過程。但是目前AWS中國區限制,CloudFront不能使用AWS Certificate Manager自己頒發的證書

解決思路

  • 申請一個免費證書
  • 導入到AWS IAM Certificate Store中
  • 配置CloudFront使用整個證書
  • Route53執行CloudFront

解決方案步驟

申請免費證書

https://letsencrypt.org/ 可以申請免費的短期證書(90天有效期),不需要公司證明等繁雜的手續,但需要證明這個域名是你的。
為了這個證書屬於你,需要先讓 http://your_domain_name 能夠訪問。
因為letsencrypt提供的certbot工具,支持自動配置nginx服務器,所以選擇nginx作為網站服務器

在AWS中國區啟動一台ubuntu 20.04的EC2


在配置EC2的security group的時候,確保80和443端口是開發的

在EC2上安裝nginx

可根據這篇文章在ubuntu 20.04上安裝配置nginx
確保執行以下命令,可以有html返回:

curl -i 127.0.0.1

回到AWS Console -> Route53,配置一條A記錄,指向EC2,例如:

配置成功后,等DNS同步結束,就可以通過http方式訪問你架設的nginx服務器了

安裝certbot

certbot(letsencrypt官網指定的客戶端)需要通過snap安裝

sudo apt update
sudo apt install snapd

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version # check if installed successfully

(注:如果碰到snap安裝慢的問題,可以考慮通過這篇文章提供的方式解決)

生成證書

可參考這篇文章,其實做到這步,你只需要執行一行命令即可:

sudo certbot --nginx # 按照向導提示選擇正確的nginx網站

證書生成后,路徑在這里: /etc/letsencrypt/live/{your_domain_name}/ 把該目錄下的所有文件拷貝到本地主機的一個目錄下,下一個步驟需要使用
(注:這個目錄為隱藏目錄,需要用sudo進行查看,可以用sudo cat ...命令查看每個文件內容並保存到本地)

sudo ls /etc/letsencrypt/live/{your_domain}/
sudo cat /etc/letsencrypt/live/{your_domain}/cert.pem

文件有: cert.pem chain.pem fullchain.pem privkey.pem

導入證書到IAM Certificate Store

參考這篇文章

aws iam upload-server-certificate --server-certificate-name SandboxSpaCertName --certificate-body file://cert.pem --private-key file://privkey.pem --certificate-chain file://chain.pem --path /cloudfront/sandbox/ 

配置CloudFront

回到AWS Console -> CloudFront, 創建一個distribution指向你的S3網站, 其中最關鍵的步驟是:使用Custom SSL Certificate:

1.替換成你的域名
2.選擇Custom SSL Certificate
3.選擇之前導入到IAM certificate store里面的證書
4.等待distribution部署完畢

配置Route53

回到AWS Console -> Route53: 創建一條cname指向CloudFront那條新創建的distribution

寫在最后

這個問題,也許在AWS中國區后續的版本中能夠解決。在這之前,如果你也遇到同樣的問題,希望這篇文章可以幫到你。歡迎留言交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM