如果我在Mac或Linux中有实际的文件和Bash shell,我如何查询证书文件的过期时间?不是网站,而是证书文件本身,假设我有csr、密钥、pem和chain文件。
发布于 2014-01-23 10:01:49
使用openssl
openssl x509 -enddate -noout -in file.pem
输出显示在表单中:
notAfter=Nov 3 22:23:50 2014 GMT
另请参阅MikeW's answer,了解如何轻松检查证书是否已过期,或在特定时间段内是否过期,而不必解析上面的日期。
发布于 2015-07-30 16:32:28
如果您只想知道证书是否已过期(或将在接下来的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有一个bug,这意味着如果在checkend
中指定的时间太长,将始终返回0 (https://github.com/openssl/openssl/issues/6180)。
发布于 2017-01-18 02:36:34
下面是我的bash命令行,它按照证书过期的顺序列出多个证书,最近的证书先过期。
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
示例输出:
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
https://stackoverflow.com/questions/21297853
复制相似问题