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>