我正在寻找为我自己清除一些涉及到MYSQL的远程SSL连接的信息。特别是,一旦我有MYSQL设置来启用SSL并且拥有一个需要SSL的远程用户。
这是我与需要SSL的用户远程连接(命令行)到MYSQL的方式:
mysql -uMyUserName -p -h192.168.5.5 --ssl-ca /path/to/ca.pem
我的问题是:为什么我必须提供ca.pem文件作为客户端?
这些是我在服务器上安装mysql并设置远程访问(Ubuntu)的步骤:
1)获取我的证书颁发机构证书,数据库证书,数据库密钥
2)将以下行添加到[mysqld]
下的 /etc/mysql/my.cnfSSL-CA = /路径/到/ ca.pem
SSL证书= /路径/到/ dbcert.pem
SSL的密钥= /路径/到/ dbkey.pem
3)重启mysql并通过登录并输入以下内容确认ssl已启用:
显示'%ssl%'等变量;
1)在 /etc/mysql/my.cnf
中注释掉以下几行#绑定地址
#跳过网络
2)登录mysql并授予用户访问权限,在本例中为每个数据库
授予。对'USERNAME'的所有特权@'%''通过'密码'确认需要SSL
此时,我有MYSQL设置来启用SSL&&我有一个远程用户需要SSL才能登录。我能够登录远程命令行,但我需要指定--ssl-ca。
为什么我必须从客户端提供ssl-ca?有没有办法做到这一点,所以我没有?
我真的很感激这里的一些见解。
提前致谢。
答案 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?