5.ssl.confの設定

通常は、にssl.confに設定をしますが、私の環境はバーチャルホストなのでバーチャルホスト用のshigi-ssl.confに設定をします。(バーチャルホストが2つあります。もうひとつのバーチャルホストにはそのホスト用に別のサーバ証明書を取得する予定です。)

同時に、SSLv3を無効化する設定も追記します。

# vi /etc/httpd/conf.d/shigi-ssl.conf

# SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect. Disable SSLv2 access by default:
SSLProtocol all -SSLv2 -SSLv3 # -SSLv3を追記:shigi-ssl.confと○△-ssl.confなどすべてのバーチャルホスト用のssl.confに記載する。

これで、SSLv3が無効化された。記載漏れがあるとサーバ証明書インストールチェッカーでPOODLE脆弱性を指摘される。

さらに、続く

# Server Certificate:サーバ証明書
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
# SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/2015shigi-crt.pem

# Server Private Key:プライベートキー
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you’ve both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/privates/2015shigi-key.pem

# Server Certificate Chain:中間証明書
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
SSLCertificateChainFile /etc/pki/tls/certs/2015shigi-intermediate-crt.pem

apache再起動

# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: Apache/… mod_ssl/… (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www.shigizemi.com:443 (RSA)
Enter pass phrase:

Apache:mod_ssl:Error: Pass phrase incorrect (5 more retries permitted).
Enter pass phrase:

OK: Pass Phrase Dialog successful.
[ OK ]

このとき、パスフレーズを聞かれるので、プライベートkeyを作成した時のパスフレーズを入力します。 最初エラーが発生し、apacheが再起動できませんでした。原因究明は前述の通りで、ここに示しています。結論は、サーバ証明書をviで作りなおしたら解決しました。

また、再起動のたびパスフレーズを入力するのは運用上手間(サーバの自動起動ができない)なので、プライベートkeyからパスフレーズを削除しました。リスクは、もしプライベートkeyとサーバ証明書(公開鍵)を盗まれた場合、パスフレーズ入力なしで、そのままサーバのなりすましに利用されてしまいます。また、SSL通信の盗聴も可能です。

別の方法として、シェルスクリプトにパスフレーズを書き込んで応答させるという手法もあるようですが、私の場合バーチャルホストなのでちゃんと動作するかまだ試していません。それまでは、パスフレーズを削除する方法を採用します。

参考サイト:SSLのパスフレーズ(Pass Phrase Dialog)入力を省略してApacheを起動する

それでは、プライベートkey(2015shigi-key.pem)からパスフレーズを削除します。

# cp /etc/pki/tls/privates/2015shigi-key.pem /etc/pki/tls/privates/2015shigi-key-org.pem
# openssl rsa -in 2015shigi-key-org.pem -out 2015shigi-key.pem
Enter pass phrase for 2015shigi-key-org.pem: <–プライベートkey作成時に入力したパスフレーズを入力
writing RSA key

このとき、上書きの可否を聞かれたら、許可「y」キーを押してください。

新しくで生成されたパスフレーズ無しのプライベートkey(2015shigi-key.pem)の読み取り権限が変わっていたら再びchmodで400にしておきます。

これで、パスフレーズを聞かれずにapacheが再起動しました。

# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

※パスフレーズを削除せずに運用する方法は、VirtualHostでSSLパスフレーズ自動入力を参照ください。