首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据PEM编码的证书确定SSL证书的过期日期?

如何根据PEM编码的证书确定SSL证书的过期日期?
EN

Stack Overflow用户
提问于 2014-01-23 09:55:20
回答 9查看 489K关注 0票数 426

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2014-01-23 10:01:49

使用openssl

代码语言:javascript
复制
openssl x509 -enddate -noout -in file.pem

输出显示在表单中:

代码语言:javascript
复制
notAfter=Nov  3 22:23:50 2014 GMT

另请参阅MikeW's answer,了解如何轻松检查证书是否已过期,或在特定时间段内是否过期,而不必解析上面的日期。

票数 805
EN

Stack Overflow用户

发布于 2015-07-30 16:32:28

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

代码语言:javascript
复制
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有一个bug,这意味着如果在checkend中指定的时间太长,将始终返回0 (https://github.com/openssl/openssl/issues/6180)。

票数 199
EN

Stack Overflow用户

发布于 2017-01-18 02:36:34

下面是我的bash命令行,它按照证书过期的顺序列出多个证书,最近的证书先过期。

代码语言:javascript
复制
for pem in /etc/ssl/certs/*.pem; do 
   printf '%s: %s\n' \
      "$(date --date="$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" --iso-8601)" \
      "$pem"
done | sort

示例输出:

代码语言:javascript
复制
2015-12-16: /etc/ssl/certs/Staat_der_Nederlanden_Root_CA.pem
2016-03-22: /etc/ssl/certs/CA_Disig.pem
2016-08-14: /etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_S.pem
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21297853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档