首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SSL 連線配置五大模式詳解:從內部 CA 到公開 CA 與複寫

     編輯:MySQL 資料庫相關知識

SSL 提供什麼保護?

  • 加密網路傳輸,防竊聽。
  • 驗證伺服器身份,防中間人攻擊。
  • 客戶端憑證作為雙因子認證(搭配密碼)。

替代方案:SSH 隧道(MySQL Workbench 等 GUI 支援),但 Python 腳本/mysqldump 較難使用。

關鍵注意事項

風險對策
誤以為啟用 SSL 實則接受非 SSL 連線強制 REQUIRE SSL,用 Wireshark 驗證流量加密
憑證過期未更新建立到期提醒(Nagios/行事曆/CA 郵件)
效能影響基準測試對比,嘗試 OpenSSL/YaSSL 不同加密套件
流量分析工具失效提供金鑰給 VividCortex/pt-query-digest,或改用 performance_schema/slow log

MySQL SSL vs 瀏覽器 SSL 差異

  • 瀏覽器內建 CA 信任清單,MySQL 預設無。
  • MySQL 類似 OpenVPN,雙向需客戶端憑證。
  • MySQL 僅支援 TLS v1.0,預設不驗證主機名(需 --ssl-verify-server-cert)。
  • MySQL 5.6+ 僅支援 CRL 撤銷驗證。

五大配置模式

模式 1:內部 CA(Server/Client)

  • Server:建立 PKCS#1 金鑰 → CSR → CA 簽發 → 取得 ssl-cert/ssl-key/ssl-ca。
  • Client:僅需 ssl-ca。
  • 帳號授權:GRANT ... REQUIRE SSL。

模式 2:內部 CA + 客戶端憑證

  • Server 同模式 1。
  • Client 額外指定 ssl-cert/ssl-key。
  • 授權:REQUIRE X509,若 CA 多用途需 REQUIRE SUBJECT '/CN=client.example.com' 限制。

模式 3:公開 CA

  • 公開 CA 簽發多憑證並支援撤銷。
  • 必須啟用 --ssl-verify-server-cert 防中間人攻擊。
  • 授權同模式 2,建議加 REQUIRE ISSUER。

模式 4:多公開 CA

  • 使用憑證串檔(單檔多憑證)指定 ssl-ca,或 ssl-capath 指向目錄(需 c_rehash)。
  • Ubuntu 系統預設 /etc/ssl/certs/ca-certificates.crt。

模式 5:複寫

CHANGE MASTER TO MASTER_SSL=1, MASTER_SSL_CA=..., MASTER_SSL_CERT=..., MASTER_SSL_KEY=...;
# 啟用主機名驗證
MASTER_SSL_VERIFY_SERVER_CERT=1;

SHOW SLAVE STATUS 應顯示 SSL 連線資訊而非不可用。

CA 部署策略

  • 每伺服器一 CA:客戶端需對應不同憑證,管理負擔重。
  • 集中式 CA:單一 CA 管理所有憑證,較推薦。

私鑰洩露應對

  1. 短效憑證(7 天)等待過期(需自動化輪換機制)。
  2. 重發所有憑證含 CA(小規模適用)。
  3. 使用 CRL(需正確序號、MySQL 5.6+、ssl-crl 路徑、c_rehash 目錄)。

注意:私鑰洩露必須重新生成私鑰,舊 CSR 不足夠。

客戶端配置細節

  • my.cnf [client] 區段用 loose-ssl-ca(ssl-ca 會干擾 mysqlbinlog)。
  • ssl-key/ssl-cert 放 ~/.my.cnf [client],妥善保護檔案權限。
  • mysql_config_editor 的 login-path 目前不支援 SSL 參數。

加密套件選擇

  • YaSSL(Community Edition 預設)選擇有限。
  • OpenSSL(Enterprise Edition 預設)支援完整加密套件(Cipher Suite)。

判斷 SSL 庫版本

ldd /path/to/mysqld
# 觀察連結的 ssl/crypto 庫

推薦閱讀

  • Bulletproof SSL and TLS - Ivan Ristic
  • The Code Book - Simon Singh(中文版《密碼故事》)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved