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

MariaDB 10.4.13 adding ssl_crl causes error reading authorization packet

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

我在 mariadb 服务器设置中使用了 ca-chain 证书(结合了中间证书和根证书)但是当我添加 ssl-crl 文件时,它显示与服务器的连接丢失 'reading authorisation packet',并使用 Heidi Sql 表示根证书不受信任。我尝试用中间证书替换 ca-chain,但错误仍然存​​在。

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

[编辑] 当我使用 systemctl status mariadb 时,它显示 [Warning] Aborted connection to db: 'unconnected' user: 'unauthenticated' host: 'localhost' (This connection closed normally without authentication),并通过我的 HeidiSQL windows pc,它说证书不受信任。 CRL 仅包含我用于测试的证书,我使用不同的证书进行连接,效果很好。我可以对整个链和客户端证书使用 openssl verify -check_crl,结果正常,我的 ssl 版本是 OpenSSL 1.1.1g,2020 年 4 月 21 日。

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

解决方案

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

我将尝试将根 crl 放入 ca-chain 证书中,看看我是否可以将 crl 设置为仅中间 crl,因为重新生成中间 crl 也需要重新生成链,与根 crl 相同,但这现在似乎已经解决了。