2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

特定の文字列を含む行でファイルを分割する(連結されたCA証明書を分離する)

Posted at

/etc/ssl/certs/ca-bundle.crt のように複数のCA証明書が連結されたファイルがありますが、どんな証明書が入っているのかなと、opensslに食わせても、どうも先頭の証明書しか情報が見えません。

# openssl x509 -in /etc/ssl/certs/ca-bundle.crt -noout -text

2番目以降の証明書の情報も見れるようなオプションがあればいいのですが、どうにも探しきれないので、諦めて証明書毎にファイルを分割します。

各証明書は

-----BEGIN CERTIFICATE-----

で必ず始まっているので、この行を検出したら別ファイルに書き出すようなawkを書いてみました。

separate-ca-certificate.awk
{
  if(/BEGIN CERTIFICATE/){
    filename=sprintf("prefix_%03d.crt",suffix);
    suffix+=1;
  }
  print >> filename;
}

「BEGIN CERTIFICATE」の文字が含まれる行に出会うたびに、ファイル名のサフィックスをインクリメントして、吐き出しております。

実行コマンドは下記です

awk -f separate-ca-certificate.awk /etc/ssl/certs/ca-bundle.crt

シェルのワンライナーなら下記になります。

awk '{if(/BEGIN CERTIFICATE/){filename=sprintf("prefix_%03d.crt",suffix);suffix+=1};print >> filename}' /etc/ssl/certs/ca-bundle.crt

if文の文字列を変えれば、証明書以外のケースにも応用できますね!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?