ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express Java EE運用ガイド(Java EE 6編)
FUJITSU Software

5.3.3 SSL

Java EE 6実行環境におけるSSLのサポート範囲は以下のとおりです。

項目

サポート範囲

証明書のニックネーム

JDKのkeytoolコマンドで指定可能な文字列

プロトコルバージョン

SSL3.0

TLS1.0

暗号化方式

使用するJDKがサポートする暗号化方式

クライアント認証

以下から選択可能

  • 認証しない

  • クライアント証明書が送信された場合のみ認証

  • 必ず認証

証明書

認証局証明書

鍵生成アルゴリズム

RSA

鍵長

2048bit

署名アルゴリズム

SHA1withRSA

自己署名証明書

鍵生成アルゴリズム

RSA

鍵長

2048bit

署名アルゴリズム

SHA256withRSA

5.3.3.1 Java EE 6実行環境の設定

証明書のニックネーム

Java EE 6実行環境で使用する証明書を対応するキーストアの別名で指定します。設定の詳細についてはネットワーク設定の定義項目「証明書のニックネーム」を参照してください。


プロトコルバージョン

SSL/TLSのプロトコルバージョンの有効/無効を設定により変更可能です。設定の詳細については、ネットワーク設定の定義項目「SSL3.0有効化」、「TLS1.0有効化」を参照してください。


暗号化方式

SSLのサーバ、クライアント間でコネクション確立時に選択される暗号化方式のリストを設定します。設定の詳細については、ネットワーク設定の定義項目「暗号化方式群」を参照してください。


クライアント認証

クライアント認証では、SSLのサーバがクライアントから送信された証明書を使って、クライアントの本人確認を行います。

動作の詳細については、ネットワーク設定の定義項目「クライアント認証」を参照してください。


5.3.3.2 証明書

証明書はデジタル署名された公開鍵で、ペアの秘密鍵を持っています。SSLでは以下の証明書を使用します。

証明書は、マスターパスワードで保護されたキーストア/トラストストアに登録します。マスターパスワードの詳細は「5.2.8 マスターパスワード」を参照してください。

キーストア/トラストストアはJDKのkeytoolコマンドで操作します。キーストア/トラストストア内の証明書は別名により一意に識別されます。keytoolコマンド、別名の詳細は、JDKの情報を参照してください。キーストア/トラストストアに格納する証明書は、それぞれ以下のとおりです。

認証局が署名した証明書を使用する場合
  • キーストア

    • ルート認証局または中間認証局によって署名された、サーバ(クライアント)証明書

    • サーバ(クライアント)証明書に対応する秘密鍵

    • ルート認証局の証明書

    • 中間認証局の証明書(必要な場合)

  • トラストストア

    • サーバ(クライアント)が信頼するルート認証局の証明書

    • サーバ(クライアント)が信頼する中間認証局の証明書(必要な場合)

自己署名証明書を使用する場合
  • キーストア

    • 自己署名証明書

    • 自己署名証明書に対応する秘密鍵

  • トラストストア

    • 自己署名証明書

ポイント

  • サーバ(クライアント)は、キーストア内の認証局証明書とサーバ(クライアント)証明書を通信相手に送信します。

  • サーバ(クライアント)は、通信相手から受信した証明書とトラストストア内の証明書を比較することで証明書の正当性を検証します。

キーストアファイルとトラストストアファイルは、以下に格納されます。

キーストアファイル:[Java EE 6共通ディレクトリ]\domains\domain1\config\keystore.jks
トラストストアファイル:[Java EE 6共通ディレクトリ]\domains\domain1\config\cacerts.jks

キーストアファイル:[Java EE 6共通ディレクトリ]/domains/domain1/config/keystore.jks
トラストストアファイル:[Java EE 6共通ディレクトリ]/domains/domain1/config/cacerts.jks

