mysql建立ssl安全連線的配置
mysql建立ssl安全連線的配置
1、環境、IP、安裝包:
centOS 5.4
虛擬機器了兩臺伺服器
mysql-5.1.48.tar.gz
openssl-0.9.8b.tar.gz
server:192.168.189.134
client:192.168.189.133
windows_client:192.168.6.82(本地電腦IP)
2、安裝openssl
mkdir /test/setup
cd /test/setup
tar zxvf openssl-0.9.8b.tar.gz
cd openssl-0.9.8b
./config
make && make install
3、安裝mysql
cd /test/setup
tar zxvf mysql-5.1.48.tar.gz
cd mysql-5.1.48
./configure –prefix=/usr/local/mysql –with-ssl –with-vio
make && make install
useradd mysql
cd /usr/local/mysql
bin/mysql_install_db –user=mysql
chown -R mysql:mysql .
chown -R mysql /usr/local/mysql
chgrp -R mysql .
cp share/mysql/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig –add mysqld
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: cannot remove `libtoolt`: No such file or directory
答案連結:http://holy2010.blog.51cto.com/1086044/448630
4、開啟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 -p
mysql> show variables like `%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
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
檢視一下都生成了什麼檔案
[root@puppet newcerts]# ll /etc/mysql/newcerts
total 64
-rw-r–r– 1 root root 1541 Mar 8 16:36 ca-cert.pem
-rw-r–r– 1 root root 1675 Mar 8 16:33 ca-key.pem
-rw-r–r– 1 root root 1224 Mar 8 16:40 client-cert.pem
-rw-r–r– 1 root root 1679 Mar 8 16:40 client-key.pem
-rw-r–r– 1 root root 1082 Mar 8 16:40 client-req.pem
-rw-r–r– 1 root root 1224 Mar 8 16:39 server-cert.pem
-rw-r–r– 1 root root 1675 Mar 8 16:38 server-key.pem
-rw-r–r– 1 root root 1082 Mar 8 16:38 server-req.pem
好了,祕鑰生成了,下面需要做的是把ca-cert.pem、client-cert.pem、and client-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.pem root@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許可權:
GRANT SELECT ON *.* TO `test1`@`client_IP` IDENTIFIED BY `111111` REQUIRE SSL;
配置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或SHOW STATUS LIKE `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:wampmysqlSSL_keyca-cert.pem”
ssl-cert=”C:wampmysqlSSL_keyclient-cert.pem”
ssl-key=”C:wampmysqlSSL_keyclient-key.pem”
重啟生效
也在服務端上為windows賦權
GRANT SELECT ON *.* TO `test1`@`windows_client_IP` IDENTIFIED BY `111111` REQUIRE SSL;
由於是虛擬機器的環境,本地這個windowsIP為192.168.189.1 而不是為實際的IP192.168.7.82賦權
6、在client端測試是否可以用證書登入server端的資料否
mysql -h192.168.189.134 -utest1 -p
輸入密碼登入成功
為了證明證書是否起作用
你配置檔案中把證書的路徑給去掉或則註釋掉
再進行登入看是否登入
結果是沒有證書登入不上
配置完畢
修改待續~~~~
有個詭異的問題:
我又另外配置了一臺伺服器但是生成證書後就是無效,客戶端只有ssl-key=client-cert.pem這項有用,而且詭異的是 用原先機器生成的證書都是正常
本文轉自 holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/509973
相關文章
- MySQL 5.7配置SSL連線MySql
- 安全連線方式ssl(轉)
- centos無法建立ssl連線CentOS
- MySQL SSL連線問題MySql
- mysql之使用SSL連線MySql
- 轉-配置openldap使用SSL連線LDA
- SSL連線建立過程分析(1)
- mysql5.7 ssl加密連線MySql加密
- SSL連線,搭建網路安全道路
- FreeBSD安全連線方式SSL(轉)
- 06 建立MySQL連線MySql
- MySQL 使用 SSL 連線(附 Docker 例子)MySqlDocker
- 使用 ProxySQL 改進 MySQL SSL 的連線效能MySql
- 使用AndroidSocketClient庫建立SSL安全連結Androidclient
- Netty 實現SSL安全連線(wss://)Netty
- 使用wget提示無法建立SSL連線wget
- 技術分享 | MySQL : SSL 連線淺析MySql
- JPA配置mysql連線MySql
- MySQL安全配置基線MySql
- wget下載提示:無法建立SSL連線wget
- 關於weget “無法建立SSL連線”的解決方法
- 基於 Apaache 的 laravel-websocket SSL配置(wss連線)LaravelWeb
- Loopback 4配置連線MySQLOOPMySql
- MYSQL遠端連線配置MySql
- 配置 MySQL 遠端連線MySql
- MYSQL配置遠端連線MySql
- 配置SQL Developer連線MySQL的方法DeveloperMySql
- Akka-CQRS(10)- gRPC on SSL/TLS 安全連線RPCTLS
- raw.githubusercontent.com 無法建立 SSL 連線Github
- 配置postfix和dovecot啟用SSL以加密連線加密
- ECMall如何支援SSL連線郵件伺服器的配置伺服器
- 通過驅動建立與MySQL的連線MySql
- 執行wget命令,出錯:無法建立 SSL 連線。wget
- proxool連線池如何使用SSL方式連線?
- 配置 MySQL 允許遠端連線的方法MySql
- 配置mysql允許遠端連線的方法MySql
- 配置Oracle DBlink連線MySQL庫OracleMySql
- linux下配置ODBC連線MySqlLinuxMySql