4. FreeBSD 11.2 RELEASE - apache - SSL の設定

 
4.1 概要
4.2 コンフィグレーションファイルの設定
4.3 クライアント用証明書のコピーとインストール
4.4 サーバの再起動

4.1 概要

 ここでは SSL すなわち https:// でアクセスさせる方法について記述します。  SSL で接続するには、認証情報のファイルが必要になります。  認証情報の作成については「メンテナンス・トラブルシュート - SSL(Secure Sockets Layer)」をご参照ください。

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

 認証情報を作成して SSL の設定を行います。
/usr/local/etc/apache24/httpd.conf
 の以下の箇所の先頭の「#」を削除してコメント解除します。

#LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so

#LoadModule ssl_module libexec/apache24/mod_ssl.so

#Include etc/apache24/extra/httpd-ssl.conf
/usr/local/etc/apache24/extra/httpd-ssl.conf
 を編集します。  下記をサーバの設定に合わせて適宜変えます。

DocumentRoot "/usr/local/www/apache24/data"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"
 認証情報として作成したもののうち、必要なものを特定のディレクトリにコピーします。

mkdir -pv /パス
cp /etc/ssl/demoCA/cert.pem   /パス/cert.pem
cp /etc/ssl/demoCA/nokey.pem  /パス/nokey.pem
cp /etc/ssl/demoCA/cacert.pem /パス/cacert.pem
 /usr/local/etc/apache24/extra/httpd-ssl.conf を以下のように編集します。

SSLCertificateFile "/パス/cert.pem"
#SSLCertificateFile "/usr/local/etc/apache24/server-dsa.crt"
#SSLCertificateFile "/usr/local/etc/apache24/server-ecc.crt"

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "/パス/nokey.pem"
#SSLCertificateKeyFile "/usr/local/etc/apache24/server-dsa.key"
#SSLCertificateKeyFile "/usr/local/etc/apache24/server-ecc.key"

#   Server Certificate Chain:
#   Point SSLCertificateChainFile at a file containing the
#   concatenation of PEM encoded CA certificates which form the
#   certificate chain for the server certificate. Alternatively
#   the referenced file can be the same as SSLCertificateFile
#   when the CA certificates are directly appended to the server
#   certificate for convenience.
#SSLCertificateChainFile "/usr/local/etc/apache24/server-ca.crt"

#   Certificate Authority (CA):
#   Set the CA certificate verification path where to find CA
#   certificates for client authentication or alternatively one
#   huge file containing all of them (file must be PEM encoded)
#   Note: Inside SSLCACertificatePath you need hash symlinks
#         to point to the certificate files. Use the provided
#         Makefile to update the hash symlinks after changes.
#SSLCACertificatePath "/usr/local/etc/apache24/ssl.crt"
SSLCACertificateFile  "/パス/cacert.pem"

/usr/local/etc/apache24/Includes/
 配下に適切な名前のコンフィグレーションファイルを作成して、https でアクセスさせたいディレクトリを以下のように記述します。

<Directory /usr/local/www/https>
    SSLRequireSSL
    SSLVerifyClient require
    AllowOverride None
    Options +Includes -Indexes
    Require all granted
</Directory>
 4行目は、クライアントに要求する認証情報を示します。    指定する値は、数字もしくは文字で、4種類あり、それぞれ下記の意味を持ちます。
数字 文字 意味
0 none クライアントに対して何も確認しない。
1 optional クライアントに対して証明書の提示を要求する。
クライアントは証明書を提示しなくてもサイトを閲覧できる。
もし認証が提示されれば、サーバに、合法的な認証局(CA)が発行した証明書が格納されていなければならない。
2 require クライアントに合法的な証明書の提示を要求する。
クライアントは合法的な証明書を提示しなければサイトを閲覧できない。
3 optional_no_ca クライアントに対して証明書の提示を要求する。
クライアントは証明書を提示しなくてもサイトを閲覧できる。
もし認証が提示されても、サーバに格納されている証明書は合法的な認証局(CA)が発行した証明書でなくてもよい。

 デフォルトは何も確認しないようにしておき、各ディレクトリごとにセキュリティをかける強さによって 1~3 を使い分けるようにします。
 以降、仮に /usr/local/www/https 以下を、https のドキュメントルートとすると

 といった具合に記述します。(ここは、先に編集した、/usr/local/etc/apache24/extra/httpd-ssl.conf のドキュメントルートと合わせる必要があります)

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

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

4.4 サーバの再起動

 以下の設定に誤りがないことを確認して、apache を再起動します。

service apache24 configtest
service apache24 restart
 SSL のサイトを開くには、https://hogehoge.jp の https を間違えないようにしてください。  SSL が有効になっているかどうかは、Firefox ならば、ロケーションを表示しているバーの先頭に、鍵のマークがついているかどうかでわかります。  鍵マークがついていれば、SSL が有効になっていることを示しており、サーバとクライアントの通信は暗号化されています。  「メンテナンス/SSL」の認証ファイルの作成の手順をを行えば、新しい証明書やキーファイルを作り直すことができます。  そうやって、定期的に証明書やキーを作り変えておけば、万が一クラッカーに解読されても、作り変えた時点でまたクラッカーは解読作業を行わなければなりませんので、セキュリティ上一層強固なものとなるでしょう。