注意

  • キーストア/トラストストアの内容を更新する場合、事前にバックアップを作成してください。

  • キーストアファイルとトラストストアファイルは、Interstage Java EE 6 DASサービスと全てのIJServerクラスタ間で同期化されます。このため、証明書の設定はInterstage Java EE 6 DASサービスのキーストア/トラストストアに対して行ってください。

  • キーストアファイルとトラストストアファイルに対し、運用方針に従ってセキュリティ権限を設定してください。

  • keytoolコマンド実行時、キーストア/トラストストアのパスワードにはマスターパスワードを指定してください。

  • キーストア/トラストストアのパスワードをkeytoolコマンドで変更しないでください。

  • keytoolコマンドで鍵ペアを作成する時、秘密鍵のパスワードにはマスターパスワードと同じものを指定してください。

  • インストール時にキーストア/トラストストアに登録されている別名(s1as/glassfish-instance)の証明書は実際の運用では使用しないでください。


5.3.3.3 証明書の設定

本製品では以下の通信をSSLで行うことができます。各通信でSSLを使用するための設定について説明します。

WebブラウザとWebサーバ間の通信

設定方法については、「Interstage HTTP Server 2.2 運用ガイド」を参照してください。


WebブラウザとWebコンテナ間の通信

Webコンテナ側の設定

WebコンテナがHTTPSリスナーでSSL通信を行う、または、WebアプリケーションがSSLサーバとして独自に通信する場合は以下の設定を行ってください。

  1. サーバ(クライアント)証明書の設定」の手順に従ってサーバ証明書を設定してください。

  2. SSLのクライアント認証を行う場合は「信頼する認証局証明書の設定」の手順に従って設定してください。

WebアプリケーションがSSLクライアントとなって通信する場合は以下の設定を行ってください。

  1. 信頼する認証局証明書の設定」の手順に従って設定してください。

  2. SSLのクライアント認証が必要な場合は「サーバ(クライアント)証明書の設定」に従ってクライアント証明書を設定してください。

Webブラウザ側の設定

信頼する認証局の証明書がWebブラウザに登録されていない場合は、認証局からルート証明書と必要に応じて中間認証局証明書を入手し、登録してください。


WebサービスクライアントとWebサービス間の通信

Webサービスクライアント側では、WebサービスのエンドポイントのURLを「https」で指定していれば、JSSE(Secure Socket Extension)の設定にしたがってSSLで安全化されたWebサービスを呼出しが行われます。WebサービスのエンドポイントのURLについては「3.1.1 Webサービスアプリケーションの開発」を参照してください。

Webサービス側の設定

Webアプリケーションに対する設定と同様に、WebサーバまたはWebコンテナに対して設定します。詳細は、「WebブラウザとWebサーバ間の通信」に従ってください。

Webサービスクライアント側の設定

Webサービスクライアントを実行するアプリケーションクライアントコンテナに対して、キーストアファイルとトラストストアファイルの設定を以下の手順で行ってください。

  1. JDKのkeytoolコマンドでキーストア/トラストストアを作成します。

  2. トラストストアに信頼する認証局の証明書を登録します。

  3. クライアント証明書を使用する場合は、キーストアにクライアント証明書と信頼する認証局の証明書を登録します。

  4. VMARGS環境変数に、以下を設定してください。

    クライアント証明書を使用しない場合

    set VMARGS=-Djavax.net.ssl.trustStore=トラストストアファイル名 -Djavax.net.ssl.trustStorePassword=トラストストアのパスワード

    VMARGS="-Djavax.net.ssl.trustStore=トラストストアファイル名 -Djavax.net.ssl.trustStorePassword=トラストストアのパスワード"
    export VMARGS

    クライアント証明書を使用する場合

    set VMARGS=-Djavax.net.ssl.keyStore=キーストアファイル名 -Djavax.net.ssl.trustStore=トラストストアファイル名 -Djavax.net.ssl.keyStorePassword=キーストアのパスワード -Djavax.net.ssl.trustStorePassword=トラストストアのパスワード

    VMARGS="-Djavax.net.ssl.keyStore=キーストアファイル名 -Djavax.net.ssl.trustStore=トラストストアファイル名 -Djavax.net.ssl.keyStorePassword=キーストアのパスワード -Djavax.net.ssl.trustStorePassword=トラストストアのパスワード"
    export VMARGS


