それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

curl で/etc/hosts書き換えずにhttps 接続(証明書)を確認する。curl だけで resolve

サーバーの移転時にHTTPSの証明書を確認したい

毎回毎回、/etc/hostsを書き換えると不便極まりないので、代替手段はないか調べた。

openssl には servername オプションがあるのでcurlでもサーバー名を解決するオプションがないか調べたら。あった。

curl だけで hostsファイル代替手段がある。resolve

curl には resolve オプションがあり、ドメイン名とIPアドレスの名前解決を上書きできる。

curl   --resolve example.com:192.168.100.2 http://example.com

resolve オプション便利ですね。

https の場合

httpsの場合は、次のように 443 をつければ、hostsファイルの代わりに使える。

curl   --resolve example.com:443:192.168.100.2 https://example.com

証明書の移動ができたかcurlでチェックできる

ブラウザで見なくても、HTTPSの確認ができる。

openssl

また、証明書のチェックは、opensslだけでもできる

openssl s_client --connect 192.168.194.145:443 | openssl x509 -noout -text

openssl を使う場合、証明書チェックが走るので Can't use SSL_get_servername が出てしまうが、接続して証明書を取ることはできる。

サーバー名SNI相当のものを指定する場合.servernameを指定する。

openssl s_client --connect 192.168.2.147:443 --servername example.com  | openssl x509 -noout -text

ALPNに対応している通信なら

openssl s_client --connect 192.168.2.147:443 -alpn h2 --servername  example.tld < /dev/null

関連資料

SSL証明書の有効期限やSANをopensslコマンドで調べる(https証明書確認) - それマグで!