前言
在設定 Docker 服務時,可能需要為網站配置 SSL 憑證,才能正常使用。例如 Vaultwarden(開源的密碼管理),它會要求只能用 Https 才能登入。
即使服務沒有公開到網路上,在某些情況下也需要使用 SSL 憑證,所以才有這一篇教學,而且可以使用 XXX.mrpeelblog.com
來存取內部服務,就算其他人知道這個網址也沒辦法連線,因為他的 DNS 是指向內部 IP。
以下是設定的步驟,讓你在伺服器上啟用內網 SSL 憑證,同時不影響外網 SSL 憑證。
事前配置
- 安裝 Docker Compose
- 安裝 Nginx Proxy Manager
- 個人網域
1. 開啟 80、443 端口
前往路由器設定,確保 80
和 443
端口已經開啟,以便讓 SSL 請求能夠通過。
2. 設定 DNS
進入 Cloudflare,新增 A 記錄,並將 SSL 網址與公網 IP 設定連結起來。記得將 Proxy 功能關閉。如有多個域名,請重複此步驟。
公網 IP 設定是暫時的,是為了取得憑證用的。
3. 設定 Nginx Proxy Manager
打開 Nginx Proxy Manager,進入 SSL Certificates,並新增 Let’s Encrypt Certificate。在 Domain Names
欄位填寫您想要設定的 SSL 網址。如果有多個域名,請重複此步驟。
點選 Test Server Reachabilty 確保連線沒問題後,勾選同意條款新增憑證。
回到 Dash Board,新增 Proxy Host,Domain Names
填要設定 SSL 的網址;Forward Hostname / IP
填內網 IP;Forward Port
填服務的 Port。
SSL 部分就選擇剛剛新增的 SSL 網址,打勾 Force SSL、HTTP/2 Support 新增憑證網址。
4. 再次修改 DNS 設定
回到 Cloudflare,將 SSL 網址的公網 IP 改回內網 IP,以及關閉路由器的 80
、443
Port,即完成內網服務使用 SSL 憑證、不暴露公網且不影響現有公網 SSL 憑證。
5. 證書過期重新延長
SSL 證書啟用時間 90 天,因為我們外網連不上所以無法自動延長,快要到期會寄信到 NPM 註冊的信箱,此時我們要手動延長時間。
Port Forwarding 打開 80
和 443
,Cloudflare DNS IP 改成公網 IP。前往 NPM SSL 設定,對要延長的網域先 Test Server Reachability
。
測試成功,再點 Renew Now
。
結語
透過以上設定,可以讓一些需要 SSL 憑證服務可以正常使用。以及如果想要使用 PWA APP 的話,也要開啟 SSL 才能安裝。