@kyanny's blog

My thoughts, my life. Views/opinions are my own.

openssl コマンドで SSL/TLS 証明書をダウンロードする

opensslコマンドで特定のサーバーのSSL証明書をダウンロードする - nwtgck / Ryo Ota

に書いてあるとおり。

ホスト名を変更して使い回しやすくするためにちょっと改変した。

gist.github.com

❯ 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 コマンド、ということ。(なおパターンにマッチする各行も出力される)