HTTPクライアントとJAX-RSアプリケーション間の通信

JAX-RSでは、サーバ側がWebコンテナ上のJAX-RSアプリケーション、クライアント側が任意のHTTPクライアント(Webブラウザやモバイル端末など)という構成で、HTTPの通信が行われます。JAX-RSアプリケーションでSSLを利用する場合は、以下の設定を行ってください。

JAX-RSアプリケーション側の設定

Webアプリケーションに対する設定と同様の方法で設定します。詳細は、「WebブラウザとWebサーバ間の通信」に従ってください。

HTTPクライアント側の設定

使用するHTTPクライアントの仕様を確認して、信頼する証明書の登録などの必要な設定を行ってください。

5.3.3.4 認証局が署名した証明書の設定

サーバ(クライアント)証明書の設定

認証局が署名したサーバ(クライアント)証明書の取得とキーストアの設定を以下の手順で行います。

  1. キーストアファイルをバックアップします。

  2. 既存の別名を使用する場合は、キーストアに登録されている該当の公開鍵と秘密鍵のペアを削除します。

    別名newcertの場合の実行例

    keytool -delete -alias newcert -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -delete -alias newcert -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  3. キーストアに任意の別名で新しい公開鍵と秘密鍵のペアを生成します。
    また、以下のX.500識別名を指定します。指定する値はX.500識別名の仕様と認証局の手順に従ってください。

    X.500識別名

    意味

    CN(Common Name)

    姓名。サーバ証明書の場合FQDNまたはIPアドレス()

    OU(Organization Unit)

    組織単位(例:部署)

    O(Organization)

    組織(例:会社)

    L(Locality)

    都市または地域(例:市区町村)

    ST(State or Province)

    州または地方(例:都道府県)

    C(Country)

    国名コード(ISO3166)

    )URLのFQDNまたはIPアドレスとCNが一致しない場合、SSL通信時のホスト名検証でエラーになります。

    鍵生成アルゴリズムRSA、鍵長2048bit、署名アルゴリズムSHA1withRSA、別名newcert、有効期間365日の場合の実行例

    keytool -genkeypair -alias newcert -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -dname "CN=example.jp, OU=Example Organization Unit, O=Example Organization, L=Example City, ST=Example Prefecture, C=JP" -validity 365 -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -genkeypair -alias newcert -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -dname "CN=example.jp, OU=Example Organization Unit, O=Example Organization, L=Example City, ST=Example Prefecture, C=JP" -validity 365 -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  4. 秘密鍵のパスワードを指定します。キーストアのパスワードと同様にするため、[ENTER/RETURN]のみを入力してください。

    <newcert>の鍵パスワードを入力してください

    (キーストアのパスワードと同じ場合はRETURNを押してください): [ENTER/RETURN]

  5. キーストアから証明書署名要求(CSR)を生成します。

    別名newcert、証明書署名要求ファイル名newcert.csrの場合の実行例

    keytool -certreq -alias newcert -file newcert.csr -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -certreq -alias newcert -file newcert.csr -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  6. 認証局に証明書署名要求(CSR)を送信し、以下を取得します。

    • 認証局によって署名された証明書

    • 認証局のルート証明書

    • 中間認証局証明書(必要な場合)

  7. 認証局のルート証明書をキーストアに登録します。

    別名ca_root、証明書ファイル名ca_root.cerの場合の実行例

    keytool -importcert -alias ca_root -file ca_root.cer -trustcacerts -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -importcert -alias ca_root -file ca_root.cer -trustcacerts -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  8. 必要に応じて中間認証局証明書を上位階層の証明書から順にキーストアに登録します。

    別名ca_inter、証明書ファイル名ca_inter.cerの場合の実行例

    keytool -importcert -alias ca_inter -file ca_inter.cer -trustcacerts -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -importcert -alias ca_inter -file ca_inter.cer -trustcacerts -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  9. 取得した証明書をキーストアに登録します。

    別名newcert、証明書ファイル名mycert.cerの場合の実行例

    keytool -importcert -alias newcert -file mycert.cer -trustcacerts -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -importcert -alias newcert -file mycert.cer -trustcacerts -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  10. Interstage Java EE 6 DASサービスのdomain.xmlの更新日時を変更します。詳細は「2.1.4 リポジトリの同期化処理」を参照してください。


