我目前正在尝试弄清楚如何将一个包含多个证书的 .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
}