MYSQL远程连接需要SSL

标签 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) 获取我的证书颁发机构证书、数据库证书、数据库 key

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

2) 在[mysqld]下的/etc/mysql/my.cnf中添加以下行

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 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' REQUIRE SSL


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

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

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

提前致谢。

最佳答案

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

当您使用mysql 登录支持加密的MySQL 服务器时,该服务器将向您出示证书的公共(public)部分。要完成安全握手,您的客户端需要验证服务器证书是否由受信任的证书颁发机构签署。否则,它将不得不说“嘿,这看起来像是一个格式正确的证书,但我从未听说过 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?

关于MYSQL远程连接需要SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32377644/

相关文章:

使用带有 SSL 的 ODBC (5.1) 的 MySQL 连接

perl - LWP::UserAgent 无法使用 TLS1.1 发布

macos - Visual Studio 中的 Apache Cordova 无法连接 Mac(远程构建服务器)

java - 在单个语句中在 java 中执行的多个查询

mysql - Rails 迁移错误 - SQLite 数据库无法删除或添加列

apache - 您如何避免必须为停放域提供第二个 SSL 证书?

windows - 从远程机器(不是容器主机)建立到 Windows docker 容器的 PSSession

html - 从台式机上的外部服务器播放本地HTML5音频

php - mySQL - 增加页面浏览量的更快方法?

mysql - 错误 1005(105) 无法创建表...但为什么呢?