美文网首页
如何split证书链文件

如何split证书链文件

作者: CodingCode | 来源:发表于2021-08-04 00:08 被阅读0次
  1. 使用csplit工具
$ csplit -s -z -f "splitoutput-csplit" -b "-%d.pem" chain.pem '/-----BEGIN CERTIFICATE-----/' '{*}'

输入是:chain.pem待split的chain文件
输出是:splitoutput-csplit-<seq>.pem,就是把'-f'和'-b'拼接起来的格式文件。

  1. 使用awk
$ awk 'BEGIN{count=-1} /-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/{if(/-----BEGIN CERTIFICATE-----/){count++}; print > "splitoutput-awk-"count".pem"}' chain.pem

输入是:chain.pem待split的chain文件
输出是:splitoutput-awk-<seq>.pem

  1. split在内存里
#!/bin/bash

CERTIFICATES=()

# load a certificate chain file into array variable CERTIFICATES
# input: $0 chain pem file
# output: array variable CERTIFICATES
function load_cert_chain() {
  typeset CERTCHAINFILE=$1
  CERTIFICATES=()
  COUNTER=0;OLDIFS=$IFS; IFS=';' blocks=$(sed -n '/-----BEGIN /,/-----END/ {/-----BEGIN / s/^/\;/; p}'  ${CERTCHAINFILE});
  for block in ${blocks#;}; do
     block="$(echo "${block}" | grep -v "^$")"
     CERTIFICATES+=("${block}")
     #echo "Certificate[${COUNTER}]=["${block}"]"
     COUNTER=$((COUNTER +1))
  done; IFS=$OLDIFS
  #echo "Total ${COUNTER} certificate is loaded"
}

load_cert_chain tls-ca.pem
for i in "${!CERTIFICATES[@]}"; do
   echo "${CERTIFICATES[$i]}" > splitoutput-array-$i.pem
done

输入是:chain.pem待split的chain文件
输出是:splitoutput-array-<seq>.pem

相关文章

网友评论

      本文标题:如何split证书链文件

      本文链接:https://www.haomeiwen.com/subject/dhyyvltx.html