Apache|SSLの設定(サーバ認証・通信の暗号化)

ウェブサイトにSSLを導入することで「なりすましの防止」や「通信の暗号化」をすることができます。ここではCentOS6で動作するWebサーバ(Apache)にSSLを導入する方法について紹介します。

手順

大まかな手順は以下の通りです。

  1. 必要なソフトウェアをインストール
  2. サーバー用秘密鍵を作成
  3. サーバ―用秘密鍵をもとに CSR を作成( CSR には、指定したサーバー情報とサーバーの公開鍵が含まれます)
  4. ベリサインなどの CA(認証局)CSR を送り、証明書を発行してもらう
  5. Apacheに証明書と秘密鍵を組込む

本格的にSSLを導入したい場合は手順4のように商用のCAに証明書を発行してもらう必要があります。ですが、ここではSSL対応のWebサイトをテスト運用したいだけなので自己署名で証明書を作成します。

必要なソフトウェアをインストール

下記ソフトウェアが必要です。

名称 概要
OpenSSL SSLを利用するためのソフトウェア
mod_ssl ApacheでOpenSSLを利用するためのモジュール

インストールされているか確認します。

rpm -qa|grep openssl
rpm -qa|grep mod_ssl

インストールされていなければインストールしてください。

yum install openssl
yum install mod_ssl

サーバー用秘密鍵作成

ディレクトリ移動後、秘密鍵を作成します。

cd /etc/pki/tls/certs/
openssl genrsa -out server.key 2048
612-web-server-ssl-server1.png

server.key という秘密鍵がカレントディレクトリに作成されます。

CSR作成

openssl req -new -key server.key -out server.csr
612-web-server-ssl-server2.png

server.csr というファイルがカレントディレクトリに作成されます。

サーバー証明書作成

本格的にSSLを導入する場合、サーバーで作成したCSRを認証局に提出して証明書の作成を依頼します。ここではテスト用なので自己署名をして証明書を作成します。

openssl x509 -req -in server.csr -signkey server.key -days 3650 -out server.crt

server.crt という証明書がカレントディレクトリに作成されます。なお、daysを3650日と指定しているため作成された証明書は10年間有効となります。

Apache SSL設定

mod_ssl をインストールしたタイミングで /etc/httpd/conf.d/ssl.conf というファイルが作られているはずです。このファイルでSSLの設定をします。

vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/server.key

設定完了後、Webサーバを再起動すればSSLが導入されます。なお、SSL用のポート(デフォルトでは443)をiptablesで許可しておく必要があります。

service httpd restart

SSLを利用したい場合は、httpsとしてアクセスしてください。自己署名のため警告画面が表示されます。

612-web-server-ssl-server3.png

『このサイトの閲覧を続行する』を選択するとテスト運用としてSSLが導入されたWebサイトを閲覧できます。