使用Stunnel为MySQL Server建立SSL隧道
笔者接手的一个项目有如下需求:
两台主机A和B,A上运行一个MySQL服务器和一套基于PHP的、以MySQL为数据库的CMS;B上除MySQL服务器外,其他皆与A相同。
要求B能安全地(通过SSL)连接A上的MySQL服务器,而这个CMS本身不支持MySQL over SSL
Stunnel可以提供一个安全的SSL隧道,理论上可以承载任何应用层协议——包括MySQL。
以下操作在A和B上执行
OpenSSL的目录需根据实际情况设置,Stunnel最高支持OpenSSL 1.1.1-dev
tar zxvf stunnel-5.44.tar.gz cd stunnel-5.44/ #编译安装至/opt/stunnel,配置文件存放于/etc/stunnel ./configure --prefix= --exec-prefix=/opt/stunnel --with-ssl=/opt/openssl-1.1.0g LDFLAGS="-Wl,--rpath=/opt/openssl-1.1.0g/lib -L/opt/openssl-1.1.0g/lib -lssl -lcrypto" make make install
建立systemd service文件/lib/systemd/system/stunnel.service,内容如下:
[Unit] Description=SSL tunnel daemons After=network.target After=syslog.target [Install] WantedBy=multi-user.target Alias=stunnel.target [Service] Type=forking ExecStart=/opt/stunnel/bin/stunnel /etc/stunnel/stunnel.conf ExecStop=/bin/kill -TERM $MAINPID ExecReload=/bin/kill -USR1 $MAINPID # Give up if ping don't get an answer TimeoutSec=600 Restart=always PrivateTmp=false
执行systemctl daemon-reload令更改生效
编辑A机(服务器端)的stunnel配置文件(/etc/stunnel/stunnel.conf,下同)
pid = /var/run/stunnel4/stunnel4.pid #只允许使用AES-GCM且具有前向安全性的加密套件 ciphers = ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256 #只允许使用TLS 1.2 options = NO_SSLv2 options = NO_SSLv3 options = NO_TLSv1 options = NO_TLSv1.1 options = CIPHER_SERVER_PREFERENCE options = DONT_INSERT_EMPTY_FRAGMENTS renegotiation = no [mysql] #SSL证书与私钥 cert = /path/to/cert_with_intermediate_CA.cer key = /path/to/private_key.key #SSL监听端口 accept = 6033 #MySQL监听地址及端口 connect = 127.0.0.1:3306
编辑B机的Stunnel配置文件
pid = /var/run/stunnel4/stunnel4.pid [mysql] #本地(明文)监听端口 accept = 127.0.0.1:3306 #远程(SSL)地址及端口 connect = {A_IP_ADDR}:6033 #使用客户端模式 client = yes
编辑完后,A机和B机分别执行systemctl restart stunnel4.service以重启Stunnel
测试:
在B机执行openssl sclient -crlf -connect {AIP_ADDR}:6033,若出现类似如下报文,则A机配置无问题。
j 5.5.5-10.0.31-MariaDB-0ubuntu0.16.04.2?J%wLÿ? UD6!Clu)iWY9mysql_native_password
可以在命令后添加-ssl3|-tls1|-tls1_1以测试是否确实禁用低版本SSL协议。
在B机执行telnet 127.0.0.1 3306,若返回类似报文,则B机配置也无问题。
此时,B机上的PHP程序,数据库连接部分保持与A机上的相同即可。
原文出处:hr98 -> https://hr98.xyz/mysql-stunnel/
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。