SSL/TLSページの動作確認用コマンドライン 3選【Linux】

サーバーにApacheやnginxをセットアップした後の動作確認は、ブラウザを使うのが通常です。
しかし、公開準備中のシステムの場合、外部からWebサーバーへの接続ができず、ブラウザを使った動作確認ができないことがあります。

HTTPページであれば、telnetクライアントを使ったWEBサイト確認方法にある方法が使えますが、SSL/TLSページの場合は使えません。

そこで、SSL/TLSページでも使える、コマンドラインによるWebサイトの動作確認方法をまとめてみました。
なお、この記事はCentOSやRHELなどLinux系OS上にWebサーバーをセットアップし、サーバー証明書をインストールしたときの動作確認を想定しています。

1. 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/

2. 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/

3. 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バージョンのチェックもコマンドラインで可能です。是非使いこなしてみてください。