身為一個習慣掌控數據的技術愛好者,我一直選擇自架Bitwarden密碼管理工具——畢竟密碼這類核心隱私數據,放在自己的伺服器上才最安心。之前用 http://server:1234 這類HTTP方式就能正常連接瀏覽器外掛,誰知最近外掛突然強制要求HTTPS加密連接,直接跳出SSL憑證錯誤,連登入入口都進不去了。
折騰了大半天,終於摸清楚從申請免費SSL憑證到匯入群暉(Synology)伺服器的完整流程,在這裡把詳細步驟整理出來,給有同樣困擾的朋友避坑。
核心目標:為自架Bitwarden配置有效SSL憑證
Bitwarden外掛強制HTTPS的核心原因在於數據傳輸安全——密碼在傳輸過程中若未加密,的確存在被攔截的風險。我們要做的,就是透過免費的Certbot工具申請Let’s Encrypt憑證,再將憑證檔匯入運行Bitwarden的群暉伺服器。
準備工作:你需要這些前提條件
- 一台已安裝Bitwarden的群暉(Synology)伺服器
- 一個已備案的網域(我使用的是
certbot.alexcheung.xyz,專門解析給Bitwarden服務) - 網域管理權限(需新增DNS TXT紀錄與設定名稱伺服器,完成憑證驗證與網域解析)
- 一台Linux主機(用於執行Certbot申請憑證,可為虛擬機或雲端主機)
- 群暉伺服器的管理權限(具備控制台存取權,可執行憑證匯入操作)
詳細操作步驟:從申請憑證到匯入群暉
第一步:更新系統並安裝Certbot
Certbot是Let’s Encrypt官方推薦的憑證申請工具,先確保Linux主機的套件清單為最新,再安裝它:
# 更新系統軟體套件清單
sudo apt update
# 升級已安裝的軟體套件(可選,建議執行以避免相依性問題)
sudo apt upgrade -y
# 安裝Certbot
sudo apt install certbot -y
第二步:透過DNS驗證申請憑證
由於群暉伺服器可能未開放公網Web服務,選擇DNS驗證方式最穩妥——無需開放80/443連接埠,僅需在網域解析中新增一條TXT紀錄即可。執行以下指令:
sudo certbot --manual --preferred-challenges dns certonly -d certbot.alexcheung.xyz
指令參數說明:
--manual:手動模式,適用於無自動設定外掛的場景--preferred-challenges dns:優先使用DNS驗證方式certonly:僅取得憑證,不自動設定Web伺服器(因需手動匯入群暉)-d certbot.alexcheung.xyz:指定要申請憑證的網域
第三步:設定DNS名稱伺服器與TXT紀錄(關鍵步驟)
DNS配置是憑證申請與服務訪問的基礎,需先完成名稱伺服器設定,再配置驗證用的TXT紀錄,兩步缺一不可:
子步驟3.1:設定網域的名稱伺服器(Nameserver)
1. 登入網域服務商後台,找到「名稱伺服器」設定選項(不同平台名稱可能為「DNS伺服器」) 2. 若使用網域服務商預設DNS,可直接跳至TXT紀錄設定;若需自定義(如使用Cloudflare DNS),需填入對應的名稱伺服器位址(例如Cloudflare的 ns1.cloudflare.com 與 ns2.cloudflare.com) 3. 名稱伺服器變更後生效時間較長(通常24-48小時,視網域TTL設定而定),建議提前1-2天配置,可透過 nslookup -type=NS certbot.alexcheung.xyz 指令驗證是否生效 4. 注意:名稱伺服器需與後續設定TXT紀錄的平台一致,否則TXT紀錄無法被Certbot識別
子步驟3.2:新增DNS TXT紀錄完成驗證
執行上一步Certbot指令後,工具會暫停並提示你新增一條DNS TXT紀錄,內容類似如下:
Please deploy a DNS TXT record under the name:
_acme-challenge.certbot.alexcheung.xyz.
with the following value:
aB3dE5fG7hI9jK2mN4oP6qR8sT0uV1wX2yZ3$E-1234
操作重點:
- 登入你的網域服務商後台(Namecheap、Google Domain、Cloudflare等)
- 找到該網域的「DNS解析」設定,新增一條TXT紀錄
- 紀錄主機名填
_acme-challenge.certbot(部分平台會自動補全網域後綴,无需填寫完整的_acme-challenge.certbot.alexcheung.xyz) - 紀錄值填Certbot給出的隨機字串(我的是
aB3dE5fG7hI9jK2mN4oP6qR8sT0uV1wX2yZ3$E-1234,每個人的都不同) - TTL建議設為60秒(加快生效速度),儲存紀錄
⚠️ 重要提醒:DNS紀錄生效需要時間(通常1-5分鐘),可透過 nslookup -q=TXT _acme-challenge.certbot.alexcheung.xyz 指令驗證,確認紀錄值正確後再按Enter繼續。
# Use google tools
https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.certbot.alexcheung.xyz.
第四步:匯出憑證檔並傳送至群暉伺服器
憑證申請成功後,預設儲存在 /etc/letsencrypt/live/[你的網域]/ 目錄中,核心檔案為 fullchain.pem(憑證鏈)與 privkey.pem(私鑰)。使用scp指令直接傳輸。
方式一:透過scp指令直接傳輸(推薦) 因憑證檔權限較高,先切換至root使用者,再透過scp指令傳送至我的桌面(假設我的桌面IP為192.168.38.203,管理員帳號為admin,目標資料夾為「Desktop」中的「SSL_folder」資料夾):
# 切換至root使用者,避免權限問題
sudo -i
# 傳輸憑證鏈檔案(群暉預設共享資料夾路徑為/volume1/[資料夾名稱])
scp /etc/letsencrypt/live/certbot.alexcheung.xyz/fullchain.pem admin@192.168.38.203:~/Desktop/SSL_folder/
# 傳輸私鑰檔案
scp /etc/letsencrypt/live/certbot.alexcheung.xyz/privkey.pem admin@192.168.38.203:~/Desktop/SSL_folder/
後續步驟:在群暉中匯入憑證並配置Bitwarden
憑證檔傳送至群暉後,需完成「匯入憑證」與「配置Bitwarden」兩個環節,確保HTTPS正常生效:
- 匯入SSL憑證至群暉: 1. 登入群暉DSM控制台,進入「安全性」→「憑證」頁面 2. 點擊「新增」→「匯入憑證」,選擇「新增憑證」 3. 在「憑證檔案」欄選擇上傳的
fullchain.pem,「私密金鑰」欄選擇privkey.pem,其餘欄位留白(Let’s Encrypt無中介憑證) 4. 點擊「確定」,完成憑證匯入,並將該憑證命名為「Bitwarden_SSL」(便於辨識),无需立即設為預設憑證 - 配置群暉反向代理(關鍵環節): 群暉的反向代理可實現「網域→服務」的映射,讓用戶透過
https://certbot.alexcheung.xyz直接訪問Bitwarden,操作如下: 1. 打開群暉DSM控制台,進入「應用服務」→「Web Station」→「反向代理伺服器」頁面(部分群暉版本需先安裝「反向代理」套件) 2. 點擊「新增」,進入反向代理規則設定頁面: – 「來源」設定: – 通訊協定:選擇「HTTPS」 – 主機名:填入certbot.alexcheung.xyz(你的Bitwarden專用網域) – 連接埠:預設443(HTTPS標準連接埠,若被占用可自定義,需在網域解析中同步調整) – 憑證:選擇剛才匯入的「Bitwarden_SSL」憑證 – 「目的地」設定: – 通訊協定:選擇「HTTP」(反向代理會在群暉端完成HTTPS解密,內部與Bitwarden通訊用HTTP即可) – 主機名:填入群暉本機IP(如192.168.38.203)或「localhost」 – 連接埠:填入Bitwarden服務的內部連接埠(Docker安裝通常為8080,套件安裝可在套件設定中查詢) 3. 點擊「高級設定」,在「HTTP標頭」頁面添加「X-Forwarded-For」與「X-Forwarded-Proto」標頭,確保Bitwarden能正確識別用戶請求來源 4. 點擊「確定」,完成反向代理規則建立 - 配置Bitwarden使用群暉反向代理與憑證: 若Bitwarden是透過Docker安裝(群暉常見安裝方式),操作如下: 1. 打開群暉Docker,找到Bitwarden容器,點擊「編輯」→「網路」設定 2. 確保容器使用「橋接模式」,內部連接埠保持預設(如8080),无需映射主機443連接埠(由反向代理統一管理) 3. 進入Bitwarden容器的終端機,編輯配置文件(通常位於
/etc/bitwarden/config.json),將「baseUrl」設定為https://certbot.alexcheung.xyz,開啟「ssl」選項並設為「true」 4. 若Bitwarden是透過Synology Package Center安裝,直接在套件設定的「網路」選項中,將「訪問位址」設為https://certbot.alexcheung.xyz,並選擇「使用群暉反向代理憑證」 5. 保存設定並重啟Bitwarden服務
踩坑總結:群暉反向代理與SSL配置必注意細節
- 名稱伺服器與TXT紀錄需匹配:若在Cloudflare設定了名稱伺服器,就必須在Cloudflare後台配置TXT紀錄,不能混用不同平台的DNS設定,否則Certbot驗證會失敗
- 反向代理連接埠規避衝突:若群暉本機的443連接埠已被DSM佔用(預設情況),可在反向代理「來源」設定中將連接埠改為4433等自定義值,同時在網域解析中新增一條A紀錄,將
certbot.alexcheung.xyz指向群暉公網IP並指定4433連接埠 - Bitwarden baseUrl必須與反向代理位址一致:若配置文件中的baseUrl仍是內部HTTP位址,會導致外掛連接時出現「位址不匹配」錯誤,務必同步修改
- 反向代理HTTPS標頭不可漏:缺少X-Forwarded-For與X-Forwarded-Proto標頭,會導致Bitwarden無法識別用戶真實IP與請求協定,可能引發登錄異常或日志混亂
- 憑證自動續期後需同步更新反向代理:群暉自動續期SSL憑證後,反向代理會自動調用新憑證,但Bitwarden配置文件中的憑證路徑若為固定路徑,需在續期後手動更新或使用群暉憑證的軟連結(路徑為
/usr/syno/etc/certificate/system/default/) - 防火牆端口開放:若群暉部署在區域網中,需在路由器上將反向代理使用的連接埠(如443或4433)映射到群暉本機IP,否則外部網路無法透過網域訪問
從發現SSL錯誤到反向代理配置完成,最花時間的是名稱伺服器生效與反向代理端口映射環節。群暉的反向代理功能雖然強大,但細節設定稍有疏漏就會導致訪問失敗,建議配置時逐項核對來源與目的地的協定、位址、端口是否匹配。希望這篇補充後的教程能幫大家一次搞定配置,讓自架Bitwarden既安全又易用~ 若在操作中遇到反向代理端口衝突、Bitwarden配置文件修改等問題,歡迎在評論區留言交流!
- Let’s Encrypt憑證有效期為90天,群暉支援「自動續期」——在「憑證」頁面勾選對應憑證的「自動更新憑證」選項,無需手動操作
- 私鑰檔案極為敏感,傳輸至群暉後,透過File Station將其權限設定為「僅管理員可讀寫」,避免未授權存取
- 若Bitwarden透過Docker安裝,續期憑證後需重啟容器,可在群暉「工作排程」中建立自動化任務,續期完成後自動重啟