【发布时间】:2014-05-20 14:33:03
【问题描述】:
简而言之 - 尝试使用主机 'b' 上的 sql 命令行界面通过开放式 SSL 加密连接通过 Internet 连接到主机 'a' 上的 mysql 服务器,连接尝试无限期挂起。当在同一台机器之间尝试非 SSL 连接时,连接通常会成功。
操作系统
服务器是CentOS 6.4版
客户端是CentOS 6.5版
SSL
在服务器上 -
$ openssl version
OpenSSL 1.0.0-fips 29 Mar 2010
在客户端 -
$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
双方的证书都是按照http://dev.mysql.com/doc/refman/5.1/en/creating-ssl-certs.html的示例1中的说明自行生成的,除了“rsa:2048 -days 3600”,我将其更改为“rsa:3072 -days 3653”。
MYSQL
通过从客户端机器到服务器的非加密连接,我得到以下信息 -
Server version: 5.1.69-log Source distribution
SSL: Not in use
TCP port: 3306
mysql> show variables like '%ssl%';
+---------------+-------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/ssl/certs/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/ssl/certs/server-cert.pem |
| ssl_cipher | {truncated for readability} |
| ssl_key | /etc/ssl/certs/server-key.pem |
+---------------+-------------------------------------+
7 rows in set (0.08 sec)
[我已经截断了上述转储中的 ssl-cipher 行,因为密码列表占用了几行输出。]
服务器在没有“--ssl*”命令行参数的情况下启动,但my.cnf 中存在相应的行。
cli 被调用为 -
mysql --ssl-ca=/etc/ssl/certs/ca-cert.pem --ssl-cert=/etc/ssl/certs/client-cert.pem --ssl-key=/etc/ssl/certs/client-key.pem -u "$DBUSER" -p"$DBPW" -h "$DBSERVER" $DBNAME
客户端版本是-
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
我检查了网络路由和防火墙问题,据我所知,没有一个防火墙、iplist 策略或路由器拒绝任何数据包。此外,在加密和非加密情况下,netstat 将连接显示为“ESTABLISHED”,因此问题似乎不在网络级别。
我认为我的 ssl 配置一定有问题,但我不知道是什么。
任何帮助表示赞赏!
【问题讨论】:
-
你确定端口是开放的吗? SSL 和非 SSL 通常是不同的端口。您可能可以运行一个 nbstat 来查看它是否正在尝试(或者它正在走多远)
-
是的,网络工程师验证了这一点。他说无论是否加密,两者都通过端口 3306 进入,并且没有被阻止。
标签: mysql openssl connection