opensslコマンドで特定のサーバーのSSL証明書をダウンロードする - nwtgck / Ryo Ota
に書いてあるとおり。
ホスト名を変更して使い回しやすくするためにちょっと改変した。
❯ bash download-cert.sh google.com depth=3 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA verify return:1 depth=2 C = US, O = Google Trust Services LLC, CN = GTS Root R1 verify return:1 depth=1 C = US, O = Google Trust Services LLC, CN = GTS CA 1C3 verify return:1 depth=0 CN = *.google.com verify return:1 DONE ~/workspaces ❯ openssl x509 -in certificate.crt -subject -issuer -dates -noout subject= /CN=*.google.com issuer= /C=US/O=Google Trust Services LLC/CN=GTS CA 1C3 notBefore=Oct 18 09:03:24 2021 GMT notAfter=Jan 10 09:03:23 2022 GMT
余談。sed で何やってるかわからなかったので調べた。
sedコマンドの内部コマンドの適用範囲を指定する際には終了条件に注意!(最終行まで適用されてしまう場合) | ゲンゾウ用ポストイット
↑でいう「パターンアドレス」例に相当することをやっている。カンマ区切りで処理対象の行の先頭と末尾のパターンを指定している。
/p
は行を出力するコマンド。
sed コマンド | コマンドの使い方(Linux) | hydroculのメモ
つまり↓は、
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
-BEGIN CERTIFICATE-
にマッチする行から -END CERTIFICATE-
にマッチする行までを標準出力に出力する sed コマンド、ということ。(なおパターンにマッチする各行も出力される)