寫這篇最主要推廣讓網站都支援 HTTPS 加密連線及 HTTP2 協定,對於網站為什麼要支援 HTTP2,可以直接參考 ihower 寫的說明文章,最近在玩 Facebook, Line, Telegram Bot 時,填寫 Webhook URL,都強制要填寫 https:// 開頭,所以更不能忽略 HTTPS 了。,去年底寫了一篇 Let’s Encrypt 開放申請免費 SSL 憑證 推廣 Let’s Encrypt 的貢獻,讓買不起憑證,又想玩看看 HTTP2 的開發者可以用很簡單的方式來安裝及自動更新憑證,而 gslin 大為了推廣 HTTPS 也做了一個網站教學,文章寫得相當清楚,支援 Apache 及 Nginx 設定。
安裝方式
如果主機是使用 Amazone EC2,可以直接用 AWS Certificate Manager,用 AWS 的好處就是只要透過後台介面搭配 ELB 就可以直接設定好 HTTPS 對應到 EC2 主機,壞處就是直接被綁死,將來如果不要使用 AWS,要轉移機器會相當痛苦。所以本篇會紀錄如何用 Nginx 搭配 Let’s Encrypt。為了方便部署機器,我們選用 dehydrated 來設定 Let’s Encrypt,好處就是不用安裝 Python 套件,官方網站提供的安裝方式需要安裝 Python 相關環境。透過 wget 將 dehydrated 安裝到 /etc/dehydrated/
底下
建立設定檔
建立 dehydrated config 設定檔
$ echo "WELLKNOWN=/var/www/dehydrated" > /etc/dehydrated/config
$ mkdir -p /var/www/dehydrated
Nginx 設定,先在 80 port 的 Server section 內寫入底下設定:
可以先丟個檔案到 /var/www/dehydrated/
確定網站可以正常讀取檔案,接著透過 dehydrated 指令產生 SSL 設定檔
|
|
執行上述指令會看到底下結果
|
|
最後在設定一次 nginx
|
|
上面是將 80 port 自動轉到 https,如果下次要重新 renew 的時候才不會又要打開 80 port 一次。
加入 Cron 設定
每天半夜可以自動 renew 一次,請參考 https://letsencrypt.tw/ 最後章節
|
|
後記
除了這方法之外,也可以使用 Certbot 來自動更新憑證,但是這方式就是要安裝 Python 環境,不過也不是很難就是了,可以直接參考這篇『NGINX 使用 Let’s Encrypt 免費 SSL 憑證設定 HTTPS 安全加密網頁教學』。結論就是你可以在網路上找到超多種方法來申請 Let’s Encrypt 憑證,就找到自己覺得不錯的方法即可,而我是認為不用安裝 Python 環境的方式最適合部署了。
See also
- 推薦自動化監控網站運行服務 - Gatus
- 兩台電腦透過 croc 工具來傳送檔案 (簡單, 加密, 快速)
- 搶救 Terraform State 檔案
- 用 GitHub Actions 上傳 Docker Image 到 AWS ECR
- Traefik 搭配 Docker 自動更新 Let’s Encrypt 憑證
- Drone 支援單機版安裝 (內附影片)
- 高雄 Mopcon 濁水溪以南最大研討會 – Drone CI/CD 介紹
- 用 10 分鐘部署專案到 AWS Lambda
- 用 Caddy 申請 Let’s Encrypt Wildcard 憑證
- [影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務