Как определить сертификат с отсутствующим или неверным значением, если он не соответствует моим требованиям? В идеале, если сертификат запрашивается и ответа не было, я бы хотел, чтобы он напечатал -
для соответствующего сертификата, чтобы я мог посмотреть на ошибку.
Я создаю список, содержащий указанные c содержимое файлов сертификатов PEM. Список будет содержать CN или значение электронной почты, использованное в сертификате.
Чтобы получить значение CN, я запускаю:
openssl x509 -noout -subject -in certificate.pem | sed -n '/^subject/s/^.*CN=//p'
example.com
Чтобы получить значение электронной почты, которое я запускаю:
openssl x509 -noout -email -in certificate2.pem
user@example.com
Я попробовал это, но это не работает, как я думал:
while read common_names; do
openssl x509 -noout -email -in $common_names
if [[ -z $common_names ]] ; then
echo ""$common_names" Not valid smime cert"
fi
done < /user/audit/smime/smime_list.txt > /user/audit/smime/smime_cert_common_name.txt
Содержимое /user/audit/smime/smime_list.txt
/var/certs/example1.com.crt
/var/certs/example2.com.crt
/var/certs/example3.com.crt
/var/certs/example4.com.crt
/var/certs/example5.com.crt
Текущий неработающий вывод :
Cert_Name Common_Name Days_Expired
examle1.com.crt user@examle1.com 30
examle2.com.crt user@examle2.com 30
examle3.com.crt 30
examle4.com.crt 30
examle5.com.crt 30
Ожидается и вывод без проблем:
Cert_Name Common_Name Days_Expired
example.com.crt example.com 30
Ожидаемый вывод с проблемой: исключение из сертификата с отсутствующим Common_Name (CN)
Cert_Name Common_Name Days_Expired
example.com.crt - 30
или
Cert_Name Common_Name Days_Expired
example.com.crt N/A 30
PS. У меня уже есть дни, истекшие из предыдущего блока.