共计 1807 个字符,预计需要花费 5 分钟才能阅读完成。
記得以前寫過 網站使用 https 這篇文章,當時是透過 Cpanel 傻瓜操作便可以使網站加密,爾後寫過 替 Nas 添加域名和憑證,這篇則是手動處理,每 3 個月到期就得自己手動重新更換憑證,本篇主要是透過自動化來更換憑證,順帶釐清一些觀念。
Https 觀念釐清
詳細的觀念可以參考該文章 深入揭秘 HTTPS 安全问题 & 连接建立全过程
如下附圖並打個比方來說 將 Server 比喻成商家 Client 比喻成客戶 資料比喻成需求 加密比喻成帶鎖盒子
客戶說將需求給商家 (建立連線)
正常加密連線:
- 商家先給一個帶鎖的盒子(公鑰) 客戶把需求放到自己的盒子裡面並把鑰匙一同放到商家給的帶鎖盒子並鎖上 (非對稱加密)
- 商家用鑰匙 (私鑰) 開啟 並收下客戶的鑰匙取得裡面的需求 後續的問題放到客戶盒子中上鎖再給客戶 (對稱加密)
中間人竊取:
中間人偽造自己是商家 並將商家給的帶鎖盒子替換成自己的帶鎖盒子 客戶把需求放到自己的盒子裡面並把鑰匙一同放到中間人給的帶鎖盒子並鎖上
中間人用自己的鑰匙 (私鑰) 開啟 將客戶的鑰匙備份起來 客戶的盒子連鑰匙再放到商家盒子裡給商家
新增機構認證解決中間人竊取
中間人偽造自己是商家 並將商家給的帶鎖盒子替換成自己的帶鎖盒子
客戶拿到盒子後 先詢問機構該盒子是否為商家的帶鎖盒子 機構說不是並將商家註冊的帶鎖盒子給客戶 客戶把需求放到自己的盒子裡面並把鑰匙放入盒中
中間人用自己的鑰匙 (私鑰) 打不開 只能將該盒子直接交到商家手中 只有商家手中的鑰匙能開啟
ACME 協定認識
詳細可以參考 SSL/TLS 加密新纪元 – Let’s Encrypt
該協議全名為 Automated Certificate Management Environment(自動證書管理環境),該協議的制定離不開 Let’s Encrypt 組織,本文也是透過該組織提供的免費證書進行第三分機構驗證,確保該證書不是偽造的證書。
下載自動化腳本更新憑證
# 下載一鍵自動化腳本
wget -c https://github.com/andyzhshg/syno-acme/archive/v0.2.0.tar.gz -O syno-acme_v0.2.0.tar.gz
# 解壓縮
tar xvf syno-acme_v0.2.0.tar.gz
# 因為群暉使用 root 登入後默認在 /root 資料夾底下預設解壓縮後只有讀取權限,執行會導致權限被拒絕
chmod -R 777 syno-acme-0.2.0/
# 切換到解壓縮目錄
cd syno-acme-0.2.0/
# 修改配置
vim config
# 查看配置路徑
realpath cert-up.sh
查看域名託管配置
這裡必須根據自己域名的託管商進行配置,我這裡使用 Cloudfare 具體配置參考 文檔
使用 cloudFlare 有兩種獲取方式
- 使用 global api key 複製 key 並輸入 mail 即可
- 到 cloudflare 新增 api token 並輸入 account_id
這裡採用 global api key 如附圖
登入 Cloudfare 選擇自己的域名 在 Overview 底下有個 Get your API token 選項點選進入後如附圖即可查看 global api key
修改 config
如附圖修改 Domain 為自己的域名
配置群暉工作排程
控制台 → 任務排程表 → 新增 → 排程任務 → 使用者自定義指令碼
設定任務名稱,使用者帳號直接使用 root 即可
設定排程時間每個月執行一次即可
最後是執行指令如下
/usr/local/software/syno-acme-0.2.0/cert-up.sh update >> /usr/local/software/syno-acme-0.2.0/log.txt 2>&1
最後回到 安全性 → 憑證 查看是否成功匯入即可