是否有 openssl 命令可以提取 cacertfile(包含多个证书的文件,如 /etc/ssl/certs/ca-certificates.crt)的所有证书主题?
我尝试过openssl x509 -in /etc/ssl/certs/ca-certificates.crt -noout -subject
,但它只给了我第一个证书的主题。
答案1
要打印 CA 文件中的所有主题:
openssl crl2pkcs7 -nocrl -certfile ca-certificates.crt | openssl pkcs7 -print_certs -text -noout | grep 'Subject:'
答案2
不幸的是我不相信 OpenSSL 可以做到这一点。 OpenSSL 假定每个文件有一个用于 x509 操作的证书。
根据这个网站你必须将它们分成单独的文件。他甚至提供一个 Perl 脚本这将为你分割它。然后,您可以循环这些文件,或者修改 perl 脚本以直接提取主题。
答案3
将变量设置file
为指向您的文件,修改 openssl 命令,然后就可以开始了:
file="your file name"; first=""; for i in $(grep -n CERT "${file}" | cut -f 1 -d:)
do
if [ -z "$first" ]
then
first=$i
continue
fi
sed -n "$first,${i}p" "${file}" | openssl x509 -noout -subject
first=""
done