首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 基於 SSL 的主從復制配置實戰:證書生成、雙向驗證、常見錯誤排查

     編輯:MySQL 綜合教學

MySQL 基於 SSL 的主從復制配置實戰:證書生成、雙向驗證、常見錯誤排查

跨公網復制時,明文傳輸存在竊聽風險。啟用 SSL 加密復制鏈路,並通過證書雙向驗證防止暴力破解。本文詳細記錄 OpenSSL 證書體系構建、MySQL SSL 開啟、主從雙向配置、報錯排查全過程。

前置:開啟 MySQL SSL 支持

  1. 安裝 OpenSSL:./config && make && make install
  2. 編譯 MySQL 時指定 -DWITH_SSL=system 或捆綁 yaSSL。
  3. 編輯 /etc/my.cnf 在 [mysqld] 添加 ssl,重啟驗證 SHOW VARIABLES LIKE '%ssl%'; 顯示 have_ssl: YES。

構建私有 CA 證書體系

  1. 創建 CA 目錄結構:/etc/pki/CA/{certs,crl,newcerts,private},touch index.txt; echo 00 > serial
  2. 生成 CA 私鑰:(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
  3. 生成 CA 自簽證書:修改 openssl.cnf 區分名默認值,openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

簽發 Server/Client 證書

Master 證書:

mkdir /usr/local/mysql/ssl
cd /usr/local/mysql/ssl
(umask 077; openssl genrsa -out master.key 2048)
openssl req -new -key master.key -out master.csr
# CA 簽發
openssl ca -in master.csr -out master.crt -days 365

Slave 證書:同理生成 slave.key、slave.csr,CA 簽發 slave.crt。

部署證書與配置 MySQL

將 cacert.pem 複製到主從 /usr/local/mysql/ssl/,設置權限 chown mysql:mysql; chmod 600。
Master my.cnf:

ssl
ssl_ca = /usr/local/mysql/ssl/cacert.pem
ssl_cert = /usr/local/mysql/ssl/master.crt
ssl_key = /usr/local/mysql/ssl/master.key

Slave my.cnf:

ssl
ssl_ca = /usr/local/mysql/ssl/cacert.pem
ssl_cert = /usr/local/mysql/ssl/slave.crt
ssl_key = /usr/local/mysql/ssl/slave.key

建立復制用戶並啟動復制

Master:GRANT REPLICATION SLAVE ON *.* TO slave@'192.168.216.133' IDENTIFIED BY 'slave' REQUIRE SSL;
查看 SHOW MASTER STATUS; 獲取 File、Position。
Slave:

CHANGE MASTER TO
  MASTER_HOST='192.168.216.132', MASTER_USER='slave', MASTER_PASSWORD='slave',
  MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=1015,
  MASTER_SSL=1,
  MASTER_SSL_CA='/usr/local/mysql/ssl/cacert.pem',
  MASTER_SSL_CERT='/usr/local/mysql/ssl/slave.crt',
  MASTER_SSL_KEY='/usr/local/mysql/ssl/slave.key';
START SLAVE;

常見錯誤排查

  • SSL connection error: ASN: before date in the future:系統時間不同步導致證書驗證失敗,同步時間(NTP)。
  • SHOW VARIABLES LIKE '%ssl%' 顯示 DISABLED:證書文件屬主非 mysql 用戶,無權讀取私鑰。檢查錯誤日志 SSL error: Unable to get private key,修正 chown mysql:mysql。
  • 測試連通性:mysql -uroot -proot -hMasterIP --ssl-ca=cacert.pem --ssl-cert=client.crt --ssl-key=client.key;非 SSL 連接應被拒絕(Access denied ... REQUIRE SSL)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved