解析日期以计算从shell脚本到证书到期的天数

我想获得证书到期前的天数。使用 openssl 可以轻松提取日期

> cat cert | openssl x509 -noout -enddate
notAfter=Jun  8 17:07:09 2021 GMT

不幸的是,解析日期Jun 8 17:07:09 2021 GMT并找到直到今天的日子并不是那么简单。目标是拥有

> cat cert | openssl x509 -noout -enddate | ...some commands...
15

这意味着距离证书到期还有 15 天。

我知道 openssl-checkend选项,但这只是一个布尔值,我想要天数。

回答

您可以使用这个单行 shell 脚本:

expiryDays=$(( ($(date -d "$(openssl x509 -in cert -enddate -noout | cut -d= -f2)" '+%s') - $(date '+%s')) / 86400 ))

这是分手:

  • openssl ...命令以notAfter=...格式打印到期日期
  • cut -d= -f2 在之后获取文本 =
  • date -d ...'+%s'`: 获取到期日的 EPOCH 秒值
  • date '+%s': 获取今天日期的 EPOCH 秒值
  • (epochExpiry - epochToday) / 86400:获得 2 个 EPOCH 值的差异作为天数

以上是解析日期以计算从shell脚本到证书到期的天数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>