SSL/TLS通信の疎通確認用コマンドライン 3選
- 2016.09.21
- Apache 開発環境/開発ツール
- demo
サーバーにApacheやnginxをセットアップした後の動作確認は、ブラウザを使うのが通常です。
しかし、公開準備中のシステムの場合、外部からWebサーバーへの接続ができず、ブラウザを使った動作確認ができないことがあります。
HTTPページであれば、telnetクライアントを使ったWEBサイト確認方法にある方法が使えますが、SSL/TLSページの場合は使えません。
そこで、SSL/TLSページでも使える、コマンドラインによるWebサイトの動作確認方法をまとめてみました。
なお、この記事はCentOSやRHELなどLinux系OS上にWebサーバーをセットアップし、サーバー証明書をインストールしたときの動作確認を想定しています。
関連記事:
- telnetでHTTPリクエストを送信するには?
- スマホからのアクセス時にリダイレクトする
- REMOTE_ADDRをプロキシ先サーバーにも保持させるには?
- スマホはTLS 1.0を無効化してはいけない
wgetコマンドで疎通確認する
Webサーバー上で、wgetコマンドを使ってHTTPリクエストを送信する方法です。
レスポンスされたコンテンツをファイルに書き出すだけなので、ビジュアルな見た目の確認はできませんが、疎通確認レベルの動作チェックをするならこれだけでも充分です。
基本の確認コマンド
wget -O out.html -S --bind-address=127.0.0.1 https://www.symmetric.co.jp/
--bind-address
オプションでWebサーバーが443ポートをListenしているローカルIPアドレスを指定します。
-O
オプションでは、コンテンツの保存先ファイルを指定しています。ダウンロードされたHTMLを確認するには、lessコマンドなどでout.htmlファイルを開きます。コンテンツをファイルに保存するのではなく、コンソールに出力するには-O -
のようにファイル名に「-」を指定します。
また、-S
オプションを指定するとHTTPレスポンスヘッダがコンソール出力されます。ServerヘッダやContent-Typeヘッダなどの確認に便利です。
スマホサイトの動作確認
iPhoneやAndroid端末のUser-Agentヘッダを–user-agentオプションで指定することで、PCサイトにリダイレクトされたりすることなく、ページの確認ができます。
wget -O out.html -S --bind-address=127.0.0.1 --user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1" https://www.symmetric.co.jp/
その他のTips
暫定で自己署名証明書をインストールしている場合は、--no-check-certificate
オプションを指定すると、サーバー証明書のエラーチェックを回避できます。
wget -O out.html -S --bind-address=127.0.0.1 --no-check-certificate https://www.symmetric.co.jp/
Basic認証・Digest認証で保護されたサイトなら、--http-user
オプションでユーザー名、--http-password
オプションでパスワードを指定します。
wget -O out.html -S --bind-address=127.0.0.1 --http-user=foo --http-password=bar https://www.symmetric.co.jp/
curlコマンドで疎通確認する
wgetコマンドがインストールされていない場合は、代わりにcurlコマンドを使うこともできます。
wgetとはオプションが異なるだけなので、簡潔にまとめます。
基本の確認コマンド
-o
オプションで出力するファイルパスを、--interface
オプションでListenしているIPを指定します。
curl -o out.html --interface 127.0.0.1 https://www.symmetric.co.jp/
スマホサイトの動作確認
-A
オプションでUser-Agentヘッダを指定します。
curl -o out.html --interface 127.0.0.1 -A "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1" https://www.symmetric.co.jp/
自己署名証明書の場合
-k
オプションを指定します。
curl -o out.html --interface 127.0.0.1 -k https://www.symmetric.co.jp/
Basic認証・Digest認証の場合
--user
オプションで ユーザー名:パスワード のように指定します。
curl -o out.html --interface 127.0.0.1 --user foo:bar https://www.symmetric.co.jp/
opensslコマンドで疎通確認する
wgetもcurlもインストールされていない場合は、opensslコマンドを使います。
-connect
オプションでWebサーバーがListenしているIPとポート番号を指定します。
$ openssl s_client -quiet -connect 127.0.0.1:443
depth=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
verify return:1
depth=1 /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
verify return:1
depth=0 /CN=www.symmetric.co.jp
verify return:1
上記表示になった後は、HTTPリクエストラインとHTTPヘッダを入力し、最後にEnterを押します。
HTTPリクエストラインには”GET “ + リクエストURI + ” HTTP/1.0”、HTTPヘッダには”Host: “ + ホスト名 を指定します。
たとえば、https://example.com/baz/ の場合、HTTPリクエストラインは GET /baz/ HTTP/1.0
、HTTPヘッダには Host: example.com
を指定します。
$ openssl s_client -quiet -connect 127.0.0.1:443
depth=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
verify return:1
depth=1 /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
verify return:1
depth=0 /CN=www.symmetric.co.jp
verify return:1
GET / HTTP/1.0
Host: www.symmetric.co.jp
まとめ
コマンドラインでのWebサイト動作確認方法は知っておくととても便利です。今回は紹介しませんでしたが、対応するSSL/TLSバージョンのチェックもコマンドラインで可能です。是非使いこなしてみてください。