サーバーの移転時に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