1748804236 mtls cover

前言

WordPress 作為最多人用的博客系統,其登入頁面經常被爆破。我在看 Cloudflare 防火牆日誌的時候也發現了很多除了我以外的訪問記錄。之前我寫了一個文章〈個人博客適用的 Cloudflare 防火牆和緩存規則〉,來使每次訪問登入頁面都需要進行機器人驗證。但如果你想在此基礎上更安全的話,不妨按下面的步驟來添加 mTLS 用戶端憑證。其它帶後台的博客平台也可以使用。

簡介

一部分內容來自〈mTLS 是什麼? | 雙向驗證 TLS | Cloudflare〉

mTLS,即相互 TLS,是服務端和用戶端相互驗證的方法。在 mTLS 中,用戶端和服務端都有一個憑證,並且雙方都使用各自的公開金鑰和私密金鑰進行驗證。與常規 TLS 相比,mTLS 需要額外的步驟來驗證雙方(額外的步驟以粗體顯示):

  1. 用戶端連接到伺服器
  2. 伺服器提供其 TLS 憑證
  3. 用戶端驗證伺服器的憑證
  4. 用戶端提供其 TLS 憑證
  5. 伺服器驗證用戶端憑證
  6. 伺服器授予用戶端訪問許可權
  7. 雙方通過加密的 TLS 連接交換信息
mTLS 原理 - Cloudflare
mTLS 原理 – Cloudflare

因此,mTLS 可以防止中間人攻擊、暴力破解密碼和其他惡意請求。要使用這個功能,網站需要經過 Cloudflare 代理(打開小黃雲)。

生成用戶端憑證

打開 Cloudflare 儀錶板,在側邊欄 SSL/TLS 下找到用戶端憑證,然後點「編輯」添加主機。我這邊就添加了 www 子域和根域名。1在添加子域名時,只需輸入子域;在添加根域名時,要輸入完整根域名如圖。

添加用戶端憑證主機
添加用戶端憑證主機

添加主機後,點擊藍色的「建立憑證」按鈕。演算法建議選擇默認的 RSA,兼容性更好。另外,我這裡就將憑證的有效期設置為 1 年了,到期後需要重新創建,這個看你需求。

建立用戶端憑證
建立用戶端憑證

點擊建立後,會出現兩段文本,分別是憑證(公鑰)和私密金鑰。先不要關閉這個頁面,我們需要將公鑰和私鑰組合為 PKCS #12 證書才能添加到瀏覽器和其他設備。

組合公私鑰

對於 Windows 用戶

  • 在桌面上右鍵,選擇「在這裡開啟 PowerShell 視窗」。
  • 輸入命令 notepad cert.crt,會有提示說是否創建新文件,點擊是。然後將第一個文本的公鑰複製到打開的記事本中,保存並關閉。
  • 回到 PowerShell,輸入命令 notepad cert.key,同樣創建新文件,然後將第二個文本的私鑰複製到記事本中,保存並關閉。
  • 最後輸入命令 certutil -mergepfx cert.crt cert.pfx,回車後會提示輸密碼,輸入時不會有顯示,回車後還要再輸一遍確認。完成後,cert.pfx 文件就會生成在桌面上。

對於 Linux/Unix 用戶

首先需要安裝 OpenSSL,不同發行版的安裝方法自己網上查。然後分別將公鑰和私鑰保存到 cert.crtcert.key 文件中,然後用以下命令合併,也會提示輸入密碼:

openssl pkcs12 -export -out cert.pfx -inkey cert.key -in cert.crt

將憑證導入瀏覽器和設備

Chrome 瀏覽器

地址欄輸入 chrome://certificate-manager/ 並回車,會打開瀏覽器的憑證管理員。點擊側邊欄第二個「您的憑證」。

對於 Windows 用戶,在這裡點擊「管理從 Windows 匯入的憑證」,再點「匯入」,下一步後,選擇剛生成的 pfx 文件,2如果選擇文件時沒有看見的話,需要手動選擇文件類型然後一直下一步即可。

Windows 導入憑證
Windows 導入憑證

對於 Linux 用戶,點擊「查看從 Linux 匯入的憑證」,然後點擊「匯入」,選擇文件即可。

Safari 瀏覽器(iOS)

在 iOS 系統上,目前應該只有 Safari 瀏覽器支持用戶端憑證。在確保 pfx 文件加密了的情況下,用電子郵件發送到手機上,必須使用系統自帶的郵件 App 接收。點擊證書文件後,會提示「已安裝描述檔」。然後點開手機設置-已下載描述檔,再點安裝。安裝時會先後提示輸入手機解鎖密碼和憑證密碼。

Cloudflare 設置 mTLS 規則

回到 Cloudflare 儀錶板,點擊「建立 mTLS 規則」,在 URI 路徑中添加 /wp-admin/wp-login.php、和 /wp-admin/(這裡是給 WordPress 用的,其他博客系統自行修改),然後將順序設為第一,最後點擊儲存。

建立 mTLS 規則
mTLS 規則
mTLS 規則

設置好後,可以清除下 Cloudflare 的緩存,然後用瀏覽器訪問網站後台試試,應該會彈出憑證的選擇界面。如果不選擇憑證,訪問就會被攔截掉。對於訪客來說,這個憑證窗口是不會出現的,只有在安裝了的情況下才會出現。但也有個小問題,就是在訪問非管理頁面時也會彈出窗口,這點暫時不懂如何解決。

歡迎到我網站主頁看看別的內容。

  • 1
    在添加子域名時,只需輸入子域;在添加根域名時,要輸入完整根域名
  • 2
    如果選擇文件時沒有看見的話,需要手動選擇文件類型
最後修改日期: 2025-06-02

作者

留言

撰寫回覆或留言

您的電子郵件地址不會公開。留言送出後需要等待審核和緩存刷新,請勿重複點擊。