當mysql跨越互聯網進行復制時別人可以竊取到mysql的復制信息,這些信息是明文的,因此存在不安全性,這里通過ssl對復制的信息進行加密。當在客戶沒有固定ip而要訪問服務器時,mysql要允許任意地址的訪問,服務端和客戶端通過證書驗證可以防止暴力破解。
開始之前讓我們先來回顧一下SSL協議客戶端OpenSSL的安裝過程:
安裝openssl
| mkdir /test/setupcd /test/setuptar zxvf openssl-0.9.8b.tar.gzcd openssl-0.9.8b./configmake && make install |
開啟mysql中ssl功能
登錄Mysql查看
| mysql> show variables like '%ssl%'; |
| +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+----------+ |
如果mysql輸出如上所述,那么繼續操作開啟ssl;如果不是,重新編譯安裝mysql,注意生成makefile時填寫參數正確。
退出mysql,編輯/etc/my.cnf
在[mysqld]和[mysqldump]之間,加入下列配置信息:
| ssl |
保存后重新啟動mysql,再次登錄mysql
| mysql -uroot -pmysql> show variables like '%ssl%'; |
| +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+-------+ |
好了,下面進入正題:
mysql基于ssl復制
1、創建證書中心
在主服務器上創建證書中心
| cd /etc/pki/CA |
生成私鑰
| (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) |
生成自簽證書,由于需要輸入大量用戶信息,因此編輯證書的配置文件,在私有的CA上創建證書要注意所有的用戶信息要和CA中的一致,從國家到部門都要相同,否則會造成證書無法使用
| vim /etc/pki/tls/openssh.cnf |
| [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = CN countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrpovinceName_default = FJ localityName = Locality Name (eg,city) localityName = FZ O.organizationName = Organization Name (eg,company) O.organizationName_default = zdz organizationalUnitName = Organizational Unit Name (eg,section) organizationalUnitName_default = zdz |
生成自簽證書
| openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 |