Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

4.13.1 SSL使用による認証情報とデータの暗号化

SSLをサポートするWebサーバとの連携では,WebサーバとWebクライアント間のSSLによる暗号化が有効になります。

<この項の構成>
(1) Webサーバの認証機能
(2) 通信路のセキュリティレベルの要請
(3) SSLで使用された証明書情報の取得

(1) Webサーバの認証機能

Webサーバの機能には,サーバ認証の機能とクライアント認証の機能があります。

サーバ認証
サーバ認証では,サーバにインストールされた鍵交換用の証書を用いて,ブラウザからサーバあてに共通鍵の基となる乱数情報を暗号化して送ります。
この暗号を解くための秘密鍵は,鍵交換用の証書の持ち主であるサーバだけが知っているので,クライアントから見て正当なサーバの場合だけ,ハンドシェイクが成立します。この過程では,サーバは電子署名をしませんが,ハンドシェイクの成立後にサーバが正当であるかどうかの見直しができます。

クライアント認証
クライアント認証では,サーバからブラウザに乱数データを送ってクライアントで電子署名を付与させて,ブラウザにインストールされた電子署名用の証書とともにサーバに送り返させます。
乱数データにブラウザが電子署名を付けて見せることで,ブラウザ自身が秘密鍵を保有していることをサーバに証明します。これによって,サーバ側では,クライアントが証明書に対応した秘密鍵を所有していることを確認できます。

なお,ここで説明するSSL関連の機能を使用する場合,あらかじめWebサーバであるHitachi Web ServerまたはMicrosoft IISにSSLの設定をしておく必要があります。Hitachi Web ServerまたはMicrosoft IISのSSLの設定方法については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

(2) 通信路のセキュリティレベルの要請

WebアプリケーションからWebコンテナに対して,通信路の暗号化レベルの要請をします。通信路の暗号化レベルの要請は,Webサーバと連携する場合に使用できます。

暗号化レベルには,保護なし(NONE),改ざん防止(INTEGRAL),または秘匿(CONFIDENTIAL)の3段階を指定できます。暗号化レベルに,改ざん防止または秘匿が指定された場合に,SSLが使用されます。

この機能を使用すると,保護が要求されたページに対してアクセスできるのは,SSLを使用したアクセスだけに限定できます。保護が要請されたページに対してブラウザがHTTPでリクエストを送った場合,Webコンテナはブラウザに対してHTTPSで同じページに再度アクセスを要求するHTTPレスポンスを返します。その結果,ブラウザはHTTPSで同じページにアクセスし直します。なお,セキュリティレベルの設定は,Webアプリケーション全体だけではなく,Webアプリケーション内の一部のページに対しても指定できます。これによって,HTTPS以外での該当ページへのアクセスを防止します。

通信路の暗号化レベルの要請は,J2EEアプリケーションに含まれるWebアプリケーションのDD(WEB-INF/web.xml)として設定します。J2EEアプリケーションの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

注意
Webサーバと連携している場合で,転送先のHTTPSのポート番号を設定していない場合,保護が要請されたページに対してアクセスすると403エラーになります。
なお,インプロセスHTTPサーバまたは簡易Webサーバを使用している場合は転送先のHTTPSのポート番号の設定内容にかかわらず,保護が要請されたページにはアクセスできません。403エラーになります。
転送先のHTTPサーバのポート番号の設定は,J2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。

(3) SSLで使用された証明書情報の取得

サーブレットのAPIによって,ハンドシェイクで用いられた証書についての情報,およびハンドシェイクの結果選択された暗号化アルゴリズムについての情報を取得できます。

クライアント認証を用いた場合,クライアントが提示したX.509証書に記載された事項がjava.security.cert.X509Certificateクラスのオブジェクトとして取得できます。

なお,クライアント証明書情報をサーブレット内で取得できるのは,SSLのクライアント認証をした場合だけです。SSLのクライアント認証をする場合,Webサーバで設定する必要があります。

また,WebサーバにMicrosoft IISを使用してWebコンテナと連携している場合,Servlet v2.3仕様で定められている「javax.servlet.request.cipher_suite」によるSSL通信時の暗号化アルゴリズムの取得はできません。