以 unix 时间(或任何其他数字)格式获取证书到期日期

以 unix 时间(或任何其他数字)格式获取证书到期日期

需要将其与当前时间进行比较,以查看还剩多少。

我调查了这些问题,似乎有人在编写脚本,从 openssl 输出中获取文本中的日期/时间,并将其转换为某种形式以供比较(unix 时间戳)。我还了解到,证书本身包含 UTC 时区单位时间戳格式的日期。

那么,直接从证书中获取这些信息,而不是将其转换为人类可读的格式,然后再转换回数字,这样做有什么好处呢?

我在 openssl 应用程序中没有看到这样的选项。

有没有最简单的方法可以获取剩余的证书时间(比如说)秒数,而不会陷入如此混乱的状态,浪费时间和计算能力,并且需要可疑的可移植脚本?

编辑:感谢您的评论。我正在使用嵌入式平台(openwrt),没有浏览器,没有用户界面,只有命令行。证书只是本地存储的一组 .pem 文件。检查将使用脚本执行 - 结果将以二进制形式通过另一个通道发送以进行监控。

我可以这样做openssl x509 -in cert.pem -enddate -noout,然后解析文本,将其转换为数字等,但至少可以说它很丑陋。

答案1

-enddate默认以 rfc_822 标准输出,因此如果你剪切字符, GNUdate命令就可以读取它:notAfter=

$ openssl x509 -enddate -noout -in cert.pem | cut -c10- | date +%s -f -

1868282453

较新版本的 OpenSSL 支持按-dateopt iso_8601格式打印,至少可按字母顺序排序


OpenSSL 确实具有内置的过期秒数检查,但它是一个真/假输出:

$ openssl x509 -checkend 2592000 -noout -in cert.pem || echo "cert expires in 30 days!"

相关内容