将我们的 OpenVPN 服务器从 Debian Buster 升级到 Bookworm 之后,OpenVPN 也从 2.4.7 升级到 2.6.3,现在当任何客户端尝试连接时,我们都会收到此信息:
error=CA signature digest algorithm too weak
我搜索过这个错误,并找到了常见的解决方法,比如添加tls-cipher "DEFAULT:@SECLEVEL=0"
到配置中(我们暂时这样做,但降低安全性并不是永久的解决方案)。额外的谷歌搜索似乎一致表明使用过时的算法来生成证书(如 MD5 或 SHA1),但这似乎不是这种情况。当我查看我们的 CA、服务器和客户端证书时,它们都包含以下内容:
Signature Algorithm: sha256WithRSAEncryption
看起来我们已经在使用 SHA256,而且我们的证书很好。所以我对这个错误感到非常困惑,不知道接下来该怎么办。我知道我可能只需要生成新证书(我们有几十个连接的客户端端点,所以不太理想)。而且,这并不能告诉我潜在的实际问题是什么。
这是一个非常原始的 Debian 系统,安装了 OpenSSL 3.0.13。
答案1
我实际上在发布问题时就已经想到了这一点,但我想将其保留在这里(并写出答案),以防其他人遇到同样的问题并希望得到一些解决方案。
我曾提到,CA、服务器和客户端证书都使用 SHA256 加密,效果良好。但仔细检查后发现并非如此。客户端证书有以下内容:
Signature Algorithm: sha1WithRSAEncryption
...查看证书时。错误消息明确指出了 CA,而不是服务器或客户端证书,所以这就是我遇到的问题。问题在于生成客户端证书的方式,他们使用的是 SHA1,但 CA 和服务器证书确实是 SHA256。由于它发生在客户端连接时(但在服务器日志中),我决定检查客户端证书,这就是问题所在。
因此,尽管有许多客户端,但解决方案似乎是重新生成并重新分发客户端证书。因此,我们暂时保留此解决方法,直到我们能够覆盖所有客户端,然后在所有客户端升级后将其删除。