因工作需要 需做個stunnel加密測試:
Stunnel 通信加密的測試:
在server端和clIEnt端 都運行stunnel程序,對MySQL進行加密模擬
部署:
Server端
1. 安裝和配置 MySQL:
1.1. 安裝
yum install mysql-server MySQL
2.2 配置MySQL
MySQL –uroot
授權172.31.12.139主機遠程登錄MySQL使用root帳號
mysql> grant all privileges on *.* to [email protected] identifIEd by "passWordforMySQL";
Query OK, 0 rows affected (0.01 sec)
ht syntax to use near 'database' at line 1
MySQL> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| MySQL |
+--------------------+
2 rows in set (0.00 sec)
2. stunnel配置
2.1使用yum或者rpm包安裝stunnel
2.2 配置:
生成證書:
cd /etc/stunnel
下面生成一個自簽名的證書
openssl req -x509 -nodes -days 36500 -newkey rsa:1024 -keyout stunnel.pem -out stunnel.pem
上述生成一有效期為10年 名字為stunnel.pem的證書。
注釋 :req 是 PKCS#10 證書請求和證書生成工具 ,req 命令主要是建立和處理證書請求(以 PKCS#10 格式的)。它可以建立 self-signed 證書,這樣一個證書就是一個根證書
注釋 :-x509 表示生成一個自簽名的證書,而不是一個證書請求。
注釋 :-days 和 -x509 選項一起用,表示證書的有效期,默認是 30 天
編輯配置文件 stunnel.conf
vi /etc/stunnel/stunnel.conf
cert = /etc/stunnel/stunnel.pem #證書
setuid = nobody
setgid = nobody
pid = /tmp/stunnel.pid
debug = 7
output = /var/log/stunnel.log 日志輸出
[MySQLs] #名字任意 只要好記即可。
accept = 3309 # accept服務器端監聽外部鏈接的端口
connect = 3306 # connect服務器端真實服務使用的端口,比如 MySQL是3306. apache默認是80
3. 啟動stunnel
3.1在命令行輸入 stunnel:
表明stunnel已經對MySQL進行ssl加密
3.2 檢查使用netstat -npl
3.3 防火牆規則:
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 172.31.12.139 -p tcp -m tcp --dport 3309 -j ACCEPT
查看stunnel日志
客戶端:
1. 安裝MySQL工具:
yum install MySQL
2. stunnel配置
2.1使用yum或者rpm包安裝stunnel
2.2 配置:
客戶端需要使用服務器端的生成的stunnel.pem直接復制過來即可。
編輯客戶端配置文件 stunnel.conf
vi /etc/stunnel/stunnel.conf
cert =/etc/stunnel/stunnel.pem
pid = /tmp/stunnel.pid
setuid = nobody
setgid = nobody
debug=7
output=/var/log/stunnel.log
clIEnt = yes #客戶端需要打開
[MySQLs]
accept = 3309 本地端口
connect = 172.31.12.198:3309 鏈接服務器的ip地址以及端口
2.3 啟動stunnel
在命令行輸入 stunel
查看客戶端stunnel日志
查看進程監聽
登錄測試
[root@server1 stunnel]# MySQL -h 127.0.0.1 -uroot -p -P 3309
Enter passWord:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
MySQL>
客戶端 stunnel日志:
2010.09.02 14:04:27 LOG7[1852:3086244752]: 0 server connects (SSL_accept())2010.09.02 14:04:27 LOG7[1852:3086244752]: 0 server connects that finished
2010.09.02 14:04:27 LOG7[1852:3086244752]: 0 server renegotiations requested
2010.09.02 14:04:27 LOG7[1852:3086244752]: 7 session cache hits
2010.09.02 14:04:27 LOG7[1852:3086244752]: 0 session cache misses
2010.09.02 14:04:27 LOG7[1852:3086244752]: 0 session cache timeouts
2010.09.02 14:04:27 LOG6[1852:3086244752]: SSL connected: previous session reused
在服務器端 stunnel日志:
2010.09.02 13:58:18 LOG7[22948:1107257664]: 8 server connects that finished
2010.09.02 13:58:18 LOG7[22948:1107257664]: 0 server renegotiations requested
2010.09.02 13:58:18 LOG7[22948:1107257664]: 7 session cache hits
2010.09.02 13:58:18 LOG7[22948:1107257664]: 0 session cache misses
2010.09.02 13:58:18 LOG7[22948:1107257664]: 0 session cache timeouts
2010.09.02 13:58:18 LOG6[22948:1107257664]: SSL accepted: previous session reused
2010.09.02 13:58:18 LOG7[22948:1107257664]: FD 8 in non-blocking mode
2010.09.02 13:58:18 LOG7[22948:1107257664]: MySQLs1 connecting 127.0.0.1:3306
2010.09.02 13:58:18 LOG7[22948:1107257664]: connect_wait: waiting 10 seconds
2010.09.02 13:58:18 LOG7[22948:1107257664]: connect_wait: connected
2010.09.02 13:58:18 LOG7[22948:1107257664]: Remote FD=8 initialized
查看log表明MySQL客戶端與服務器端的通信已經過ssl加密。