mysql創建ssl安全鏈接的配置node
1、環境、IP、安裝包
centOS5.4mysql
虛擬機了兩臺服務器sql
mysql-5.1.48.tar.gz
openssl-0.9.8b.tar.gz數據庫
wgethttp://www.openssl.org/source/openssl-0.9.8b.tar.gzwindows
server:192.168.189.134安全
client:192.168.189.133服務器
windows_client:192.168.6.82(本地電腦IP)ide
2、安裝openssl
mkdir/test/setup
cd/test/setup
tar-zxvfopenssl-0.9.8b.tar.gz
cdopenssl-0.9.8b測試
./config
make&&makeinstall加密
3、安裝mysql
cd/test/setup
tarzxvfmysql-5.1.48.tar.gz
cdmysql-5.1.48
./configure--prefix=/usr/local/mysql--with-ssl--with-vio
cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql--with-ssl--with-vio&&make&&makeinstall
make&&makeinstall
useraddmysql
cd/usr/local/mysql
bin/mysql_install_db--user=mysql
chown-Rmysql:mysql.
chown-Rmysql/usr/local/mysql
chgrp-Rmysql.
cpshare/mysql/mysql.server/etc/init.d/mysqld
chmod755/etc/init.d/mysqld
chkconfig--addmysqld
ln-s/usr/local/mysql/bin/mysqld_safe/usr/bin/mysqld_safe
ln-s/usr/local/mysql/share/mysql/mysql.server/usr/bin/mysqld
ln-s/usr/local/mysql/bin/mysql/usr/bin/mysql
ln-s/usr/local/mysql/bin/mysqldump/usr/bin/mysqldump
ln-s/usr/local/mysql/bin/mysqladmin/usr/bin/mysqladmin
ln-s/usr/local/mysql/lib/mysql/usr/lib/mysql
ln-s/usr/local/mysql/include/mysql/usr/include/mysql
echo"/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
ldconfig
cp/usr/local/mysql/share/mysql/my-huge.cnf/etc/my.cnf
問題:可能碰到的問題./configure後會報錯
/bin/rm:cannotremove`libtoolt':Nosuchfileordirectory
答案連接:http://holy2010.blog.51cto.com/1086044/448630
4、開啓mysql中ssl功能
登陸Mysql查看
mysql>showvariableslike'%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-p
mysql>showvariableslike'%ssl%';
+---------------+-------+
|Variable_name|Value|
+---------------+-------+
|have_openssl|YES|
|have_ssl|YES|
|ssl_ca||
|ssl_capath||
|ssl_cert||
|ssl_cipher||
|ssl_key||
+---------------+-------+
輸出結果顯示YES,如今ssl被完美啓動起來了。
5、經過openssl生成證書的配置:
在server服務器上生成ssl祕鑰
mkdir-p/etc/mysql/newcerts
cd/etc/mysql/newcerts
opensslgenrsa2048>ca-key.pem
opensslreq-new-x509-nodes-days1000-keyca-key.pem>ca-cert.pem
opensslreq-newkeyrsa:2048-days1000-nodes-keyoutserver-key.pem>server-req.pem
opensslx509-req-inserver-req.pem-days1000-CAca-cert.pem-CAkeyca-key.pem-set_serial01>server-cert.pem
opensslreq-newkeyrsa:2048-days1000-nodes-keyoutclient-key.pem>client-req.pem
opensslx509-req-inclient-req.pem-days1000-CAca-cert.pem-CAkeyca-key.pem-set_serial01>client-cert.pem
查看一下都生成了什麼文件
[root@puppetnewcerts]#ll/etc/mysql/newcerts
total64
-rw-r--r--1rootroot1541Mar816:36ca-cert.pem
-rw-r--r--1rootroot1675Mar816:33ca-key.pem
-rw-r--r--1rootroot1224Mar816:40client-cert.pem
-rw-r--r--1rootroot1679Mar816:40client-key.pem
-rw-r--r--1rootroot1082Mar816:40client-req.pem
-rw-r--r--1rootroot1224Mar816:39server-cert.pem
-rw-r--r--1rootroot1675Mar816:38server-key.pem
-rw-r--r--1rootroot1082Mar816:38server-req.pem
好了,祕鑰生成了,下面須要作的是把ca-cert.pem、client-cert.pem、andclient-key.pem拷貝到client服務器上,首先咱們在client服務器上建立一樣的文件夾。
mkdir-p/etc/mysql/newcerts
如今在主服務器上把祕鑰文件拷貝到client服務器上
scp/etc/mysql/newcerts/ca-cert.pem/etc/mysql/newcerts/client-cert.pem/etc/mysql/newcerts/client-key.pemroot@192.168.189.133:/etc/mysql/newcerts
繼續修改主服務器上的my.cnf
在原先上面添加ssl的地方添加證書路徑
ssl
ssl-ca=/etc/mysql/newcerts/ca-cert.pem
ssl-cert=/etc/mysql/newcerts/server-cert.pem
ssl-key=/etc/mysql/newcerts/server-key.pem
重啓主服務器的Mysql
進入數據庫爲client的IP端賦權select權限:
GRANTSELECTON*.*TO'test1'@'client_IP'IDENTIFIEDBY'111111'REQUIRESSL;
配置clinet端的my.cnf
[mysql]下面添加證書路徑
ssl-ca/etc/mysql/newcerts/ca-cert.pem
ssl-cert=/etc/mysql/newcerts/client-cert.pem
ssl-key=/etc/mysql/newcerts/client-key.pem
配置完成後,調用mysql程序運行\s或SHOWSTATUSLIKE'SSL%'命令,若是看到SSL:的信息行就說明是加密鏈接了。若是把SSL相關的配置寫進選項文件,則默認是加密鏈接的。也可用mysql程序的--skip-ssl選項取消加密鏈接。若是用命令行方式啓用加密鏈接能夠這樣寫:
mysql--ssl-ca=ca-cert.pem--ssl-cert=client-cert.pem--ssl-key=client-key.pem
如果對於windows系統的client的話
把服務器上的證書拷貝到Mysql所在的目錄下SSL_key,創建SSL_key目錄
my.ini中port=3306下面添加
ssl-ca="C:\wamp\mysql\SSL_key\ca-cert.pem"
ssl-cert="C:\wamp\mysql\SSL_key\client-cert.pem"
ssl-key="C:\wamp\mysql\SSL_key\client-key.pem"
重啓生效
也在服務端上爲windows賦權
GRANTSELECTON*.*TO'test1'@'windows_client_IP'IDENTIFIEDBY'111111'REQUIRESSL;
因爲是虛擬機的環境,本地這個windowsIP爲192.168.189.1而不是爲實際的IP192.168.7.82賦權
6、在client端測試是否能夠用證書登陸server端的數據否
mysql-h192.168.189.134-utest1-p
輸入密碼登陸成功
爲了證實證書是否起做用
你配置文件中把證書的路徑給去掉或則註釋掉
再進行登陸看是否登陸
結果是沒有證書登陸不上
配置完畢
修改待續~~~~
有個詭異的問題:
我又另外配置了一臺服務器可是生成證書後就是無效,客戶端只有ssl-key=client-cert.pem這項有用,並且詭異的是用原先機器生成的證書都是正常
本文出自「Holy」博客,請務必保留此出處http://holy2010.blog.51cto.com/1086044/509973