FreeBSD 12.3 RELEASE - apache24 - アクセス制限・SSL

クラウディア 
1. 概要
2. コンフィグレーションファイルの設定
3. クライアント用証明書のコピーとインストール
4. サーバの再起動

1. 概要

 インターネットに公開しているウェブサーバであっても、構築中のサイトや、組織に所属している者だけにしか公開したくないサイト等があります。  そういう場合にアクセス制限をかける方法について「FreeBSD - メンテナンス・トラブルシュート - ウェブサーバ」に記述してありますので、ご参照ください。  以下「SSL」、すなわち「https://」でアクセスさせる方法について記述します。  「SSL」で接続するには、認証情報のファイルが必要になります。  認証情報の作成については「メンテナンス・トラブルシュート - SSL(Secure Sockets Layer)」をご参照ください。

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

 認証情報を作成後、「SSL」の設定を行います。

vi /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
 次に

vi /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
 再度

vi /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>
 1行目は、「/usr/local/etc/apache24/extra/httpd-ssl.conf」のドキュメントルートと合わせる必要があります)  4行目は、クライアントに要求する認証情報を示します。    指定する値は、数字もしくは文字で、4種類あり、それぞれ下記の意味を持ちます。
数字  文字    意味  
0 none クライアントに対して何も確認しない。
1 optional クライアントに対して証明書の提示を要求する。
クライアントは証明書を提示しなくてもサイトを閲覧できる。
もし認証が提示されれば、サーバに、合法的な認証局(CA)が発行した証明書が格納されていなければならない。
2 require クライアントに合法的な証明書の提示を要求する。
クライアントは合法的な証明書を提示しなければサイトを閲覧できない。
3 optional_no_ca クライアントに対して証明書の提示を要求する。
クライアントは証明書を提示しなくてもサイトを閲覧できる。
もし認証が提示されても、サーバに格納されている証明書は合法的な認証局(CA)が発行した証明書でなくてもよい。

 デフォルトは何も確認しないようにしておき、各ディレクトリごとにセキュリティをかける強さによって 1~3 を使い分けるようにします。

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

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

4. サーバの再起動

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

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