2006年06月06日
システム管理者の心得? 〜 OpenSSLコマンドで証明書をチェック
サーバの管理なんぞしていると、「SSLのサイト作りたいからこの証明書を設置して欲しい」などと言われることは日常茶飯事・・・とまではいきませんが普通にあることだと思います。
でも、せっかく安全に気を配ってサーバに転送して設置して設定しても、「実はもらったファイルは違う鍵ファイルだった」なんて事はありませんか? まあ・・・実際あんまりないんですけど、そんな事があったら気が滅入って寝込んでしまいそうになるので、実環境へ持って行く前に軽く動作チェックをするようにしています。
でも、せっかく安全に気を配ってサーバに転送して設置して設定しても、「実はもらったファイルは違う鍵ファイルだった」なんて事はありませんか? まあ・・・実際あんまりないんですけど、そんな事があったら気が滅入って寝込んでしまいそうになるので、実環境へ持って行く前に軽く動作チェックをするようにしています。
やりかたとしては、Apache に mod_ssl いれてブラウザでアクセス・・・でもいいんですが、それだと気が短い人には耐えられないので、以下のようなコマンドを叩きます。
こうなれば成功です。WEBサーバに鍵ペアを持って行ってもきっとちゃんと動いてくれる事でしょう。
この状態は、openssl がポート 4433 番ポートで接続待ちをしている状態です。
(詳細は man s_server を参照してください)
試しにブラウザを起動して https://localhost:4433/ に接続してみましょう。
ブラウザには何も表示されませんが、s_server を起動したコンソールには
こんな感じのメッセージが流れるはずです。(HTTPリクエストですよねこれ)
これは、ブラウザからの HTTPS接続を openssl s_server が受け、SSLハンドシェイクが成功して正常に暗号化通信ができている様子です。応答を返していないのでブラウザに何もでませんが、コンソールにHTTPレスポンスを流してあげれば、そのままブラウザに表示されます。
接続確認にブラウザを使うのも面倒だというCUIな方は、別なコンソールで以下のコマンドを叩いてみるのはいかがでしょうか。
ハンドシェイクの様子が流れて入力待ちになります。
ここで入力したテキストは s_server 側に出力され、s_server 側で入力されたテキストは s_client 側に表示されます。まあ、簡易チャット的な雰囲気が味わえるわけです。
で、なんとなく話がそれてしまいましたが、openssl コマンドだけで、証明書が使えるかどうかを簡単に手元でチェックすることができます。
s_client をうまく利用すると、SSL サイトのヘルスチェックや、証明書の期限切れチェックの自動化などにも利用できそうですね。
$ openssl s_server -cert [ファイル名] -key [秘密鍵ファイル名]
Using default temp DH parameters
ACCEPT
こうなれば成功です。WEBサーバに鍵ペアを持って行ってもきっとちゃんと動いてくれる事でしょう。
この状態は、openssl がポート 4433 番ポートで接続待ちをしている状態です。
(詳細は man s_server を参照してください)
試しにブラウザを起動して https://localhost:4433/ に接続してみましょう。
ブラウザには何も表示されませんが、s_server を起動したコンソールには
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost:4433
Connection: Keep-Alive
こんな感じのメッセージが流れるはずです。(HTTPリクエストですよねこれ)
これは、ブラウザからの HTTPS接続を openssl s_server が受け、SSLハンドシェイクが成功して正常に暗号化通信ができている様子です。応答を返していないのでブラウザに何もでませんが、コンソールにHTTPレスポンスを流してあげれば、そのままブラウザに表示されます。
接続確認にブラウザを使うのも面倒だというCUIな方は、別なコンソールで以下のコマンドを叩いてみるのはいかがでしょうか。
$ openssl s_client -connect localhost:4433
ハンドシェイクの様子が流れて入力待ちになります。
ここで入力したテキストは s_server 側に出力され、s_server 側で入力されたテキストは s_client 側に表示されます。まあ、簡易チャット的な雰囲気が味わえるわけです。
で、なんとなく話がそれてしまいましたが、openssl コマンドだけで、証明書が使えるかどうかを簡単に手元でチェックすることができます。
s_client をうまく利用すると、SSL サイトのヘルスチェックや、証明書の期限切れチェックの自動化などにも利用できそうですね。
klab_gijutsu2 at 22:29│Comments(1)│TrackBack(1)
トラックバックURL
この記事へのトラックバック
1. 証明書をサーバに設定する前にチェックする [ パソコン鳥のブログ ] 2014年09月27日 23:18
下記の記事で、以前サーバ証明書の作成方法を説明しました。
この記事へのコメント
1. Posted by yk 2006年06月15日 16:51
s_server のオプションに -www を付けておけば、s_server のステータス情報を返してくれるみたいです。