Использование встроенных функций времени GNU awk:
awk '
function to_time(time, t,a) {
split(time, a, ":")
t = mktime("1970 1 1 " a[1] " " a[2] " " a[3])
return t
}
{print $1, $2, to_time($2) - to_time($1)}
' file
Решение, к которому я наконец пришел, состояло в том, чтобы передать его через sed.
openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>
Только что попробовал использовать
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | openssl x509 -out <cacerts.cer>
, чтобы цепочка экспортировалась в простом формате без заголовков для каждого элемента в цепочке. На этом сервере Windows NT я экспортировал только первый элемент цепочки, а не два ожидаемых элемента. Вместо этого я просто использовал
openssl pkcs12 -in <filename.pfx> -cacerts -chain -nokeys -nodes -out <cacerts.cer>
и отредактируйте файлы с помощью Блокнота, чтобы удалить ненужный текст. Неэлегантно? Да, но это дало нужный результат.
Однострочный сawk
:
openssl pkcs12 -in key.pfx -nodes -out - | awk '/-----BEGIN/{a=1}/-----END/{print;a=0}a'
Это отбрасывает все выходные данные не между начальной и конечной строками PEM. Кредит для AWK принадлежитhttps://stackoverflow.com/q/17988756#comment29487454_17988834