前几天,我尝试为一名新员工生成一些 OpenVPN 密钥。程序与正常情况相同。几个月来,这方面没有任何变化。
在证书生成过程中我收到以下错误:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
entry 22: invalid expiry date
经过一番搜索,似乎没有明确的答案。有些网站提到了数据库文件索引.txtdefault_days
损坏。其他人说这与中的设置有关openssl.cnf
。其他网站建议这是一个 OpenSSL 错误。
有人有任何线索吗?
更新
经过进一步研究,我发现 OpenSSL 有一个错误,最后生成的证书的到期日期超过了 2050 年,因此索引.txt由于某种原因,增加了两个额外的数字,因此索引.txt似乎已损坏。我不知道如何修复它。
答案1
这是一个“2038 年问题”错误!似乎无法生成在 2038 年 1 月 19 日之后过期的 OpenVPN 证书。我使用的是 Ubuntu 10.04 和 OpenVPN 2.1.0。
答案2
我知道这是一个非常老的问题,但我自己也遇到了这个问题,花了很长时间才解决——希望这能对将来的某人有所帮助。此外,看到这仍然是谷歌搜索此错误时提供的第一个结果之一,似乎有必要在这里发布。
“entry 22” 指的是 CA 数据库文件的第 22 行 - 就您而言,这个文件听起来像是“index.txt”。我的错误是“entry 477”,它指的是我的 CA 数据库文件的第 477 行。
要解决此问题,只需手动修改数据库文件并使到期日期看起来正确即可。
对于我的 OpenSSL 数据库文件,第二列对应于到期时间,导致此错误的无效条目是“20160505000000Z”。与所有其他条目相比,此特定条目有 2 个额外的数字。这 2 个额外的数字是“2016”中的“20”。我手动将其更改为“160505000000Z”,然后此错误就消失了。
不确定它一开始是如何允许写入的,但这就是修复我的问题的方法。希望这对某些人有帮助。
答案3
我遇到了同样的问题,并且可以确认 openssl 0.9.8 存在 2038 年错误,手动更改 index.txt 中的时间“修复”了“无效到期日期”错误消息,但生成的证书的有效期直到 1902 年。
因此,您要么使用 openssl 1.0+,要么减少“天数”参数,例如在您的 openssl.cnf 中。