信頼する認証局証明書の設定

  1. トラストストアファイルをバックアップします。

  2. 信頼する認証局のルート証明書をトラストストアに登録します。

    別名ca_root、証明書ファイル名ca_root.cerの場合の実行例

    keytool -importcert -alias ca_root -file ca_root.cer -trustcacerts -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\cacerts.jks

    keytool -importcert -alias ca_root -file ca_root.cer -trustcacerts -keystore /var/opt/FJSVisje6/domains/domain1/config/cacerts.jks

  3. 必要に応じて中間認証局証明書を上位階層の証明書から順にトラストストアに登録します。

    別名ca_inter、証明書ファイル名ca_inter.cerの場合の実行例

    keytool -importcert -alias ca_inter -file ca_inter.cer -trustcacerts -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\cacerts.jks

    keytool -importcert -alias ca_inter -file ca_inter.cer -trustcacerts -keystore /var/opt/FJSVisje6/domains/domain1/config/cacerts.jks

  4. Interstage Java EE 6 DASサービスのdomain.xmlの更新日時を変更します。詳細は「2.1.4 リポジトリの同期化処理」を参照してください。


5.3.3.5 自己署名証明書の設定

別名s1as、glassfish-instance以外の自己署名証明書を使用する場合は、以下の手順で設定します。

  1. サーバ(クライアント)証明書の設定」の1.から4.までを行います。

  2. キーストアから公開鍵をエクスポートします。

    別名newcert、証明書ファイル名newcert.cerの場合の実行例

    keytool -export -alias newcert -file newcert.cer -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -export -alias newcert -file newcert.cer -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks

  3. Interstage Java EE 6 DASサービスのdomain.xmlの更新日時を変更します。詳細は「2.1.4 リポジトリの同期化処理」を参照してください。

  4. エクスポートした公開鍵をクライアント側に登録します。


注意

自己署名証明書は通信相手に対して正当性を証明できないため、運用環境では使用しないでください。


5.3.3.6 証明書の削除

証明書の有効期限が切れた場合や証明書が不要になった場合、以下の手順により証明書を削除します。

証明書の有効期限が切れた場合は、キーストアやトラストストアに格納されている証明書を削除し、必要に応じて「5.3.3.4 認証局が署名した証明書の設定」の手順を実施するようにしてください。

なお、証明書の有効期限が切れた場合、サーバーログにSEC5054のメッセージが出力されるようになります。

  1. キーストアファイル、またはトラストストアファイルをバックアップします。

  2. キーストアファイル、またはトラストストアファイルに格納されている証明書を削除します。

    キーストアから別名newcertを削除する場合の実行例

    keytool -delete -alias newcert -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\keystore.jks

    keytool -delete -alias newcert -keystore /var/opt/FJSVisje6/domains/domain1/config/keystore.jks


    トラストストアから別名gtecybertrust5caを削除する場合の実行例

    keytool -delete -alias gtecybertrust5ca -keystore C:\Interstage\F3FMisje6\var\domains\domain1\config\cacerts.jks

    keytool -delete -alias gtecybertrust5ca -keystore /var/opt/FJSVisje6/domains/domain1/config/cacerts.jks

  3. Interstage Java EE 6 DASサービスのdomain.xmlの更新日時を変更します。詳細は「2.1.4 リポジトリの同期化処理」を参照してください。