概要:SSLとはサーバ⇔クライアント間の通信を暗号化して送受信できるプロトコルです。ApacheをSSL対応にするために、Apacheのモジュールmod_sslをインストールし、SSL証明書を作成・設定します。複数のバーチャルホストに対してのSSLの設定方法は後述します。
前提:

1. mod_sslのインストール

mod_sslがインストールされていることを確認します。以下のようにInstalled Packagesとして表示されていればOKです。

# yum list mod_ssl ← mod_sslインストール確認
 :
 :
Installed Packages
mod_ssl.x86_64                       1:2.2.15-29.el6.centos                        updates

インストールされていない場合、次のようにしてyumコマンドでインストールします。

# yum -y install mod_ssl ← mod_sslインストール

mod_sslがインストールされている場合、以下のファイルが存在します。
・/etc/httpd/modules/mod_ssl.so
・/etc/httpd/conf.d/ssl.conf
mod_sslのロードはssl.confの中の初めのあたりに、

LoadModule ssl_module modules/mod_ssl.so

と記述されていて、/etc/httpd/conf/http.confの中には記述されていません。

2. サーバー用秘密鍵・証明書作成

(1)サーバー用秘密鍵・証明書作成(CAからSSL証明書を取得する場合)

CAからSSL証明書を取得する場合は 、CAに送る公開鍵の作成が必要になります。
手順は以下のようになります。
・秘密鍵(server.key)の作成
  openssl genrsa
・公開鍵(server.csr)の作成
  openssl req
・CAへ公開鍵を送ってデジタル証明書の取得
・デジタル証明書(server.crt)の作成
・中間CA証明書(ca-bundle.crt)の作成
以下のmakeを使用した方法で秘密鍵と公開鍵を一度で作成します。makeを使用しない場合は、以下に表示されるコマンドを個別に実行します。
opensslで作成する秘密鍵・公開鍵・自己証明書はSSLを設置するサーバー以外のサーバーで作成して、当該サーバーにコピーして設置可能です。また、設置するディレクトリーもApacheからアクセスできるところであればどこでも設置でき、ファイル名も任意です(作成後に別ファイル名で設置可能)。その設置ディレクトリーとファイル名をssl.confの中で指定します。(ここではディレクトリーは例としてMakefileのある/etc/pki/tls/certsをそのまま使用しています。)

# cd /etc/pki/tls/certs/ ← ディレクトリ移動
# make sever.csr ← サーバー用秘密鍵・公開鍵作成.ファイル名のserver部分は任意、拡張子はcsr
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > server.key ← 秘密鍵を作成
Generating RSA private key, 2048 bit long modulus
......................................................................................+++
................+++
e is 65537 (0x10001)
Enter pass phrase:パスワード ← 任意
Verifying - Enter pass phrase:パスワード ← 上記パスワードを入力
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key server.key -out server.csr ← 公開鍵を作成
Enter pass phrase for server.key:パスワード ← 上記パスワードを入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Chuo-Ku
Organization Name (eg, company) [Default Company Ltd]:Exampel Inc.
Organizational Unit Name (eg, section) []:Exampel Section
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:centos@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

※上記の場合暗号化アルゴリズムがaes128となっていますが、暗号化アルゴリズムを変更したい場合は、Mkaefileの%.keyセクションにあるaes128を修正します。

入力項目の説明

