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


8

是否有一个openssl命令来提取cacertfile(包含几个证书的文件,如/etc/ssl/certs/ca-certificates.crt)的所有证书主题?

我尝试过,openssl x509 -in /etc/ssl/certs/ca-certificates.crt -noout -subject但是它只给我第一份证书的主题。

Answers:


5

不幸的是,我不相信OpenSSL可以做到这一点。对于x509操作,OpenSSL假定每个文件一个证书。

根据此站点,您必须将它们拆分为单独的文件。他甚至提供了一个perl脚本来为您拆分它。然后,您可以循环浏览文件,或修改perl脚本以直接提取主题。


1

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

通过添加有关命令工作方式的描述,可以改善此答案。顺便说一句,您不需要中的花括号${file}
G-Man说'Resstate Monica''Apr

该脚本完全按预期工作,将每个证书部分从一个(链)文件中取出并显示主题行
user906489 '18

0

要打印CA文件中的所有主题:

openssl crl2pkcs7 -nocrl -certfile ca-certificates.crt | openssl pkcs7 -print_certs -text -noout | grep 'Subject:'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.