SSLを利用する方法


SSLとは

SSLはWebブラウザとWebサーバーの間でやり取りする情報を暗号化して通信するためのプロトコルです。
暗号化とは通常なら平文でやり取りされている情報を、第3者がわからないように形式に変換することです。

SSL暗号化通信の流れ

クライアント側が共通鍵を使って暗号化したデータをサーバ側に送り、サーバ側は事前にクライアント側から送られた共通鍵を使ってデータを復号します。公開鍵、秘密鍵はクライアント・サーバ間で事前に共通鍵を安全に授受するために使用されます。

  1. 接続要求
    クライアント(PCのブラウザ)から、セキュアなページ(https://~)ヘアクセスをし、SSL暗号化通信で接続を要求します。
  2. サーバー証明書(公開鍵付き)送付
    Webサーバーは、自身を証明するSSLサーバー証明書をクライアントへ送ります。このサーバー証明書は認証局(CA)(※)が発行する「身元保証つき公開鍵」のことです。
    (※)デジタル証明書の発行をする組織のこと。通常はシマンテックやGeotrustなどの民間企業が認証局になる。認証局は、鍵と証明書のライフサイクル管理したりデジタル証明書の発行を申請した人の正当性の審査などを行なう。
  3. データ本体の暗号化、共通鍵の生成と暗号化
    クライアントは共通鍵を生成し、データ本体の暗号化を行います。
    またSSLサーバー証明書を受け取り、SSLサーバー証明書からWebサーバーの公開鍵を取得し、取得した公開鍵で生成した共通鍵を暗号化します。
  4. 暗号化されたデータと共通鍵の送付
    クライントは暗号化したデータと暗号化した共通鍵をWebサーバーへおくります。
    Webサーバーは暗号化された共通鍵をWebサーバーの秘密鍵で復号化します。復号化した共通鍵を用いて暗号化されたデータを復号化します。
  5. 暗号化通信開始
    クライアント、Webサーバーの両者が共通鍵を用いて、SSL通信が行われます。

SSLの導入方法

Apache + OpenSSLを新規に生成する手順についてまとめます。(OpenSSLがインストールされていることを想定します。)

SSL通信を利用するには公開鍵と秘密鍵のペアならびにデジタル証明書が必要になります。これらをOpenSSLコマンドを利用して生成します。
生成するファイルは以下の3つです。

  1. 秘密鍵ファイル:www.hogehoge.com.key
  2. CSRファイル(公開鍵+証明書申請情報):www.hogehoge.com.csr
  3. デジタル証明書:www.hogehoge.com.crt

Webサーバーの秘密鍵の生成

擬似乱数ファイルの作成

秘密鍵作成のための擬似乱数の情報を生成します。

秘密鍵を作成する任意のディレクトリに移動します。

今回はMD5(ハッシュ関数)を擬似乱数として使用します。

秘密鍵ファイルの作成

作成した擬似乱数ファイル(rand.dat)から、秘密鍵を作成します。

※RSA形式(genrsa)、2048bitの秘密鍵www.hogehoge.com.keyを作成しました。

Webサーバーの公開鍵の生成

CSRファイルの作成

CSRファイルとは、公開鍵の情報の他に、作成時に指定する組織名や組織の所在地などの情報を含むデータのことです。CSRファイルは認証局からデジタル証明書を発行してもらうときに必要になります。
次の様に入力します。

入力すると、ディスティングイッシュネーム情報(公開鍵情報)の入力が求められます。
入力する情報は下記のとおりです。

  • Country Name:国名:例)JP
  • State or Province Name:例)都道府県名:Tokyo
  • Locality Name:区町村名:例)Chiyoda-ku
  • Organization Name:組織名:例)HOGEHOGE CO.,LTD.
  • Organizational Unit Name:部門名:例)system
  • Common Name:導入するサイトのURL:例)www.hogehoge.co.jp
  • Email Address:メールアドレス:例)yoshihiro@hogehoge.co.jp
  • A challenge password:証明書を破棄する場合に必要になるパスワード
  • An optional company name:別の組織名がある場合その組織名

※「A challenge password」と「An optional company name」は空欄でもかまいません。

以上でCSRファイルが生成できました。
生成されたCSRの内容はSSLを申請する際に利用します。

デジタル証明書の作成

SSL通信にはCAが発行した証明書が必要です。一般的にはシマンテックやGeotrustなどから正式なデジタル証明書を発行してもらいます。

  • 申込画面から先ほど作成したCSRの内容を入力欄に貼り付けます。
  • 申請する企業情報(自社)の情報を入力します。
  • 任意の承認方法を選択します。

以上で申請を行なうと、デジタル証明書と中間証明書の記載されたメールが届きます。

デジタル証明書の適用

1.SSLサーバー証明書を保存
CAから送られてきたSSLサーバー証明書をwww.hogehoge.com.crtとして保存します。

2.中間証明書の準備
CAから送られてきた中間証明書をwww.hogehoge.com.cb_crtに保存します。

3.SSLサーバー証明書のインストール
SSL設定ファイルssl.confに秘密鍵、デジタル証明書、中間証明書のパスを記述します。

4.apacheを再起動します
再起動する前に記述した構文が正しいか、service httpd configtest で確認を行います。問題ないようでしたらservice httpd restart で適用します。