Apache httpd 2.2 に HTTPS (SSL/TLS) の設定をする (CentOS 6)

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本稿では 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 自己証明書を発行する手順」などを参考にしてください。

OpenSSL

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 でアクセスできるようにする設定の方法について解説しました。

Apache httpd 入門へ戻る

Apacheのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca