MySql SSL 配置 - 客户端部分

MySql SSL 配置 - 客户端部分

我正在尝试通过一些应用程序和我的数据库之间的 SSL 连接来保护我的工作。

第一次,我搜索如何创建证书,然后我做了类似的事情:

创建文件夹:

[...]$ mkdir certificats && cd certificats

加州:

[...]$ openssl genrsa 2048 > ca-key.pem

[...]$ openssl req -new -x509 -nodes -days 500 -key ca-key.pem > ca-cert.pem

服务器 :

[...]$ openssl req -newkey rsa:2048 -days 500 -nodes 
       -keyout server-key.pem > server-req.pem

[...]$ openssl x509 -req -in server-req.pem -days 500
       -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

客户 :

[...]$ openssl req -newkey rsa:2048 -days 500 -nodes 
       -keyout client-key.pem > client-req.pem

[...]$ openssl x509 -req -in client-req.pem -days 500 -CA ca-cert.pem 
       -CAkey ca-key.pem -set_serial 01 > client-cert.pem

我对所有提出的问题都是这样的回答:除了“通用名称”之外,对这三个文件的答案相同(我看到某处说这可能会导致问题)。

服务器配置:

之后,我这样做了:

[...]$ vim /etc/my.cnf

添加以下规则(在[mysqld]上):

ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem
ssl-cert=/etc/ssl/certs_mysql/server-cert.pem
ssl-key=/etc/ssl/certs_mysql/server-key.pem

现在,当我登录普通帐户时,我可以看到使用

SHOW VARIABLES LIKE '%ssl%';

已启用 SSL。(参见 3 条路径 + 2 条‘是’)

联系 :

所以现在,为了连接,我必须使用:

[...]$ mysql -u user -ppassword -h localhost --ssl-ca=ca-cert.pem 
             --ssl-key=client-key.pem --ssl-cert=client-cert.pem

对吗?(用户处于‘REQUIRE SSL’模式)。

但效果不太好:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

如果我从连接中删除“ca-cert.pem”,那么这个工作就“很好”。我可以连接,当我写“\s”时,我可以看到“Ssl_cipher”带有类似“xxx-xxx-AES264-xxx”的内容。

因此,我尝试添加:

[client]

ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem
ssl-cert=/etc/ssl/certs_mysql/client-cert.pem
ssl-key=/etc/ssl/certs_mysql/client-key.pem

但是当我在“客户端”部分添加“ssl-x”时,mysql 停止但不会重新启动使用

[...]$ service mysqld restart

为什么我不能写在客户端部分 ssl 配置?

我尝试使用 PHP 文件连接到我的数据库,当我使用这 3 个文件时,连接被拒绝,但如果我只使用“client-key.pem”和“client-cert.pem”,我就可以连接。

我在某处看到过比使用

[...]$ cat client-cert.pem server-cert.pem > ca-cert.pem

可以解决问题,但是使用的 ca-cert 包含 2 个证书吗?

所以我认为问题出在 ca-cert.pem 上?它无法识别为“真实证书”,因此连接被拒绝?但为什么我不能使用 [client]?

提前感谢你的回答

答案1

虽然这不是一个完整的答案,但作为评论发布还是有点太长了。但如果我们得到这些信息,我们就可以更进一步。所以下面是:

为了解决 SSL 问题,我想先将 mysql 排除在外。因此,首先仅使用 SSL 进行连接,如下所示:

openssl s_client -connect localhost:MYSQLPORTNR -cert client.pem -key client-key.pem -CAfile ca-cert.pem 

其中 MYSQLPORTNR 当然应该替换为您运行 mysql 的端口号。然后将其输出添加到您的帖子中。

相关内容