如何从 PEM 编码证书中确定 SSL 证书到期日期?

新手上路,请多包涵

如果我在 Mac 或 Linux 中有实际文件和 Bash shell,我如何查询证书文件何时到期?不是网站,而是证书文件本身,假设我有 csr、key、pem 和链文件。

原文由 GL2014 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

使用 openssl

 openssl x509 -enddate -noout -in file.pem

输出形式为:

 notAfter=Nov  3 22:23:50 2014 GMT

另请参阅 MikeW 的回答,了解如何轻松检查证书是否已过期,或者是否会在特定时间段内,而无需解析上述日期。

原文由 that other guy 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您只想知道证书是否已过期(或将在接下来的 N 秒内过期),则 — 的 openssl x509 -checkend <seconds> 选项会告诉您:

 if openssl x509 -checkend 86400 -noout -in file.pem
then
  echo "Certificate is good for another day!"
else
  echo "Certificate has expired or will do so within 24 hours!"
  echo "(or is invalid/not found)"
fi

这样就不必自己进行日期/时间比较。

openssl 将返回退出代码 0 (零),如果证书尚未过期并且在接下来的 86400 秒内不会过期,在上面的示例中。如果证书已经过期或已经过期 - 或其他错误,如无效/不存在的文件 - 返回码是 1

(当然,它假设时间/日期设置正确)

请注意,旧版本的 openssl 有一个错误,这意味着如果 checkend 中指定的时间太大,将始终返回 0 ( https://github.com/openssl/openssl/issues/6180 ) .

原文由 MikeW 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