TLS 憑證與 HTTPS
HTTPS 是 Passkey、OIDC Callback 與大多數公網服務的基礎。憑證必須涵蓋訪客實際使用的身分驗證 Host 與服務 Host;若憑證只簽給內部 IP 或舊網域,透過閘道存取時仍會出現瀏覽器警告或登入失敗。
頁面結構與憑證來源
SSL / HTTPS 分為三個分頁:
| 分頁 | 管理內容 |
|---|---|
憑證設定 | 目前 HTTPS 狀態、閘道部署方式、手動上傳與憑證庫 |
自簽憑證 | 本機根 CA,以及由該 CA 簽發的網域/IP Server Certificate |
ACME 憑證/DNS-01 憑證 | 多筆申請項目、簽發、續期、Log 與憑證庫關聯 |
| 來源 | 適用情境 | 注意事項 |
|---|---|---|
| 上傳既有憑證 | 憑證已由 CDN、管理面板或其他工具簽發 | 同時儲存憑證鏈與私密金鑰,並記錄由哪一方負責續期 |
| 自簽憑證 | 區域網路測試或暫時驗證 | 用戶端必須手動信任,不適合一般公網存取 |
| ACME | 有可驗證的網域,且希望自動續期 | 目前申請流程使用 DNS-01,必須保護 DNS API 憑據 |
憑證庫與手動上傳
上傳區支援直接貼上 PEM 憑證與私密金鑰;具備分享資料夾功能的平台,也可從分享檔案讀取。憑證與私密金鑰必須成對,憑證鏈應包含 Server Certificate 與必要的 Intermediate Certificate。
儲存時有兩種動作:
| 動作 | 結果 |
|---|---|
只儲存至憑證庫 | 驗證並寫入憑證庫,不變更目前對外憑證 |
儲存並啟用 | 寫入憑證庫,設為目前的有效/預設 Fallback 憑證,並立即同步閘道 |
憑證庫會顯示來源、涵蓋網域、有效期限、更新時間與 Host 涵蓋狀態。刪除正在使用的憑證會同時停用 HTTPS;清除憑證庫 會刪除所有憑證、清除閘道已收到的憑證集合,並停用 HTTPS。若只想暫時停用 HTTPS,請使用狀態卡中的 停用 HTTPS,憑證仍會保留在憑證庫中。
單一有效憑證與多憑證 SNI
憑證庫可保留多張憑證,部署方式與閘道下發 會決定閘道實際收到多少張:
| 部署方式 | 閘道行為 | 適用情境 |
|---|---|---|
單一有效憑證 | 只下發目前的有效憑證,所有網域都回傳同一張 | 一張 Wildcard 或 SAN 憑證涵蓋所有 Host |
多憑證 SNI | 下發整個憑證集合,依 TLS SNI 替網域選擇憑證 | 不同父網域或不同憑證來源共用同一個閘道 |
多憑證 SNI 仍需要一張預設/Fallback 憑證。用戶端未傳送 SNI、存取未知 Host,或找不到相符憑證時,閘道會回傳預設憑證。切換憑證部署方式後,請檢查頁面顯示的「閘道目前已接收的憑證集合」;若已儲存模式與 Runtime 模式不一致,或出現同步錯誤,不要只依憑證庫內容判斷是否已生效。
子網域情境應涵蓋身分驗證 Host 與所有對外服務 Host。Wildcard *.example.com 只涵蓋一層子網域,不涵蓋根網域 example.com,也不涵蓋 a.b.example.com。頁面的 Host 涵蓋分析會搭配目前映射列出缺少的項目。
自簽根 CA
自簽憑證 的使用順序:
- 初始化根憑證並下載根 CA。
- 在所有需要存取的用戶端或受管裝置中,將根 CA 安裝為受信任的根憑證。
- 在網域與 IP 清單中加入實際使用的存取名稱。
- 按下
一鍵部署,簽發並安裝 Server Certificate;也可以下載 Server Certificate 自行使用。
Server Certificate 有效期限為 20 年。長期有效不代表可以忽略私密金鑰保護或撤銷計畫。重新產生或清除根 CA,會讓原根 CA 簽發的 Server Certificate 失去信任,因此介面會要求兩次確認;執行前應先準備新根憑證的散布與回復方案。
自簽憑證適合受控的區域網路、測試裝置,或能統一下發根憑證的環境。公網訪客、第三方 OIDC 與不受控的用戶端,通常應使用公開信任的 CA。
ACME 申請項目
非 Windows 平台第一次使用時,請先在 系統設定 → ACME 初始化 acme.sh,並視需求選擇預設 CA。切換 CA 只會影響後續申請與自動續期,不會立即取代已簽發或部署的憑證。
每個 ACME 申請項目都會獨立儲存:
- 名稱與一個或多個網域;
- DNS 供應商,以及該項目使用的 API 憑據;
- 自動續期開關;
- 目前憑證、憑證庫關聯與最近工作狀態。
儲存 只會修改申請項目;儲存並申請 會立即提交簽發工作。簽發成功後,憑證會自動同步至憑證庫,但不一定會成為目前憑證:單一有效憑證模式下可再執行 設為目前憑證;多憑證 SNI 模式則應確認它已進入閘道憑證集合。
同一申請項目續期或重新簽發時,系統會原地取代已關聯的憑證庫記錄,並保留原有標籤與有效/預設部署角色,避免重複新增憑證。修改網域後,若簽發工作失敗或遭停止,系統會保留先前可用的簽發結果;新憑證下發至閘道失敗時,系統會嘗試還原並重新下發上一份 SSL 設定。若期間已有更新的並行設定,則會保留並下發較新的設定。工作仍會以失敗結束,必須從 Log 確認系統是已還原上一份設定、保留較新的設定,或連安全設定都未能恢復。
申請項目選單也可查看工作 Log、下載憑證、手動更新至憑證庫、部署、刪除憑證,或刪除申請項目。兩種刪除操作的範圍不同:
| 操作 | 保留內容 |
|---|---|
| 刪除憑證 | 保留申請項目設定,移除目前儲存的簽發結果與憑證庫關聯 |
| 刪除申請項目 | 刪除申請設定;既有憑證與關聯也會隨該項目一併清除 |
工作執行中或自動續期時,清單操作會暫時鎖定。工作 Log 會提示 DNS 憑據、DNS API Rate Limit 或 ACME Rate Limit 等排查方向;停止工作會終止目前執行中的 acme.sh Process,並將工作標記為已停止,之後必須重新發起。
Windows 原生版:DNS-01 憑證
Windows x86_64 版請在 SSL / HTTPS → DNS-01 憑證 中申請憑證。安裝套件已內建憑證 Client,不需要初始化或下載 ACME.sh;此流程固定使用 Let's Encrypt,只接受 DNS-01 驗證,不提供 HTTP-01,也無法切換至其他 Certificate Authority。
請在頁面中選擇支援的 DNS 供應商,並以最低必要權限儲存其 API 憑據。目前支援阿里雲 DNS、Baidu Cloud DNS、Cloudflare、DNSPod、騰訊雲 DNSPod、DuckDNS、Dynu、dynv6、GoDaddy、華為雲 DNS 與 Porkbun。Cloudflare 支援 API Token 與 Global API Key 兩種憑據,應優先使用限制於指定 Zone 的 Token。
新申請項目預設啟用自動續期;簽發成功後會進入憑證庫。單一有效憑證模式下,第一次簽發後仍需手動設為目前憑證。Windows 頁面不要求初始化 acme.sh,也不提供 CA 切換。
飛牛 SSL 憑證庫同步(僅原生 FPK)
飛牛原生 FPK 可在 系統設定 → 飛牛 → 飛牛 SSL 憑證庫同步 中,將 fn-knock 憑證庫內容同步至飛牛系統既有的憑證記錄。
同步只會更新網域與 SAN 集合完全相符的既有飛牛憑證;不會新增或刪除飛牛系統中的憑證記錄。因此,請先確認兩邊涵蓋的網域集合一致,再執行單筆或全部同步。若沒有相符項目,請先調整憑證記錄,而不是期待同步功能代為建立。
可視需求手動同步,也可啟用自動同步。自動模式會在本機憑證庫變更後短暫等待並合併作業,再集中同步相符項目,並重新整理一次飛牛服務。若目標憑證同時啟用了飛牛本身的自動續期,後續續期可能覆寫同步結果,應明確指定由哪一側負責續期。
建議設定順序
- 確認最終對外網域與連接埠,不要先用內網 IP 申請憑證。
- 在 DNS 中確認身分驗證 Host 與服務 Host 的解析已生效。
- 在
SSL / HTTPS上傳、申請或選擇憑證。 - 依憑證數量選擇單一有效憑證或多憑證 SNI,並確認閘道已收到預期的憑證集合。
- 查看憑證涵蓋提示,修正尚未涵蓋的 Host。
- 從行動網路存取身分驗證 Host 與一個服務 Host,檢查瀏覽器憑證鏈、網域、有效期限與登入流程。
自動 HTTPS 的限制
系統中的自動 HTTPS 只處理閘道端的 HTTP 至 HTTPS Redirect,以及啟用已設定的憑證;它不會替你申請網域、開放路由器連接埠或設定 CDN Origin。Docker 與 OpenWrt 環境不提供這個與 Host 相關的開關;若 TLS 終止於外層反向 Proxy,應由外層負責強制 HTTPS。即使 Windows 上顯示此開關,也必須先具備真實 Inbound 路徑與可用的 80 連接埠;7999 預設 Listen 在所有介面,不代表 Windows 防火牆、路由器/NAT 或電信業者已允許公網存取。
疑難排解
瀏覽器顯示網域不相符:憑證的 DNS Name 未涵蓋目前 Host,或上游 CDN 連回錯誤的 Origin。
憑證已存在於憑證庫,但外網仍回傳舊憑證:檢查它是否已設為目前/預設憑證、部署方式是否正確,以及閘道收到的憑證集合是否已更新。
多個網域回傳同一張錯誤憑證:檢查目前是否仍為單一有效憑證模式,或多憑證 SNI 中沒有相符項目而使用 Fallback 憑證。
上傳失敗:確認 PEM 內容、私密金鑰配對與憑證鏈順序;不要將 PKCS#12 檔案內容上傳至 PEM 文字欄位。
ACME 失敗:檢查 DNS Provider 憑據、DNS API Rate Limit 與 TXT Record Propagation。目前申請流程只使用 DNS-01,不要朝 HTTP-01 方向排查。
ACME 簽發成功但未生效:檢查憑證庫關聯,以及單一有效憑證模式下是否已執行
設為目前憑證。Cloudflared 使用
https://localhost:7999失敗:該上游 TLS Name 必須與憑證相符;無法相符時,請先改用已驗證的 HTTP Origin 方案,或調整 Tunnel TLS 設定。服務頁面正常,但 Passkey 無法使用:檢查身分驗證 Host 是否透過有效 HTTPS 與正確 RP Domain 存取。
