MYSQL远程连接需要SSL

4
I'm seeking to clear some information up for myself involving remote SSL connections to MYSQL. Particularly, once I have MYSQL setup to enable SSL and have a remote user that requires SSL.
This is how I connect (commandline), remotely, to MYSQL with a user that requires SSL:
mysql -uMyUserName -p -h192.168.5.5 --ssl-ca /path/to/ca.pem
My question is: Why do I have to provide the ca.pem file as the client?
These are the steps I took to install mysql on the server and setup remote access (Ubuntu):
Steps to Enable SSL for MYSQL
1) Obtain my Certificate Authority cert, Database cert, Database key
ca.pem (Certificate Authority cert) dbcert.pem (Database cert) dbkey.pem (Databse key)
2) Add the following lines to /etc/mysql/my.cnf under [mysqld]
ssl-ca=/path/to/ca.pem ssl-cert=/path/to/dbcert.pem ssl-key=/path/to/dbkey.pem

enter image description here

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

show variables like '%ssl%';


enter image description here


配置需要SSL的远程连接

1) 在/etc/mysql/my.cnf中注释掉以下行:

#bind-address
#skip-networking

2) 登录到mysql并授予用户访问所有数据库的权限,例如:

GRANT ALL PRIVILEGES ON . to '用户名'@'%' IDENTIFIED BY '密码' REQUIRE SSL


在这一点上,我已经设置了MYSQL以启用SSL,并且我有一个需要SSL登录的远程用户。我能够在远程命令行上登录,但我需要指定--ssl-ca。 为什么我必须从客户端提供ssl-ca?有没有办法不这样做? 我真的很希望在这里得到一些见解。
提前致谢。
1个回答

4
与常见的网络浏览器不同,像mysql这样的命令行工具没有内置的证书颁发机构列表。浏览器带有内置的认证机构列表,您会默认信任它们(无论您是否知道)。当您使用mysql登录支持加密的MySQL服务器时,该服务器将向您提供证书的公共部分。为了完成安全握手,您的客户端需要验证服务器证书是否由受信任的证书颁发机构签名。否则,它将必须说“嘿,这看起来像一个格式良好的证书,但我从未听说过签署它的证书颁发机构。”对于Hibernate/JDBC/TLS,一些搜索引擎的工作可以找到一些有用的建议。关键是在您的配置中设置正确的属性。http://razorsql.com/articles/mysql_ssl_jdbc.html如何配置Hibernate使用SSL与DB服务器进行通信?

这对我来说完全有意义。我将把它标记为被接受的答案。这引出了我的后续问题,即如何使用Hibernate从Java协商远程连接。我不确定您是否能在这方面帮助我,或者我是否应该重新发布它,但我正在尝试通过Java进行远程连接(需要SSL)。然而,我找不到如何为Hibernate配置提供证书颁发机构的方法... - jlents

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接