iT邦幫忙

0

AWS EC2與CloudFront: 透過ACM申請免費憑證/Cloudflare管理DNS

  • 分享至 

  • xImage
  •  

本案例情境: 原本就有一個網站在EC2上運作,每年自行上傳更新的付費SSL憑證,想改用AWS Certificate Manager (ACM)頒發的免費憑證;網站DNS是透過Cloudflare管理。

為何使用AWS憑證?

除了免費外,AWS憑證會自動更新,不會有到期的問題。

為何要使用CloudFront?

根據AWS指南,公有ACM憑證可以安裝在連接到Nitro Enclave的Amazon EC2執行個體上,但不適用於其他Amazon EC2執行個體。本案例屬於後者,因此需要透過CloudFront連接EC2。

CloudFront與負載平衡器Amazon Elastic Load Balancer(ELB)差別?

CloudFront是以流量計費,ELB以小時計費,前者適用於流量小的網站。

架構

user => Cloudflare(DNS) => CloudFront(with SSL) => website

STEP1 透過ACM申請免費SSL憑證

到ACM介面,右上角選取維吉尼亞州北部,然後請求憑證。
這很重要,免費憑證只能在維吉尼亞州北部,此區域與EC2所在地區無關。
https://ithelp.ithome.com.tw/upload/images/20230508/20160062bnIUWotRKV.png
接著選取請求公有憑證(實際上你也只有這個可以選)後下一步。
網域名稱> 你要申請憑證的網域 (www.example.com or aaa.example.com)
驗證方法> DNS驗證-建議 我自己習慣用這個方法,操作方法網路上很多教學,簡單快速
金鑰演算法> RSA 2048
請求並完成驗證之後,列出憑證的畫面就會長這樣:
https://ithelp.ithome.com.tw/upload/images/20230508/20160062VePl0A2n3Q.png

STEP2 建立CloudFront分佈

如題--
https://ithelp.ithome.com.tw/upload/images/20230508/201600620GAmW4HsNJ.png
首先會需要填寫來源網域,到你EC2執行個體的頁面找到公有IPv4 DNS,複製它並貼到CloudFront來源網域。
通訊協定選擇僅透過HTTP。
https://ithelp.ithome.com.tw/upload/images/20230508/20160062SgE6DQktIr.png
設定預設快取行為:
檢視器通訊協定政策> Redirect HTTP to HTTPS
快取索引鍵和來源請求> Cache policy and origin request policy (recommended)
快取政策> CachingDisabled
來源請求政策> AllViewer
其他我是沒改,請看下圖。
https://ithelp.ithome.com.tw/upload/images/20230508/20160062zu0F899LWM.pnghttps://ithelp.ithome.com.tw/upload/images/20230508/20160062epTelzRoj2.png
設定:
備用網域名稱(CNAME)>新增項目>輸入你剛申請SSL的網域
https://ithelp.ithome.com.tw/upload/images/20230508/20160062XBC8Mzt3AM.png
自訂SSL憑證>下拉式選單中會看到你在ACM申請的憑證
https://ithelp.ithome.com.tw/upload/images/20230508/20160062KTetrtzdxI.png
其他都不用改,完成後按「建立分佈」,剛建立完它會需要一陣子部署,
如果已經建置完成會顯示上次修改時間,不需要重新整理,它會自己更新。
https://ithelp.ithome.com.tw/upload/images/20230508/20160062BOrWwN4nIx.png

STEP3 移除原本的SSL憑證

前面案例情境有提到,我們原本是每年自行上傳更新的付費SSL憑證,因此要先去移除它。
我是透過SSH登入root帳號修改EC2的conf文件,路徑應該都會在/etc/httpd下面某個資料夾某個conf檔案。
將有#的部分刪除,或透過#註解掉。

<VirtualHost *:80>
    DocumentRoot /www/example.com
    ServerName example.com
#    Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot /www/example.com
    ServerName example.com
#    SSLEngine On
#    SSLCertificateFile 原本SSL檔案路徑
#    SSLCertificateKeyFile 原本SSL檔案路徑
#    SSLCertificateChainFile 原本SSL檔案路徑
</VirtualHost>

STEP4 測試CloudFront分佈連結

https://ithelp.ithome.com.tw/upload/images/20230509/20160062e7wbROc9oJ.png
回到CloudFront頁面,複製分佈網域名稱測試一下,現在這個連結應該可以連到你的網站了。

STEP5 更新DNS(Cloudflare)

https://ithelp.ithome.com.tw/upload/images/20230509/20160062gKbYbm16Ah.png
開啟Cloudflare的DNS頁面,將原本指向EC2執行個體公有IPv4地址的A紀錄,改成指向CloudFront分佈網域名稱的CNAME。

大功告成!!

現在,你的網站就有AWS憑證囉!
https://ithelp.ithome.com.tw/upload/images/20230509/2016006279sbhiq6xV.png

以上是個人嘗試的紀錄,如有觀念錯誤歡迎討論指教,感恩!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言