MYSQL远程连接需要SSL

时间:2015-09-03 13:54:06

标签: mysql ssl remote-access

我正在寻找为我自己清除一些涉及到MYSQL的远程SSL连接的信息。特别是,一旦我有MYSQL设置来启用SSL并且拥有一个需要SSL的远程用户。

这是我与需要SSL的用户远程连接(命令行)到MYSQL的方式:

  

mysql -uMyUserName -p -h192.168.5.5 --ssl-ca /path/to/ca.pem


我的问题是:为什么我必须提供ca.pem文件作为客户端?


这些是我在服务器上安装mysql并设置远程访问(Ubuntu)的步骤:

为MYSQL启用SSL的步骤

1)获取我的证书颁发机构证书,数据库证书,数据库密钥

  • ca.pem(证书颁发机构证书)
  • dbcert.pem(数据库证书)
  • dbkey.pem(数据库密钥)

2)将以下行添加到[mysqld]

下的 /etc/mysql/my.cnf
  

SSL-CA = /路径/到/ ca.pem
  SSL证书= /路径/到/ dbcert.pem
  SSL的密钥= /路径/到/ dbkey.pem

enter image description here

3)重启mysql并通过登录并输入以下内容确认ssl已启用:

  

显示'%ssl%'等变量;


enter image description here


配置需要SSL的远程连接

1)在 /etc/mysql/my.cnf

中注释掉以下几行
  

#绑定地址
  #跳过网络

2)登录mysql并授予用户访问权限,在本例中为每个数据库

  

授予对'USERNAME'的所有特权@'%''通过'密码'确认需要SSL


此时,我有MYSQL设置来启用SSL&&我有一个远程用户需要SSL才能登录。我能够登录远程命令行,但我需要指定--ssl-ca。

为什么我必须从客户端提供ssl-ca?有没有办法做到这一点,所以我没有?

我真的很感激这里的一些见解。

提前致谢。

1 个答案:

答案 0 :(得分:4)

与典型的网络浏览器不同,mysql等命令行工具没有内置的证书颁发机构列表。浏览器附带一个内置的证书颁发机构列表,您隐含地信任它们(无论您是否知道)。

当您使用mysql登录支持加密的MySQL服务器时,该服务器将向您显示证书的公共部分。要完成安全握手,您的客户端需要验证服务器证书是否由受信任的证书颁发机构签名。否则,它将不得不说"嘿,这看起来像一个格式良好的证书,但我从来没有听说过ca签署它。"

对于Hibernate / JDBC / TLS,一些搜索引擎工作提出了一些有用的建议。这一切都与在配置中设置正确的属性有关。

http://razorsql.com/articles/mysql_ssl_jdbc.html

How can I configure Hibernate to use SSL to talk to the DB server?