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パスフレーズ自動入力を参照ください。
もうひとつのサイト、つまり本サイト(志義どっとPC)もSSL化しました。サーバ証明書はCOMODO Positiveを2年間で2,200円という超格安で購入し、インストールしました。あとでサイトシールを目立つところに貼っておきましょうっと。
パーマネントリンクをデフォルトの%post_id%にしたので、All in One SEO Packのsitemap.xmlやWordpressの仮想robots.txtが使えませんでした。
そこで、sitemapはGoogl XML Sitemapsを利用し、robots.txtは実ファイルで対応しています。