MYSQL 远程连接需要 SSL

MYSQL remote connection require SSL

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

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

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


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


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

为 MYSQL

启用 SSL 的步骤

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

2) 在[mysqld]

下的/etc/mysql/my.cnf中添加以下行

ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/dbcert.pem
ssl-key=/path/to/dbkey.pem

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

show variables like '%ssl%';



配置需要 SSL 的远程连接

1) 注释掉/etc/mysql/my.cnf

中的以下几行

#bind-address
#skip-networking

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

GRANT ALL PRIVILEGES ON . to 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' REQUIRE SSL


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

为什么我必须从客户端提供 ssl-ca?有没有办法让我不必这样做?

非常感谢您提供一些见解。

提前致谢。

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

当您使用 mysql 登录支持加密的 MySQL 服务器时,该服务器将向您提供证书的 public 部分。要完成安全握手,您的客户端需要验证服务器证书是否由受信任的证书颁发机构签署。否则,它将不得不说 "hey, this looks like a well-formed certificate, but I never heard of the ca signing it."

对于 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?