在我们的环境中,OSX登录钥匙串包含多个具有相同名称(最终用户帐户名称)的证书。我想遍历这些证书并捕获到期日期。
我使用安全性命令(包括用于查找所有实例的-a参数)在bash中创建了一个数组以查找证书,并将其通过管道传递给openssl命令以查找到期日期。但是该数组仅返回第一个证书的到期日期,而没有其他返回。
array=( `/usr/bin/security find-certificate -a -c $user -p -Z /Users/$user/Library/Keychains/login.keychain | /usr/bin/openssl x509 -noout -enddate | cut -f2 -d= | tr ' ' '-'` );
for i in ${array[@]}
do
echo "$user has an expiration date of $i."
done
答案 0 :(得分:0)
尝试一下:
/usr/bin/security find-certificate -a -c $user -p > /tmp/certs.pem
while read line; do
if [[ "$line" == *"--BEGIN"* ]]; then
cert=$line
else
cert="$cert"$'\n'"$line"
if [[ "$line" == *"--END"* ]]; then
echo "$cert" > /tmp/checkcert.pem
rawExp=$(openssl x509 -noout -enddate -in /tmp/checkcert.pem | cut -d= -f 2)
echo "$user has an expiration date of $rawExp."
fi
fi
done < /tmp/certs.pem