我正在尝试通过一些应用程序和我的数据库之间的 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 的端口号。然后将其输出添加到您的帖子中。