将一个包含多个证书的 .pem 文件拆分为多个新的 .pem 文件

将一个包含多个证书的 .pem 文件拆分为多个新的 .pem 文件

我目前正在尝试弄清楚如何将一个包含多个证书的 .pem 文件分成几个新的 .pem 文件,但我不知道从哪里开始......

第一个 .pem 文件如下所示:

-----BEGIN CERTIFICATE-----
bla bla bla
bla bla bla
bla lba bal
-----END CERTIFICATE-----
包属性:
subject=blabla
issuer=bla
-----BEGIN CERTIFICATE-----
bla bla bla
bla bla bla
bla lba bal
-----END CERTIFICATE-----
包属性:
subject=blabla
issuer=bla

......

但是,我需要一个脚本将这个 .pem 文件分成四个仅包含每个证书的新 .pem 文件,因此它们看起来像:

-----开始证书-----
bla bla bla
bla bla
bla lba bal
-----结束证书-----

.......

脚本是什么样的?
我正在使用 MobaXtrem(而且我对服务器管理还很陌生,所以我有点迷茫……)

我正在考虑这样的结构,可能吗?

for i in 'seq 1 4'; do <some regex expression i guess> -out cert$i.pem; done

希望有人可以帮忙。

谢谢

答案1

仅使用openssl x509,无需其他操作即可在循环中处理证书。openssl不会刷新正在使用的文件描述符,并且始终读取最小值。您必须确保只有一个输入流为循环提供信息。

for i in $(seq 1 4); do
    openssl x509 -out cert$i.pem
done < bundle.pem

甚至:

i=1; while openssl x509 -out cert$i.pem; do
    i=$((i+1))
done < bundle.pem

< bundle.pem本身可以是其他证书处理命令的输出,如下所示(在此示例中,如果存在密码,则仍会要求输入密码):

openssl pkcs12 -in bundle.p12 -nokeys | {
    i=1; while ...
        ....
    done
}

相关内容