如何使用 openssl 命令行提取 cacertfile 的所有主题?

如何使用 openssl 命令行提取 cacertfile 的所有主题?

是否有 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

相关内容