2012-04-05 124 views
1

我想用下面的命令:使用OpenSSL读取多个证书

openssl x509 -noout -in /etc/pki/tls/certs/cert1.pem -enddate 
openssl x509 -noout -in /etc/pki/tls/certs/cert2.pem -enddate 
openssl x509 -noout -in /etc/pki/tls/certs/certN.pem -enddate 

有没有办法读取使用通配符的所有证书?例如,

openssl x509 -noout -in /etc/pki/tls/certs/*.pem -enddate 

任何帮助将不胜感激。先谢谢你。

+0

我已经设法使用一个文件名数组遍历for循环。如果有更好的工作,请分享。谢谢 – Zeeshan 2012-04-05 15:51:01

回答

1

使用shell小脚本:

#! /bin/sh 

for file in /etc/pki/tls/certs/*.pem; do 
    echo -n "$file: " 
    openssl x509 -noout -in "$file" -enddate 
done 

把这个在一个文件,说certexpires.sh那么你就可以运行它:

sh certexpires.sh 
0

我创造了我的终端别名和运行这个上整个文件夹中的文件(你可以调整它只在pem分机上运行,​​但这是我的改编)

alias ssl-opemu='_(){ for i in *; do openssl x509 -in $i -noout -text; done; }; _' 

我几乎可以肯定,我从前一个线程继承了这一点,所以对其原始所有者拥有所有权利。 :)

1

我对你的情况回答是这样的命令:

ls /etc/pki/tls/certs/cert*.pem | xargs -L1 openssl x509 -noout -enddate -in 

说明

在第一步中,我把我的证件,我想分析的列表。例如在我的情况下,它可能是这样的:

[[email protected] certs]# ls -1 */*.crt 
ewsport.org/ewsport.org.crt 
hxpro.cz/hxpro.crt 
jaguars.cz/jaguars.crt 
koudelka.photography/koudelka.photography.crt 
unicycle-hockey.cz/unicycle-hockey.cz.crt 
unipragga.cz/unipragga.cz.crt 

下一步,我想要从他们每个人获得到期日期。

[[email protected] certs]# openssl x509 -noout -enddate -in hxpro.cz/hxpro.crt 
notAfter=Apr 24 11:29:21 2017 GMT 

现在我可以使用xargs将第一条命令的输出发送到第二条命令。

[[email protected] certs]# ls -1 */*.crt | xargs -L1 openssl x509 -noout -enddate -in 
notAfter=Mar 31 15:08:20 2017 GMT 
notAfter=Apr 24 11:29:21 2017 GMT 
notAfter=Mar 23 21:23:42 2017 GMT 
notAfter=Apr 24 11:50:32 2017 GMT 
notAfter=Dec 11 16:32:41 2016 GMT 
notAfter=Mar 20 19:44:17 2017 GMT 

我使用了选项-L1,因为openssl命令只需要一个-in文件作为输入。

+1

感谢您的回答。你能否提供一些解释,说明为什么你发布的命令解决了OP的问题 - 为什么它可能比已经提供的答案更好? – Tom 2017-02-01 12:48:38

+0

我想,我的解决方案更简单,更清晰。 – 2017-02-02 09:15:22

+0

是的,但是...为什么?什么'| xargs'吗?或'-L1'? – Tom 2017-02-02 09:17:18

相关问题