MariaDB 10.4.13添加ssl_crl导致读取授权数据包出错



我想在我的mariadb数据库中使用证书吊销列表,这样我就可以在吊销某些客户端的证书时拒绝他们。我使用openssl创建了一个证书颁发机构,使用根CA和中间CA对服务器和客户端证书进行签名(使用了本指南,还创建了crl(。

我在mariadb服务器设置中使用ca链证书(结合中间证书和根证书(,但当我添加ssl crl文件时,它显示在"读取授权数据包"处与服务器的连接丢失,使用Heidi Sql时,它表示根证书不受信任。我试着用中间证书替换ca链,但错误仍然存在。

有什么办法我能解决这个问题吗?我想在我的服务器中使用CRL,但这似乎是唯一的原因。

[编辑]当我使用systemctl status mariadb时,它会说[警告]中止与数据库的连接:"未连接"用户:"未经身份验证"主机:"localhost"(该连接在没有身份验证的情况下正常关闭(,并且通过我的windows pc上的HeidiSQL,它说证书不受信任。CRL只包含一个我用来测试的证书,而我正在使用另一个证书进行连接,这很好。我可以将openssl verify-check_crl与整个链和客户端证书一起使用,结果为OK,我的ssl版本是openssl 1.1.1g,2020年4月21日。

[编辑2]因此,使用前面提到的同一篇文章,我创建了一个证书颁发机构,但我没有使用根CA和中间CA,而是使用了中间CA的所有中间设置。然后,我创建了服务器证书和客户端证书,并将mariadb中的设置更改为使用这些证书。这现在起作用了,我可以在mariadb中撤销证书和FLUSH SSL,这样就可以在不重新启动服务器的情况下使用新的crl。问题是如何使它与证书链一起工作?

解决方案

由于我使用的是根CA和中间CA,所以我将它们连接到一个CA链证书中,并将其设置为ssl-CA。这是验证整个链所必需的,但对于crl选项,我只设置了中间crl。我尝试将根crl和中间crl合并到一个crl链文件中并设置它,结果成功了:(

我将尝试将根crl放入ca链证书中,看看我是否可以将crl设置为仅中间crl,因为再生中间crl也需要再生链,与根crl一样,但现在似乎解决了这个问题。