如何拆分openssl命令输出的多份证书 实现批量解码处理
openssl多证书提取awk处理方案
你需要的command2 awk处理逻辑如下:
awk '/-----BEGIN CERTIFICATE-----/{cert_flag=1} cert_flag{print} /-----END CERTIFICATE-----{cert_flag=0}'
实现逻辑
- 匹配到
-----BEGIN CERTIFICATE-----行时,将标记位cert_flag置为1 - 只要
cert_flag值为1,就输出当前行,可完整保留证书的首尾标记行和中间的base64内容 - 匹配到
-----END CERTIFICATE-----行时,将标记位cert_flag置为0,证书块外的随机字符、握手日志等无关内容都会被过滤
完整执行命令
OpenSSL 1.1.0及以上版本
高版本openssl的x509工具支持-multi_cert参数,可直接处理输入流中的多份证书:
openssl s_client -showcerts -connect server.com:443 | awk '/-----BEGIN CERTIFICATE-----/{cert_flag=1} cert_flag{print} /-----END CERTIFICATE-----{cert_flag=0}' | openssl x509 -text -noout -multi_cert
OpenSSL 1.1.0以下版本
低版本不支持多证书批量处理,可调整awk输出分隔符配合xargs逐份处理:
openssl s_client -showcerts -connect server.com:443 | awk '/-----BEGIN CERTIFICATE-----/{cert_flag=1} cert_flag{print} /-----END CERTIFICATE-----{cert_flag=0; print "\0"}' | xargs -0 -I {} openssl x509 -text -noout <<< "{}"
内容的提问来源于stack exchange,提问作者Hobbes C
相关产品推荐
相关产品推荐

