2

我想使用以下命令:

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 

任何帮助将非常感激。先感谢您。

4

3 回答 3

1

使用 shell scriptlet:

#! /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
于 2012-04-05T18:45:49.677 回答
1

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

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

解释

在第一步中,我列出了我想要解析的证书。例如在我的情况下,它可能是这样的:

[root@vpsfree 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

下一步,我想从每个人那里获取到期日期。

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

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

[root@vpsfree 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 文件作为输入。

于 2017-02-01T12:04:00.743 回答
0

我为我的终端创建了一个别名,该别名在文件夹中的整个文件上运行(您可以将其调整为仅在 pem 扩展名上运行,但这是我的改编)

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

我几乎可以肯定我已经从以前的线程中继承了这个,所以他们的原始所有者的所有权利。:)

于 2015-04-01T11:58:45.187 回答