FrontPage | changes | index | create | search | preferences |

SSL

Last-Modified: Fri May 05 19:15 2006; by KM
edit | copy | diff | rlog | raw
  1. 準備
    1. 保存ディレクトリの作成
    2. 秘密鍵の生成
    3. CSRの作成
  2. CSRの提出
    1. 自己署名
  3. サーバーの設定
  4. 関連情報

Apache2で、SSL(Secure Sockets Layer)を使うための設定メモです。

準備

普通に、portsから導入したApache2は、既にSSLに対応している*1ので、追加のモジュール等のインストールは不要である。 後は、サーバーの秘密鍵を生成して、証明書を貰うだけで、ほとんど設定は終わり。

*1make時、明示的に「WITHOUT_SSL=yes」を指定しない限り、SSLモジュールは標準でビルドされる。

保存ディレクトリの作成

まず、Apache2の設定ファイルが置いてあるディレクトリに入り、その中に、サーバーの秘密鍵と証明書を入れるディレクトリを作成する。

 # cd /usr/local/etc/apache2/
 # mkdir -m 0700 ssl.{key,crt}

この中に入るファイルを他人に覗かれないよう、予めディレクトリのパーミッションを落としておいた方が良い。

秘密鍵の生成

次に、サーバーの秘密鍵を生成する。

 # cd ssl.key/
 # openssl genrsa -out server.key 1024

CSRの作成

その秘密鍵を基に、CSR(Certificate Signing Request 証明書署名要請書)を作成。

 # openssl req -new -key server.key -out server.csr

その際、対話的に、国名や住所などを質問されるけれども、適切なものを入力*2すること。そのまま、ENTERを押してスキップすると、デフォルトで用意されている値になってしまうので、空欄を明示したければ、「.」ピリオドだけを入力し、ENTERを押さなくてはならない。

*2認証機関は、ここで入力された情報に基づいて証明書を作成する。注意点として、「Common Name」の入力欄は、例えば「www.xdelta.net」の様に、サーバーの名前にすること。「*.xdelta.net」の様にワイルドカードも使用可能。

CSRの提出

作成したCSRを認証機関に提出し、その秘密鍵で、署名*3してもらう必要がある。

署名された証明書(CRT)は、/usr/local/etc/apache2/ssl.crt/に置く。

*3大抵、商用の認証局であれば、そのルート証明書は予めWebブラウザ内に組み込まれている(単一のルート証明)ので、PCで閲覧する場合にはまず問題ないと思われるが、携帯電話等の特殊なWebブラウザの場合、商用の認証機関であっても対応していないものがある(つまり、閲覧できない場合がある)ので、認証局を選ぶ際には、そういった問題にも留意しておく必要がある。

自己署名

CSRを作成した鍵自体で署名し、証明書を生成するには、以下のようにする。ただし、ブラウザでは警告されることが予想されるので、あくまでも、相手が特定していて、簡易にSSLを導入したいと言った場合の用途向け。

 # openssl x509 -in server.csr -out server.crt \
   -req -signkey server.key -days 365

この例では、daysオプションの引数に、365を指定して、証明書の有効期間を一年としている。

サーバーの設定

サーバーの秘密鍵と証明書を、それぞれ、

  • /usr/local/etc/apache2/ssl.key/server.key
  • /usr/local/etc/apache2/ssl.crt/sever.crt

の位置に保存*4したのなら、/usr/local/etc/apache2/ssl.conf内の以下の箇所、

 DocumentRoot "/usr/local/www/data"
 ServerName www.example.com:443
 ServerAdmin you@example.com

を適宜、変更するだけで行けるはず。 後は、/etc/rc.confに、以下の行、

 apache2ssl_enable="YES"

を追加して、サーバーを次のように、

 /usr/local/etc/rc.d/apache2 restart

再起動すれば、SSLは有効になる。

通常、443番のポートでListenするので、外部からのアクセスを通したければ、Firewall等の設定を変えておく必要がある。

*4念のために各ファイルのパーミッションは600のように落とした方が望ましい。

関連情報

  • FreeBSD/Apache2 - このWikiフォーラム内のApache 2.0に関するものの目次です。 F...