https://sys-guard.com/post-13023/
会社の記事でも書きました。
もくじ
SSLが設定されているサイトを保守して欲しい、証明書を交換して欲しい
SSLが設定されているサイトでは、WEBサーバを再起動や設定をリロードする前に必ずSSLにパスフレーズが設定されているか確認しよう。秘密鍵にパスフレーズが設定されていた場合は必ず顧客に確認してから作業すること。
設定されていたらどうなるの?
restartを打った後で秘密鍵のパスフレーズがわからないとWEBサーバが起動しなくなり障害になります。また、Apacheの起動順序の設定を書き換えられた場合は、サーバー本体の再起動を行った際にもSSHで繋がらなくなる可能性があります。
顧客から提供されたドキュメントのアカウント情報の中に、WEBサーバの秘密鍵のパスフレーズまで記述されている場合はほぼありません。
作業者が慎重にならないといけないところ。
秘密鍵にパスフレーズがあるかどうか確認
秘密鍵ファイルがどこに設定されているか
# cat /etc/httpd/conf/httpd.conf | grep SSLCertificateKeyFile SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
# cat /etc/httpd/conf.d/*.conf | grep SSLCertificateKeyFile SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
秘密鍵にパスフレーズが設定されているか
# cat server.key -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED
ENCRYPTEDとあるとパスフレーズがないとWEBサーバが起動できません。作業の前に顧客にパスレーズの確認を行いましょう。
複数のSSLバーチャルサイトを実現したい要望
Apacheのバージョン確認
2.2.12以降かどうか
OpenSSLのバージョン確認
0.9.8f以降かどうか
1つのIPに対して複数の証明書によるバーチャルホストサイトを実現するにはSNIという機能をWEBサーバが持っている必要があります。作業前に必ず確認しましょう。
SNI(Server Name Indication)
RFC6066内で定義されている、SSL/TLSの拡張仕様の一つです。
SNIに対応することで何が出来るようになるのでしょうか。
結論としては、対応ブラウザの制約はあるものの、「1台のサーバ(IPアドレス)で複数ドメインのSSL証明書を運用できるようになる」ということになります。逆に、SNI非対応の場合だと、1台のサーバ(IPアドレス)で、SSL証明書は1ドメインしか運用できないことになります。
SSLが設定されているサイトでは、WEBサーバを再起動する前に必ずSSLにパスフレーズが設定されているか確認しよう。設定されていた場合は顧客に確認してから作業すること。restartを打った後でパスフレーズがわからないとWEBサーバが起動しなくなり障害になります。また、サーバーの再起動を行った際にも起動しなくなります。(2回目)
おまけ パスフレーズがない秘密鍵を作成する手順
秘密鍵作成
# openssl genrsa -aes128 2048 > 20141007server.key
バックアップ
# cp 20141007server.key 20141007server.key.bak
パスフレーズ解除
# openssl rsa -in 20141007server.key -out 20141007server.key Enter pass phrase for ssl.key: パスフレーズ入力
確認しよう。
# cat server.key -----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTEDがなくなってます。パスフレーズが削除されました。
自分で構築していないお客様のサーバ環境で作業する際は、絶対にパスフレーズが設定されているか確認することを忘れずに作業を行いたいですね。
お疲れ様です。