LinuCレベル3 304試験の例題と解説
325.2 暗号化、署名および認証のX.509 証明書
■トピックの概要
このトピックの内容は以下の通りです。
<325.2 暗号化、署名および認証のX.509 証明書>
重要度 4
<説明>
サーバー認証とクライアント認証両方のX.509証明書の使用方法を理解していることが求められる。また、Apache HTTPD のユーザー認証とサーバー認証の実装ができること。Apache HTTPD のバージョンは2.4以降とする。
<主要な知識範囲>
・SSL、TLSおよびプロトコルのバージョンの理解。
・一般的なトランスポート層のセキュリティの脅威、例えば Man-in-the-Middleの脅威の知識。
・SNIやHSTSを含む、HTTPSサービスにmod_sslを使用したApache のHTTPDの設定。
・証明書を使用した認証ユーザにmod_sslを使用したApache HTTPDの設定。
・OCSP staplingを提供するためのmod_sslを使用したApache HTTPDの設定。
・SSL/TLSクライアント、サーバーのテストでのSSLの使用。
<重要なファイル、用語、ユーティリティ>
・中間認証局
・Cipher の設定(cipher固有の知識ではありません)
・httpd.conf
・mod_ssl
・openssl
■例題
Apache HTTPDのクライアント認証を行う設定の解説として不適切なものを選択してください。
1. SSLVerifyClientは、クライアント証明書の検査の挙動を変更するディレクティブである
2. SSLVerifyDepthは、証明書の検証を行う最大深度を設定するディレクティブである
3. SSLUserNameは、Apache HTTPDがSSLの処理を行うプロセスの実行ユーザを設定するディレクティブである
4. SSLCACertificateFileは、クライアント認証用のCAファイルのパスを設定するディレクティブである。
※この例題は実際の試験問題とは異なります。
解答と解説
答えは「3. SSLUserNameは、Apache HTTPDがSSLの処理を行うプロセスの実行ユーザを設定するディレクティブである」です。
「SSLUserName SSL_CLIENT_S_DN_CN」などと設定をした場合、クライアント証明書に含まれれるのCNの値が、userフィールドの値になります。この値は、環
境変数REMOTE_USERなどに利用され、他のアプリケーションで接続したユーザを特定する場合などに利用されます。
その他のディレクティブの解説は以下の通りです。
SSLVerifyClientはクライアント証明書の検査の挙動を変更するためのディレクティブです。
設定は以下が挙げられます。
none … 証明書の検証を行わない
optional … クライアントが証明書を送信してきた場合のみ検証する
require … 必ず証明書の検証を行う
optional_no_ca … クライアントが証明書を送信してきた場合のみ検証する。検証時にCAとの整合性を検証しない。
SSLVerifyDepthは、証明書の検証の深度を定義します。
検証対象の証明書を保証するためのチェインが3階層ある場合は、この設定が3以上である必要があります。
SSLCACertificateFileは、クライアント認証用のCAファイルのパスを設定するディレクティブです。
クライアント証明書の検証に必要なCAを全て一つのファイルに格納して、設定する必要があります。
類似の項目としてSSLCACertificatePathがあり、こちらはCAのファイルを配置するディレクトリのパスを指定することができます。
Apache HTTPDのSSL関連のディレクティブは多く存在します。
その一つ一つがセキュリティに深く関連するものですので、動きが不明なものは、事前に確認を行ないましょう。
■例題作成者 株式会社デージーネット ソリューション開発部 森 彰吾 氏