Country Name (2 letter code) [XX]国名。日本の場合"JP"を入力
State or Province Name (full name) []都道府県名
Locality Name (eg, city) [Default City]市町村名
Organization Name (eg, company) [Default Company Ltd]組織名
Organizational Unit Name (eg, section) []部門名
Common Name (eg, your name or your server's hostname) []サーバーのドメイン名を入力.acompass.netなど実際にアクセスされるものを入力
Email Address []メールアドレス(空欄でもよい)
A challenge password証明書を破棄する時に必要になるパスワード(空欄でもよい)
An optional company nameオプションの組織名の入力(空欄でもよい)

上記内容はCAの申請方法に従って入力して下さい。
この後、作成した公開鍵server.csrをCAに送ってSSL証明書を取得します。
SSL証明書(server.crt)はCAから送ってきたSSL証明書デジタルデータを元にCAによる作成方法に従って作成して設置します。
CAから連絡のあった中間CA証明書を作成して設置します。通常CAのサイトからコピーします。

(2)サーバー用秘密鍵・証明書作成(自己証明書の場合)

SSL 通信には CA(Certification Authority, 認証局)が発行した証明書が必要ですが、独自にデジタル証明書を作成することができます。もちろんこの場合は信頼性のないサイトとしてユーザー側には警告が表示されます。以下のmakeで秘密鍵と自己証明書を一度で作成します。ここでは、自己証明書なので毎年更新しなくてもいいようにサーバー用証明書有効期限を1年から10年に変更しています。

# cd /etc/pki/tls/certs/ ← ディレクトリ移動
# sed -i 's/365/3650/g' Makefile ← サーバー用証明書有効期限を1年から10年に変更
# make server.crt ← サーバー用秘密鍵・証明書作成.ファイル名のserver部分は任意、拡張子はcrt
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > server.key ← 秘密鍵を作成
Generating RSA private key, 2048 bit long modulus
....................................................................+++
..........+++
e is 65537 (0x10001)
Enter pass phrase:パスワード ← 任意
Verifying - Enter pass phrase:パスワード ← 上記パスワードを入力
        /usr/bin/openssl req -utf8 -new -key server.key -x509 -days 3650 -out server.crt -set_serial 0 ← 証明書を作成
Enter pass phrase for server.key:パスワード ← 上記パスワードを入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Chuo-Ku
Organization Name (eg, company) [Default Company Ltd]:Exampel Inc.
Organizational Unit Name (eg, section) []:Exampel Section
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:centos@example.com

(3)サーバー用秘密鍵のパスワード削除

Webサーバー起動時にパスワードを要求されないようにするため、サーバー用秘密鍵からパスワード削除します。

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: ← 上記パスワードを入力
writing RSA key

inとoutのファイル名が同じなのでファイルが置き換わります。元ファイルを残しておきたい場合はoutファイル名を変えます。

3. SSL証明書設定

# vi /etc/httpd/conf.d/ssl.conf ← Apache SSL設定ファイル編集
SSLCertificateFile /etc/pki/tls/certs/server.crt ← サーバー用証明書を指定.ディレクトリーは上記で設置した場所.

SSLCertificateKeyFile /etc/pki/tls/certs/server.key ← サーバー用秘密鍵を指定.ディレクトリーは上記で設置した場所.

# 中間CA証明書を設置する場合
SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt ← 中間CA証明書を作成しで設置したディレクトリー.

#  General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html" ← #を削除(コメント解除)し、実際のディレクトリーを指定
  
DocumentRoot "/var/www/acompass/public_html"

4. Apache設定反映

# service httpd configtest ← 設定の確認
Syntax OK
# service httpd graceful ← 設定再読込み

5. ポート443番のOPEN

ネットワーク上でTCP/IPの443番ポートが開いていることを確認してください。(サーバー、クライアント、ルーターなどのファイヤーウォールやセキュリティー設定で OPENされていること。)

6. WebサーバーSSL確認

CA発行のSSL証明書の場合

https://ドメイン名(上記で入力したCommon Name)/にアクセスしてブラウザーから証明書を表示できることを確認し、(ブラウザーによって方法が異なります。)その内容が申請内容と一致しているか確認します。

自己証明書の場合

https://ドメイン名(上記で入力したCommon Name)/にアクセスして「セキュリティの警告」ウィンドウが表示され、"はい"ボタン押下でWebページが表示されればOKです。
なお、https://メイン名/にアクセスして「セキュリティの警告」ウィンドウが 表示されたら、"証明書の表示"⇒"証明書のインストール"を行えば、以降、「セキュリティの警告」ウィンドウは表示されなくなります。

 

最終更新のRSS
Last-modified: 2014-03-11 (火) 02:00:03 (3697d)