默认情况下,mysql服务器在/var/mysql/lib中创建这6个证书:
-rw------- 1 mysql mysql 1676 Aug 3 00:16 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 Aug 3 00:16 ca.pem
-rw-r--r-- 1 mysql mysql 1112 Aug 3 00:16 client-cert.pem
-rw------- 1 mysql mysql 1676 Aug 3 00:16 client-key.pem
-rw------- 1 mysql mysql 1680 Aug 3 00:16 private_key.pem
-rw-r--r-- 1 mysql mysql 452 Aug 3 00:16 public_key.pem
-rw-r--r-- 1 root root 1172 Aug 6 12:20 server-cert.pem
-rw------- 1 mysql mysql 1676 Aug 3 00:16 server-key.pem正如https://dev.mysql.com/doc/mysql-security-excerpt/5.7/en/creating-ssl-rsa-files-using-mysql.html中提到的,public_key.pem和private_key.pem用于:
这些密钥对文件启用了安全的密码交换使用RSA通过未经加密的连接帐户认证的
sha256_password插件;
如果我正确理解,其他6个证书将用于相互tls验证。
我用DataGrip测试了它,有三个选项:Require、Verifa CA和Full Verification。(命令行接口,例如mysqlsh有相应的选项)
Require与证书无关,它像普通的https一样使用服务器启动tls加密。Verify CA验证从服务器/var/lib/ca.pem获得的ca.pem。Full Verification不仅是验证ca.pem的客户机,而且也是验证server-cert.pem和server-key.pem.的客户机(您需要为这项工作重新生成server-cert.pem。因为自动生成的server-cert.pem 's Subject:字段与服务器ip/域不匹配)
没有指定客户端证书和密钥的选项。那么,在客户机中证明client-key.pem和client-cert.pem有什么用途呢?我在mysql服务器中找不到像“验证客户端”这样的选项。所以这仅仅是一种方式验证和客户证书是完全无用的?我还是不明白。
发布于 2022-08-07 14:12:46
您肯定在文档中忽略了这一点:当您创建一个用户时,您可以指定各种TLS身份验证选项。例如,
CREATE USER 'rick'@'%' REQUIRE SUBJECT 'CN=Rick' AND ISSUER '...'https://dba.stackexchange.com/questions/315324
复制相似问题