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) 获取我的证书颁发机构证书、数据库证书、数据库密钥
- ca.pem(证书颁发机构证书)
- dbcert.pem(数据库证书)
- dbkey.pem(数据库键)
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?
我正在为自己清理一些涉及到 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) 获取我的证书颁发机构证书、数据库证书、数据库密钥
- ca.pem(证书颁发机构证书)
- dbcert.pem(数据库证书)
- dbkey.pem(数据库键)
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?