openssl s_client で -servername を忘れないこと

openssl s_client で -servername を忘れがち #

Firebase Hosting の SSL 証明書は、SAN

ドメインは、FirebaseApp SSL 証明書にサブジェクト代替名(SAN)の 1 つとして表示されます。この証明書はブラウザのセキュリティ ツールを使って表示できます。

WEB ブラウザの証明書でパッとみても自分のドメインじゃなかったりする。詳細みたら「Subject Alternative Name (サブジェクト代替名)」にたくさん並んでる。見づらい。
ってことで、openssl コマンドで確認しようしたんだけれども、

$ openssl s_client -connect d3.haro.jp:443 -showcerts 2>/dev/null </dev/null | \
  sed -ne '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' | \
  openssl x509 -text -noout | grep DNS

                DNS:firebaseapp.com, DNS:*.firebaseapp.com

ん? と思ってググったり表示された内容じっとながめたり色々した結果、結局 help で気づいた

$ openssl s_client --help
.
.
 -servername host  - Set TLS extension servername in ClientHello
.
.

つうことで

$ openssl s_client -connect d3.haro.jp:443 -showcerts -servername d3.haro.jp 2>/dev/null </dev/null | \
  sed -ne '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' | \
  openssl x509 -text -noout | grep DNS

100 個あるので、むっちゃ表示される

最終的に

$ h=d3.haro.jp openssl s_client -connect ${h}:443 -showcerts -servername ${h} 2>/dev/null </dev/null | \
  sed -ne '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' | \
  openssl x509 -text -noout | grep DNS | \
  tr ',' '\n' | grep ${h}

 DNS:d3.haro.jp

めでたしめでたし

See Also

Copyright © 髭。/ Hugo + hugo-book