LinuCレベル2 Webサーバーとプロキシサーバー 問33
Webサーバーとプロキシサーバー/OpenSSLとHTTPSの設定Apacheのmod_sslでクライアント証明書を検証するため、SSLVerifyClient require とともに SSLCACertificatePath でディレクトリを指定し、PEM形式のCA証明書ファイルを複数置いた。しかし、置いたCA証明書が検証に使われない。必要な作業として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「Webサーバーとプロキシサーバー」に対応。実際の試験問題ではありません)
- Aopenssl rehash(または c_rehash)で、証明書のハッシュ値を名前にしたシンボリックリンクを作る
- Bopenssl x509 -outform DER で各証明書をDER形式に変換し、変換したファイルに置き換える
- C各証明書の拡張子を .pem から .key に変え、Apacheが読み込み対象と判断できるようにする
- D各証明書をサーバー証明書のファイルの末尾に連結し、SSLCertificateFileで指定し直す
正解:A
解説
SSLCACertificatePathで指定したディレクトリ内の証明書は、ファイル名ではなく、証明書のサブジェクトから計算したハッシュ値の名前(hash.0 等)で探されます。そのため、証明書を置くだけでなく、openssl rehash や c_rehash でハッシュ値の名前のシンボリックリンクを作る必要があります。証明書を追加・削除したときも、リンクを作り直します。CA証明書が少なければ、1つのファイルにまとめてSSLCACertificateFileで指定する方法もあります。
選択肢ごとの解説
- A正しい。ディレクトリ内の証明書はハッシュ値の名前で探されるため、openssl rehash等でシンボリックリンクを作ります。
- B誤り。SSLCACertificatePathのディレクトリに置く証明書はPEM形式である必要があり、DER形式に変換すると読めなくなります。
- C誤り。拡張子で読み込み対象が決まるわけではなく、.keyは秘密鍵に使われる拡張子です。ハッシュ値の名前のリンクが必要です。
- D誤り。SSLCertificateFileはサーバー証明書(と中間CA証明書)を指定するもので、クライアント証明書の検証に使うCAの指定ではありません。