本稿では CentOS 6 にインストールされた Apache httpd 2.2 に HTTPS (SSL/TLS) の設定をする手順について説明します。
mod_ssl をインストール
Apache httpd で HTTPS での接続を実現するためには、mod_ssl というモジュールを利用します。 mod_ssl は、SSL v2, SSL v3, TLS v1 という暗号通信方式をサポートしています。 (TLS は SSL 3.0 の次のバージョンです)
Apache httpd 2.2 を yum でインストールした場合は、mod_ssl を yum で追加インストールすれば良いです、次のコマンドでインストールできます。
# yum -y install mod_ssl
インストールが完了すると /etc/httpd/conf.d/ssl.conf に mod_ssl の設定ファイルが作成されます。
秘密鍵・SSL証明書の準備
HTTPS での通信を実現するためには、サーバの秘密鍵とSSL証明書が必要ですので予め準備をしておいてください。 SSL証明書の作成については、別稿「OpenSSL で SSL 自己証明書を発行する手順」などを参考にしてください。
秘密鍵・SSL証明書は、/etc/httpd/conf/ssl というフォルダを作成し、そこに保存することとします。 秘密鍵を server.key 、サーバ証明書を server.crt というファイルで保存したこととします。
設定
mod_ssl のインストールで作成された ssl.conf を設定します。 ファイルを開くと VirtualHost の設定があり、ここを設定することが主な作業となります。 項目 SSLCertificateFile にサーバ証明書のパスを、項目 SSLCertificateKeyFile に秘密鍵のパスを設定します。
... (略) ...
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/conf/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key
...
なお、項目 SSLProtocol は、HTTPS 接続を許可するSSL/TLSのプロトコルのバージョンを設定する項目です。 脆弱性のない TLS 1.2 での接続だけを許可したいところですが、現実的にはそういうわけにはいきません。 WEBサイトの利用者の特性にあわせて許可するプロトコルを決定してください。 詳細は「Apache httpd で接続を許すSSL/TLSのバージョンを制限する方法」をご覧ください。
再起動
最低限、上記を設定すれば HTTPS の接続が可能になりますので、Apache httpd を再起動して設定を有効化します。 秘密鍵にパスワードを設定している場合は、Apache の起動時にパスワードの入力が求められます。
# service httpd restart
Enter pass phrase:パスフレーズ入力
起動したら URL のプロトコル部を https に変更して WEB ページにアクセスしてみましょう。 これでアクセスできれば設定は完了です。
おわりに
本稿では CentOS 6 にインストールされた Apache httpd 2.2 に HTTPS でアクセスできるようにする設定の方法について解説しました。