Как выбрать сертификат из файла PEM с несколькими сертификатами?

Справочная информация: Я работаю на сервере OS X, и мне нужно использовать сертификаты из цепочки ключей с openssl smime, чтобы зашифровать сообщения в сценарии bash. Для этого я использую поисковый сертификат безопасности с параметром -e для извлечения сертификатов для определенного адреса электронной почты из цепочки ключей OS X. Однако это хорошо работает, команда извлекает все сертификаты, найденные для этого адреса электронной почты, в файл PEM. Файл будет даже содержать сертификаты с истекшим сроком действия.

Когда я использую файл PEM для шифрования почты с openssl smime , очевидно, что используется только первый сертификат в файле PEM.

Итак, что нужно сделать, это выбрать сертификат с наибольшей датой истечения срока действия из файла PEM, чтобы я мог использовать его с openssl, но как это можно сделать?

0
задан 23 February 2017 в 14:55
1 ответ

Ha bármely le nem járt cert elfogadható :

$ # adjust filenames for your environment as desired 

$ cat <<\EOF >awkscript # only need to do this setup once
BEGIN{ cmd="openssl x509 <tempfile -checkend 0" }
/^-----BEGIN/ {f=1} 
f {print >"tempfile"} 
/^-----END/ {f=0; close("tempfile"); cmd | getline status;
  if( status ~ "not expire" ){ exit 0 }; close(cmd) }
END{ exit 1 }
EOF

$ if awk -f awkscript combinedpemfile
> then # use tempfile as cert for encryption
> else # no unexpired cert found 
> fi

Ha kifejezetten szüksége van a lejárt időtartamra, nem látok egyszerű módszert a dátum-összehasonlítás automatizálására, de ez a többi:

$ cat <<\EOF >awkscript # again only once
BEGIN{ cmd="openssl x509 -noout -enddate" }
/^------BEGIN/ {f=1; t=""} f {t=t $0 ORS} 
/^-----END/ {f=0; out="tempcert#"(++i); print t >out; 
  printf "%s: ",out; print t | cmd; close(cmd) }
EOF

$ awk -f awkscript combinedpemfile
tempcert#1: notAfter=(expiryfor1)
tempcert#2: notAfter=(expiryfor2)
tempcert#3: notAfter=(expiryfor3)
...
$ # pick the latest expiry and use the corresponding file (and clean up)
0
ответ дан 5 December 2019 в 08:40

Теги

Похожие вопросы