接下来,我们需要更改远程用户的要求。 我们需要应用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.pemssl-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