首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

使用 Stunnel 為 MySQL 連線加密傳輸實戰教學

     編輯:MySQL 資料庫相關知識

前言

因業務需求,需對 MySQL 通訊進行 SSL 加密。本文記錄在 Server 端與 Client 端部署 Stunnel 實現 MySQL 連線加密的完整流程,包含憑證生成、配置檔編寫、防火牆設定與驗證測試。

一、伺服器端部署

1. 安裝與配置 MySQL

# 安裝
yum install mysql-server mysql

# 啟動並授權遠程存取
mysql -uroot
grant all privileges on *.* to root@'172.31.12.139' identified by "passwordformysql";

2. 安裝 Stunnel 並生成憑證

# 安裝
yum install stunnel

# 生成自簽名憑證(有效期 10 年)
cd /etc/stunnel
openssl req -x509 -nodes -days 36500 -newkey rsa:1024 -keyout stunnel.pem -out stunnel.pem

參數說明:

  • req:PKCS#10 憑證請求與生成工具
  • -x509:生成自簽名憑證而非請求檔
  • -days:憑證有效天數
  • -nodes:不加密私鑰

3. 編輯 Stunnel 配置檔

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          # 對外監聽端口
connect = 3306         # 實際 MySQL 服務端口

4. 啟動 Stunnel 並驗證

# 啟動
stunnel

# 檢查監聽端口
netstat -npl

# 防火牆規則(僅允許特定 IP 存取 3309)
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 172.31.12.139 -p tcp --dport 3309 -j ACCEPT

二、客戶端部署

1. 安裝 MySQL 客戶端工具

yum install mysql

2. 配置 Stunnel 客戶端

將伺服器端生成的 stunnel.pem 複製至客戶端 /etc/stunnel/ 目錄。

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 與端口

3. 啟動與測試

# 啟動客戶端 stunnel
stunnel

# 連線測試(連接本地 3309,經由 stunnel 加密轉發至伺服器)
mysql -h 127.0.0.1 -uroot -p -P 3309

三、驗證加密生效

查看雙端日誌,出現 SSL connected / SSL accepted 即代表通訊已加密:

客戶端日誌

2010.09.02 14:04:27 LOG6[1852]: SSL connected: previous session reused

伺服器端日誌

2010.09.02 13:58:18 LOG6[22948]: SSL accepted: previous session reused
2010.09.02 13:58:18 LOG7[22948]: MySQLs1 connecting 127.0.0.1:3306

日誌確認 MySQL 客戶端與伺服器端通訊已通過 SSL 加密傳輸。

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