2012-04-05 2 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

ответ

1

использовать оболочки скриптлет:

#! /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

Я создал псевдоним для своего терминала, который работает в этом на целые файлы в папке (вы можете настроить его для запуска только на расширение пем, но это моя адаптация)

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

+0

Мое решение просто проще и понятнее, я думаю. –

+0

Да, но ... почему? Что делает '| xargs' делать? Или '-L1'? – Tom

Смежные вопросы