SSLの申請と設置

SSLサーバー証明書の申請と設置方法を書きます。

前提条件として Apache / mod_ssl は普通に使える環境であるものとします。

■ 事前準備

(1) OpenSSLがインストールされているか確認

# openssl version

OpenSSL 1.0.0-fips 29 Mar 2010
などと表示されればOK.

インストールされていなければインストール
# yum install openssl

(2) 申請書、証明書の保存場所を作成しておく

Apache の conf のパスに移動して

# cd /etc/httpd/conf/

# mkdir ssl.key
# mkdir ssl.csr
# mkdir ssl.crt

■ 運用するURLの例

--------------------------------------------------
コモンネーム               www.domain.com
--------------------------------------------------
秘密鍵のファイル名         www.domain.com.key (*1)
CSRのファイル名            www.domain.com.csr (*2)
サーバ証明書ファイル名     www.domain.crt   (*3)
中間証明書ファイル名       hogehoge-ca.cer  (*4)
--------------------------------------------------
SSL設定ファイル            /etc/httpd/conf.d/ssl.conf
秘密鍵の保存ディレクトリ   /etc/httpd/conf/ssl.key/
CSRの保存ディレクトリ      /etc/httpd/conf/ssl.csr/
証明書の保存ディレクトリ   /etc/httpd/conf/ssl.crt/
--------------------------------------------------

(*1)秘密鍵は、サーバーで自分で生成します。
(*2)CSRは、申請のリクエストに必要です。自分で作成します。
(*3)申請後、CA(認証局)から発行されます。
(*4)CAによっては発行されるSSLサーバー証明書の設置に中間証明書が必要な場合があります。
 必要に応じCAのホームページからダウンロードします。

■ CSR(申請のためのリクエストファイル)作成

(1) 秘密鍵を作成

まず、何はともあれRSA形式の秘密鍵を作成します。
※鍵のビット長は、2048以上にします。

# cd /etc/httpd/conf/

# openssl genrsa -out ./ssl.key/www.domain.com.key 2048

(2) CSRを作成

作成した鍵を使ってCSRを作成します。

# openssl req -new \
	-key ./ssl.key/www.domain.com.key \
	-out ./ssl.csr/www.domain.com.csr

申請情報の入力を求められます。
すべて半角英数字で入力します。

Country Name             ※国を示す2文字のISO略語( JP 等)
State or Province Name   ※組織が置かれている都道府県
Locality Name            ※組織が置かれている市区町村
Organization Name        ※組織の名称
Organization Unit Name   ※組織での部署名 (ハイフン - でも可)
Common Name              ※運用するURLのFQDN www.domain.com
Email Addres             入力不要
A challenge password     入力不要
An optional company name 入力不要

※印は必須です。
Common Name はドメイン名ではなく運用するURLのhttps://のホスト名です。
www ありの運用をする場合は www を省力しないように注意します。

作成した鍵、CSRの内容を確認するには

秘密鍵の内容を確認
# openssl rsa -text -noout -in ./ssl.key/www.domain.com.key

CSRの内容を確認
# openssl req -text -noout -in ./ssl.csr/www.domain.com.csr

■ SSLサーバー証明書の申請

申請に必要なのは CSRファイルのみです。

一般的にSSLサーバー証明書の申請は、CA(認証局)か再販業者のホームページの購入フォームにCSRファイルの中身(テキスト)を貼り付けて送信します。
その際に、審査の一環として申請者を認証するための連絡用メールアドレスを入力します。
メールアドレスは非常に重要です。必ずメールが受け取れるアドレスを指定します。

個人の場合は申請時に指定したメールアドレスに手続きの確認のページURLが送られてきますので、そのページに従ってボタンをクリックして手続きを進めます。
法人の場合は書類審査が必要な場合があり、案内のメールが送られてきますのでそれに従います。

■ SSLサーバー証明書の設置

審査が終了すると申請時に指定したメールアドレスにSSLサーバー証明書が発行されます。
SSLサーバー証明書はただのテキストファイルです。
添付ファイルまたはメール本文にテキストで貼り付けられて送られます。

(1) 証明書の設置

Apache の conf のパスに移動して

# cd /etc/httpd/conf

SSLサーバー証明書をコピーしてサーバに保存します。
FTPで転送してファイル名を変更するかまたは新規作成します。

# vi ./ssl.crt/www.domain.com.crt

-----BEGIN CERTIFICATE-----から
-----END CERTIFICATE-----までをコピー&ペーストします。


中間証明書が必要な場合はコピーしてサーバに保存します。
FTPで転送してファイル名を変更するかまたは新規作成します。

# vi ./ssl.crt/hogehoge-ca.cer

-----BEGIN CERTIFICATE-----から
-----END CERTIFICATE-----までをコピー&ペーストします。

(2) SSLの設定(IPベース)

設定ファイル ssl.conf にSSLの設定を行います。

/etc/httpd/conf.d/ssl.conf

#<VirtualHost _default_:443> ← コメントアウト、以下に変更
<VirtualHost xxx.xxx.xxx.xxx:443> ← このサーバーのIP
DocumentRoot xxxxxxxx
ServerName xxxxxxxx
ErrorLog xxxxxxxx
CustomLog xxxxxxxx

SSLEngine on
SSLCertificateFile      /etc/httpd/conf/ssl.crt/www.domain.com.crt
SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/www.domain.com.key
SSLCACertificateFile    /etc/httpd/conf/ssl.crt/hogehoge-ca.cer
</VirtualHost>

(3) SSLの設定(ネームベース)

Apache 2.2.12以降、OpenSSL 0.9.8f以降の環境であれば、SNIという方式で、1つのIPでもネームベースで複数のSSLサーバー証明書を設定できます。
ただし、Windows XPのIEはこの方式で設置されたSSLをサポートしていません。
また、クレジット決済サービスなどのASPサービスの中にはこの方式でうまく動かない場合があります。

/etc/httpd/conf.d/ssl.conf


NameVirtualHost *:443

<VirtualHost _default_:443>
 この間は、デフォルトの設定として変更しない
 ただし、SSL運用するServerNameと違うものにしておく
 ServerName localhost とか、サーバーのホスト名とか
</VirtualHost>

<VirtualHost *:443>
DocumentRoot xxxxxxxx
ServerName xxxxxxxx
ErrorLog xxxxxxxx
CustomLog xxxxxxxx

SSLEngine on
SSLCertificateFile      /etc/httpd/conf/ssl.crt/www.domain.com.crt
SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/www.domain.com.key
SSLCACertificateFile    /etc/httpd/conf/ssl.crt/hogehoge-ca.cer
</VirtualHost>

コメントを残す