FreeBSD 8.4 RELEASE - apache - SSL の設定

クラウディア 
 本ページのファイルの記載に一部誤りがあります。  「トップページ」より、更新日時の新しいものを参考にしてください。
1. 認証ファイルの作成
2. コンフィグレーションファイルの設定
3. クライアント用証明書のコピーとインストール
4. サーバの再起動

1. 認証ファイルの作成

 SSL を有効にする手順の最初に認証ファイルを作成します。認証ファイルがないと、SSL の意味がありません。  オープンなサイトでは、認証証明書のファイルを作成して、認証証明書発行機関に署名してもらう必要がありますが、ここでは、プライベートな、SSL サイトを立ち上げる方法について記述します。  以下の手順で進めていくと、クライアントマシンに証明書がなければ、開けないというサイトになります。  クライアント証明書を、手渡しでしか渡さないように決めておけば、仲間内以外には、まず閲覧できないサイトになります。  認証ファイルの作成に関しては「FreeBSD - メンテナンス・トラブルシュート - SSL(Secure Sockets Layer)」の項をご参照ください。  上記の手順のうち、自前で認証ファイルを作成すると /etc/ssl/demoCA の配下に以下のファイルができているはずです。

|-- cacert.pem
|-- cert.pem			← ①CA証明書
|-- crl
|-- index.txt
|-- index.txt.attr
|-- index.txt.old
|-- newcerts
|   |-- 01.pem
|   `-- user.pfx		← ④クライアント認証ファイル
|-- newkey.pem			← ②ホストキー
|-- newreq.pem
|-- nokey.pem			← ③パスワードなしホストキー
|-- private
|   `-- cakey.pem
|-- serial
`-- serial.old

2. コンフィグレーションファイルの設定

 /usr/local/etc/apache22/httpd.conf の以下の箇所の先頭の # を削除します。

#Include etc/apache22/extra/httpd-ssl.conf
 それから /usr/local/etc/apache22/extra/httpd-ssl.conf を以下のように編集します。

AddType application/x-x509-ca-cert .crt
 を

AddType application/x-x509-ca-cert .cer .crt
 と、変えます。

DocumentRoot "/usr/local/www/apache22/data"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"
 の内容をサーバの設定に合わせて適宜変えます。  以下の内容は証明書関係です。

SSLCertificateFile "/usr/local/etc/apache22/server.crt"
 は前項の「①CA証明書>」の定義です。環境に合わせてディレクトリ名やファイル名を変更してください。

SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"
 は前項の「②ホストキー」もしくは「③パスワードなしホストキー」の定義です。  環境に合わせてディレクトリ名やファイル名を変更してください。

#SSLCARevocationFile "/usr/local/etc/apache22/ssl.crl/ca-bundle.crl"
 ここにも前項の「①CA証明書>」の定義を記述します。  コメントをはずして、環境に合わせてディレクトリ名やファイル名を変更してください。  以下、/usr/local/etc/apache22/Includes/ 配下に適切な名前のコンフィグレーションファイルを作成して以下のように記述します。

SSLVerifyClient 0
 これは、クライアントに対して何を確認するかを示します。  指定できる数字には、0~3 までの範囲がありそれぞれ下記の意味を持ちます。
none クライアントに対して何も確認しない。
1 クライアントに対して証明書の提示を要求する。  クライアントは証明書を提示しなくてもサイトを閲覧できる。  もし認証が提示されれば、サーバに、合法的な認証局(CA)が発行した証明書が格納されていなければならない。
2 クライアントに合法的な証明書の提示を要求する。  クライアントは合法的な証明書を提示しなければサイトを閲覧できない。
3 クライアントに対して証明書の提示を要求する。  クライアントは証明書を提示しなくてもサイトを閲覧できる。  もし認証が提示されても、サーバに格納されている証明書は合法的な認証局(CA)が発行した証明書でなくてもよい。
 デフォルトは何も確認しないようにしておき、各ディレクトリごとにセキュリティをかける強さによって 1~3 を使い分けるようにします。  以降、仮に /usr/local/www/apache22/https 以下を、https のドキュメントルートとすると

<Directory /usr/local/www/https>
    SSLRequireSSL
    SSLVerifyClient require
    AllowOverride None
    Options +Includes -Indexes
    Order allow,deny
    Allow from all
</Directory>
 といった具合に記述します。

3. クライアント用証明書のコピーとインストール

 「1. 認証ファイルの作成」で作成した「④クライアント認証ファイル」をクライアントのマシンにインストールしておかないと、作成した SSL のサイトを閲覧することはできません。  クライアント用証明書をサーバよりクライアントのマシンにコピーします。  クライアントのマシンにコピーしたら、セキュリティの観念から「クライアント認証ファイル」は、サーバ上から削除しておくのが賢明でしょう。  次に、クライアントマシンのブラウザへのインストールです。わたしは、Mozilla Firefox を使用していますので、Mozilla Firefox 3.6.22 へのインストールについて記述します。  Firefox を開きます。  「ツール」→「オプション」→「詳細」→「暗号化」→「証明書を表示」→「あなたの証明書」→「インポート」で証明書ファイルを開きます開きます。  パスワード入力画面が表れますので、クライアント証明書用のパスワードを入力してください。  これで、クライアント証明書のインストールは完了です。

4. サーバの再起動

 以下のコマンドで設定に誤りがないことを確認したら

/usr/local/etc/rc.d/apache22 configtest

/usr/local/etc/rc.d/apache22 restart
 でサーバを再起動します。  SSL のサイトを開くには、https://www.foo.ne.jp の https を間違えないようにしてください。  SSL が有効になっているかどうかは、IE ならば、最下部のステータスバーの右端、地球マークにインターネットと書いてある個所の左に、鍵のマークがついているかどうかでわかります。  鍵マークがついていれば、SSL が有効になっていることを示しており、サーバとクライアントの通信は暗号化されていますので、機密事項も安心してインターネットを通して公開することができます。  ただし、キーは 100% のものではありません。多大な努力をはらうマニアックなクラッカーのターゲットとなれば、SSL サイトを覗き見されるかもしれません。  「FreeBSD - メンテナンス・トラブルシュート - SSL(Secure Sockets Layer)」の認証ファイルの作成の手順をを行えば、新しい証明書やキーファイルを作り直すことができます。  そうやって、定期的に証明書やキーを作り変えておけば、万が一クラッカーに解読されても、作り変えた時点でまたクラッカーは解読作業を行わなければなりませんので、セキュリティ上一層強固なものとなるでしょう。
ハイスピードプラン