2011年11月11日金曜日

設定されたSSL鍵にパスフレーズが設定されているかどうか

どうも、俺@アプリ開発中です。
今日は、利用しているSSLの鍵にパスフレーズが設定されているかどうかを調べる方法についてめもめも。

例えば、apacheを再起動しなければならなくなった場合
そのapacheはSSL設定がされており、https:// なWEBサーバであると、再起動かけたとき

# /usr/local/apache2/bin/apachectl restart
Enter pass phrase for /path/to/ssl.key: 
のようにパスフレーズを求められて、
apacheが停止したところで止まってしまい、起動出来なくなってしまいます。これはエライコッチャ!

こんな場合は、事前にSSL鍵にパスフレーズが設定されているかどうかチェックしておきましょう。
まず、apacheのSSL設定ファイル(通常はhttpd-ssl.confかな)にあるSSLCertificateKeyFileを見て、SSL鍵パスを確認します。

# cat /usr/local/apache2/conf/extra/httpd-ssl.conf | grep SSLCertificateKeyFile
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/ssl.key"
例えばこのように出力されて、鍵ファイルのパスがわかります。

このファイルを openssl コマンドでパスフレーズ設定されているかどうか確認します。
# openssl rsa -in /usr/local/apache2/conf/ssl/ssl.key
とコマンドを打って
・パスフレーズ設定されている場合
Enter pass phrase for /usr/local/apache2/conf/ssl/ssl.key:
これは要注意です!

・パスフレーズ設定されていない場合
Writing RSA key
----- BEGIN RSA PRIVATE KEY -----
LKDFopa99yjkfslkKgudkdf...
のように鍵ファイルを表示できれば設定されていません!


これで、apache再起動時に焦ることもなくなりますね。
僕は、開発環境でパスフレーズ設定されたapacheを再起動してしまい、「あれぇ」となった事があります。

ちなみにパスフレーズ設定されたSSL証明書鍵のパスフレーズを解除してしまう方法ですが、(セキュリティ的に危ないので本番サーバとかでは要検討!)

// バックアップを取る
# cp ssl.key ssl.key.bak

// パスフレーズ解除
# openssl rsa -in ssl.key -out new_ssl.key
Enter pass phrase for ssl.key: // ここでパスフレーズを入力
です。
new_ssl.keyというパスフレーズの設定されていないSSL証明書鍵が出来ました。


以上でぇぇぇぇす。

0 件のコメント: