如何在Ubuntu 18.04上为MySQL配置SSL/TLS(4)

接下来,我们需要更改远程用户的要求。 我们需要应用REQUIRE X509而不是REQUIRE SSL 。这意味着前一个要求提供的所有安全性,但另外要求连接客户端提供由MySQL服务器信任的证书颁发机构签名的证书。

要调整用户要求,请使用ALTER USER命令:

ALTER USER 'remote_user'@'mysql_client_IP' REQUIRE X509;

刷新更改以应用它们:

FLUSH PRIVILEGES;

完成后退出到shell:

exit

接下来,我们可以测试以确保我们仍然可以连接。

连接时测试证书验证

现在是检查我们是否可以在连接时验证双方的好时机。

MySQL客户端上,首先尝试连接而不提供客户端证书:

mysql -u remote_user -p -h mysql_server_IP ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_client_IP' (using password: YES)

如果不提供客户端证书,服务器将拒绝连接。

现在,使用--ssl-ca,--ssl-cert和--ssl-key选项连接以指向\~/client-ssl目录中的相关文件::

mysql -u remote_user -p -h mysql_server_IP --ssl-ca=~/client-ssl/ca.pem --ssl-cert=~/client-ssl/client-cert.pem --ssl-key=~/client-ssl/client-key.pem

您应该已成功登录。重新登录以重新获得对shell会话的访问权限:

exit

现在我们已经确认了对服务器的访问,我们可以实现小的可用性改进。

创建MySQL客户端配置文件

为避免每次连接时都必须指定证书文件,我们可以创建一个简单的MySQL客户端配置文件。

MySQL客户端计算机上的主目录中,创建一个名为nano ~/.my.cnf的隐藏文件:

nano ~/.my.cnf

在文件的顶部,创建一个名为[client]的部分。下面,我们可以设置ssl-ca,ssl-cert和ssl-key选项指向我们从服务器复制的文件。它如下所示:

[client] ssl-ca = ~/client-ssl/ca.pem ssl-cert = ~/client-ssl/client-cert.pem ssl-key = ~/client-ssl/client-key.pem

ssl-ca选项告诉客户端验证MySQL服务器提供的证书是否由我们指向的证书颁发机构签名。这允许客户端相信它正在连接到受信任的MySQL服务器。

ssl-cert和ssl-key选项指向向MySQL服务器证明它也具有由相同证书颁发机构签名的证书所需的文件。如果我们希望MySQL服务器验证客户端也被CA信任,我们需要这个。

完成后保存并关闭文件。

现在,你可以连接到MySQL服务器,而无需在命令行添加--ssl-ca,--ssl-cert和--ssl-key选项:

mysql -u remote_user -p -h mysql_server_ip

您的客户端和服务器现在应该在协商连接时都提供证书。每一方都配置为根据其本地CA证书验证远程证书。

总结

您的MySQL服务器现在配置为需要来自远程客户端的安全连接。此外,如果您按照以下步骤使用证书颁发机构验证连接,则双方将建立某种程度的信任,即远程方是合法的。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9fa643eecc4883dcd7c0c38def3e98b8.html