Sun Java System Application Server Enterprise Edition 8.2 管理ガイド

証明書と SSL の操作

証明書ファイルについて

Application Server をインストールすると、内部テストに適した JSSE (Java Secure Socket Extension) または NSS (Network Security Services) 形式のデジタル証明書が生成されます。デフォルトでは、Application Server は domain-dir/config ディレクトリの証明書データベースに、証明書情報を格納します。

証明書ファイルの場所の変更

開発用として提供されているキーストアファイルとトラストストアファイルは、domain-dir/config ディレクトリに格納されています。

管理コンソールを使用して「server-config」ノード >「JVM 設定」>「JVM オプション」タブの順に展開し、証明書ファイルの新しい場所の値のフィールドを追加または変更します。


-Dcom.sun.appserv.nss.db=${com.sun.aas.instanceRoot}/NSS-database-directory

ここで、NSS-database-directory は NSS データベースの場所です。

JSSE (Java Secure Socket Extension) ツールの使用

keytool を使用して、JSSE (Java Secure Socket Extension) デジタル証明書を設定および操作します。Platform Edition、Enterprise Edition のどちらの場合も、クライアント側 (アプリケーションクライアントまたはスタンドアロン) では JSSE 形式が使用されます。

J2SE SDK に同梱されている keytool を使用すれば、管理者は、公開鍵と非公開鍵のペアおよび関連する証明書を管理できます。さらに、ユーザーは、通信接続先の公開鍵を証明書の形式でキャッシュできます。

keytool を実行するには、J2SE の /bin ディレクトリがパスの中に設定されているか、またはツールへのフルパスがコマンド行に存在するように、シェルの環境を設定する必要があります。keytool の詳細については、keytool のドキュメント (http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html) を参照してください。

keytool ユーティリティーの使用

次の例は、JSSE ツールによる証明書処理に関する使用方法を示したものです。

keytool ユーティリティーを使って証明書を生成する

keytool を使用して証明書の生成、インポート、およびエクスポートを行います。デフォルトでは、keytool は実行元のディレクトリにキーストアファイルを作成します。

  1. 証明書を実行すべきディレクトリに移動します。

    証明書の生成は常に、キーストアファイルとトラストストアファイルが格納されたディレクトリ (デフォルトでは domain-dir/config) 内で行います。これらのファイルの場所を変更する方法については、「証明書ファイルの場所の変更」を参照してください。

  2. 次の keytool コマンドを入力することで、キーストアファイル keystore.jks 内に証明書を生成します。


    keytool -genkey -alias keyAlias-keyalg RSA
     -keypass changeit
     -storepass changeit
    -keystore keystore.jks

    keyAlias には任意の一意名を指定します。キーストアまたは非公開鍵のパスワードをデフォルト以外の値に変更した場合には、前述のコマンドの changeit をその新しいパスワードで置き換えてください。

    プロンプトが表示され、keytool が証明書の生成に使用するユーザーの名前、組織、およびその他の情報の入力を求められます。

  3. 次の keytool コマンドを入力することで、生成された証明書をファイル server.cer (または client.cer でもよい) にエクスポートします。


    keytool -export -alias keyAlias-storepass changeit
     -file server.cer
     -keystore keystore.jks
  4. 認証局によって署名された証明書が必要な場合は、keytool ユーティリティーを使ってデジタル証明書に署名する」を参照してください。

  5. トラストストアファイル cacerts.jks を作成し、そのトラストストアに証明書を追加するには、次の keytool コマンドを入力します。


    keytool -import -v -trustcacerts
    -alias keyAlias
     -file server.cer
    -keystore cacerts.jks
     -keypass changeit
  6. キーストアまたは非公開鍵のパスワードをデフォルト以外の値に変更した場合には、前述のコマンドの changeit をその新しいパスワードで置き換えてください。

    このツールは、証明書に関する情報を表示し、その証明書を信頼するかどうかをユーザーに尋ねます。

  7. yes と入力し、続いて Enter キーを押します。

    すると、keytool から次のようなメッセージが表示されます。


    Certificate was added to keystore
    [Saving cacerts.jks]
  8. Application Server を再起動します。

keytool ユーティリティーを使ってデジタル証明書に署名する

デジタル証明書の作成後、所有者はそれに署名して偽造を防止する必要があります。E コマースのサイト、または ID の認証が重要であるサイトは、既知の証明書発行局 (CA) から証明書を購入できます。認証に心配がない場合、たとえば、非公開のセキュアな通信だけが必要な場合などは、CA 証明書の取得に必要な時間と費用を節約して、自己署名付き証明書を使用してください。

  1. 証明書の鍵のペアを生成するため、CA の Web サイトの指示に従います。

  2. 生成された証明書の鍵のペアをダウンロードします。

    キーストアファイルとトラストストアファイルが格納されたディレクトリ (デフォルトでは domain-dir/config ディレクトリ) 内に、証明書を保存します。「証明書ファイルの場所の変更」を参照してください。

  3. 使用しているシェルで、証明書を含むディレクトリに変更します。

  4. keytool を使用して、証明書をローカルのキーストア、および必要に応じてローカルのトラストストアにインポートします。


    keytool -import -v -trustcacerts
    -alias keyAlias
     -file server.cer
    -keystore cacerts.jks
     -keypass changeit
    -storepass changeit

    キーストアまたは非公開鍵のパスワードがデフォルト以外の値である場合には、前述のコマンドの changeit をその新しいパスワードで置き換えてください。

  5. Application Server を再起動します。

keytool ユーティリティーを使って証明書を削除する

既存の証明書を削除するには、keytool -delete コマンドを使用します。次に例を示します。

keytool -delete
 -alias keyAlias
 -keystore keystore-name
 -storepass password

NSS (Network Security Services) ツールの使用

Enterprise Edition の場合、サーバー側では、NSS (Network Security Services) デジタル証明書を使って非公開鍵と証明書を格納するデータベースを管理します。クライアント側 (アプリケーションクライアントまたはスタンドアロン) では、「JSSE (Java Secure Socket Extension) ツールの使用」で説明した JSSE 形式を使用します。

NSS (Network Security Services) を使ってセキュリティーを管理するためのツールは、次のとおりです。

これらのツールは install-dir/lib/ ディレクトリに格納されています。NSS セキュリティーツールの場所を指し示すために、次の各環境変数が使用されます。

例に含まれる証明書の共通名 (CN) は、クライアントまたはサーバーの名前です。また、この CN は、SSL ハンドシェーク中に証明書の名前とその証明書の生成元であるホスト名とを比較する目的でも使用されます。SSL ハンドシェーク中に証明書名とホスト名が一致しなかった場合、警告または例外が生成されます。いくつかの例では便宜上、証明書の共通名 CN=localhost が使用されていますが、これは、すべてのユーザーが、実際のホスト名に基づいて新しい証明書を作成することなしにその証明書を使用できるようにするためです。

次の各節の例は、NSS ツールによる証明書処理に関する使用方法を示したものです。

certutil ユーティリティーの使用

certutil を実行する前に必ず、このユーティリティーを実行するために必要なライブラリの場所が LD_LIBRARY_PATH で指定されていることを確認してください。この場所は、asenv.conf (製品全体の設定ファイル) の AS_NSS_LIB の値から特定できます。

証明書データベースツールの certutil は、Netscape Communicator の cert8.db および key3.db データベースファイルを作成し、変更することができる NSS コマンド行ユーティリティーです。このユーティリティーは、cert8.db ファイルで、証明書の一覧表示、生成、変更、または削除を行い、key3.db ファイルで、パスワードの作成または変更、新しい公開鍵と非公開鍵のペアの生成、鍵データベースのコンテンツの表示、または鍵のペアの削除を行うこともできます。

通常、鍵と証明書の管理プロセスは鍵データベース内の鍵の作成から始まり、証明書データベース内の証明書の生成と管理に続きます。次のドキュメントでは、certutil ユーティリティーの構文を含む、NSS による証明書および鍵データベースの管理について説明しています。http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html

次の箇条書きの各項目は、NSS および JSSE セキュリティーツールを使って証明書の作成または管理、あるいはその両方を行う例を示したものです。

pk12util ユーティリティーによる証明書のインポートとエクスポート

証明書または鍵データベースと PKCS12 形式のファイル間における鍵と証明書のインポートおよびエクスポートに使用されるコマンド行ユーティリティーは、pk12util です。PKCS12 は、「Public-Key Cryptography Standards (PKCS) #12, Personal Information Exchange Syntax Standard」です。pk12util ユーティリティーの詳細については、http://www.mozilla.org/projects/security/pki/nss/tools/pk12util.html を参照してください。

modutil による PKCS11 モジュールの追加と削除

「セキュリティーモジュールデータベースツール」である modutil は、secmod.db ファイル内またはハードウェアトークン内の PKCS #11 (Cryptographic Token Interface Standard) モジュール情報を管理するためのコマンド行ユーティリティーです。このツールを使用して、PKCS #11 モジュールを追加および削除し、パスワードを変更し、デフォルトを設定し、モジュールの内容を表示し、スロットを使用可または使用不可にし、FIPS-140-1 準拠を有効または無効にし、暗号化操作にデフォルトのプロバイダを割り当てることができます。また、このツールを使用すれば、key3.dbcert7.db、および secmod.db セキュリティーデータベースファイルを作成することもできます。このツールの詳細については、http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html を参照してください。

Application Server でのハードウェア暗号化アクセラレータの使用

ハードウェアアクセラレータトークンを使用すると、暗号化のパフォーマンスを向上させたり、セキュリティー保護された鍵ストレージ機能を備えたりすることができます。また、スマートカードを使用したモバイル用のセキュリティー保護された鍵ストレージを提供することもできます。

Java 2 Platform, Standard Edition (J2SE プラットフォーム) 5.0 で Sun Java System Application Server 8.1 および 8.2 の Standard Edition または Enterprise Edition を実行する場合は、SSL 通信や TLS 通信用の PKCS#11 トークンと、鍵および PKCS#11 トークンを管理するための Network Security Services (NSS) ツールの使用をサポートします。この節では、Application Server によるサポートの提供方法と、関連設定の手順を説明します。

J2SE 5.0 PKCS#11 プロバイダは、簡単に Application Server ランタイムと統合できます。これらのプロバイダによって、ハードウェアアクセラレータなどの PKCS#11 トークンを Application Server で使用して、高速なパフォーマンスを実現したり、SSL 通信や TLS 通信での非公開鍵の継承を防いだりすることができます。

ここでは、次の内容について説明します。

ハードウェア暗号化アクセラレータの設定について

Sun Java System Application Server 8.1 および 8.2 の Standard Edition または Enterprise Edition は、Sun Crypto Accelerator 1000 (SCA-1000) および SCA-4000 でテストされています。

Application Server, は、J2SE 5.0 と併用することにより、PKCS#11 トークンと通信できます。Application Server にパッケージされているのは、NSS PKCS#11 トークンライブラリ (NSS 内部 PKCS#11 モジュール用、一般に NSS ソフトトークンと呼ばれる) と、NSS コマンド行管理ツールです。詳細は、「NSS (Network Security Services) ツールの使用」を参照してください。

NSS ツールを使用して PKCS#11 トークンと J2SE PKCS#11 プロバイダに鍵と証明書を作成し、実行時にトークンの鍵と証明書にアクセスします。PKCS#11 プロバイダは、暗号化サービスプロバイダで、ネイティブ PKCS#11 ライブラリのラッパーとして動作します。一般に、PKCS#11 トークンは、ネイティブ PKCS#11 インタフェースを使用してすべてのハードウェアとソフトウェアを参照します。ハードウェアトークンは、ハードウェアアクセラレータやスマートカードなどの物理デバイスに実装された PKCS#11 トークンです。ソフトウェアトークンは、完全にソフトウェアに実装された PKCS#11 トークンです。


注 –

Application Server を J2SE 1.4.x プラットフォームで実行する場合、PKCS#11 トークン 1 つだけ、つまり NSS ソフトトークンがサポートされます。


Microsoft Windows 環境では、NSS ライブラリの位置 AS_NSS と NSS ツールディレクトリ AS_NSS_BIN を PATH 環境変数に追加してください。簡単にするために、この節では UNIX のコマンドだけを使用して手順を説明します。必要に応じて UNIX 変数を Windows 変数に置き換えるようにしてください。

ハードウェア暗号化アクセラレータの設定は、主に次の 2 つの手順に分かれます。

PKCS#11 トークンの設定

ここでは、NSS セキュリティーツール modutil を使用して PKCS#11 トークンを設定する方法について説明します。次の手順で PKCS#11 トークンを設定します。

次のコマンドを入力します。すべて 1 行に入力してください。

modutil -dbdir AS_NSS_DB -nocertdb -force -add moduleName -libfile
 absolute_path_of_pkcs11_library -mechanisms list_of_security_mechanisms

ここで AS_NSS_DB は NSS データベースのディレクトリになり、ドメイン管理サーバー (DAS) を使用する場合には AS_DOMAIN_CONFIG と同じになります。

たとえば、ハードウェアアクセラレータトークンを設定するには、次のように入力します。すべて 1 行に入力してください。

modutil -dbdir AS_NSS_DB -nocertdb -force -add "Sun Crypto Accelerator" -libfile
 /opt/SUNWconn/crypto/lib/libpkcs11.so -mechanisms RSA:DSA:RC4:DES

この例のハードウェアアクセラレータは SCA–1000 暗号化アクセラレータです。対応する PKCS#11 ライブラリは、デフォルトでは /opt/SUNWconn/crypto/lib/libpkcs11.so にあります。

mechanisms は、トークンで利用可能な暗号化メカニズムの完全なリストにしてください。利用可能な暗号化メカニズムの一部だけを使用する方法については、「J2SE 5.0 PKCS#11 プロバイダの設定」を参照してください。サポートされるすべてのメカニズムのリストについては、NSS セキュリティーツールのサイト (http://www.mozilla.org/projects/security/pki/nss/tools) にある modutil のドキュメントを参照してください。

次の例では、トークンのインストール時に指定したトークン名がmytoken であるとします。

ハードウェアアクセラレータが正しく設定されていることを確認するには、次のコマンドを入力します。

modutil -list -dbdir AS_NSS_DB

標準出力表示は次のようになります。


Using database directory /var/opt/SUNWappserver/domains/domain1/config ...

Listing of PKCS#11 Modules
-----------------------------------------------------------
  1. NSS Internal PKCS#11 Module
         slots: 2 slots attached
        status: loaded

         slot: NSS Internal Cryptographic Services                            
        token: NSS Generic Crypto Services

         slot: NSS User Private Key and Certificate Services                  
        token: NSS Certificate DB

  2. Sun Crypto Accelerator
        library name: /opt/SUNWconn/crypto/lib/libpkcs11.so
         slots: 1 slot attached
        status: loaded

         slot: Sun Crypto Accelerator:mytoken
        token: mytoken
-----------------------------------------------------------

 

鍵と証明書の管理

ここでは、certutilpk12util を使用して鍵や証明書を作成および管理する一般的な手順について説明します。certutil および pk12util の詳細については、「NSS (Network Security Services) ツールの使用」、および NSS セキュリティーツールのサイト (http://www.mozilla.org/projects/security/pki/nss/tools) を参照してください。


注 –

Java ランタイムの JAVA_HOME/jre/lib/security ディレクトリにある java.security プロパティーファイルで PKCS#11 プロバイダを設定することで、J2SE keytool ユーティリティーを使用して鍵や証明書を管理することもできます。keytool の使用の詳細は、http://java.sun.com/j2se/1.5.0/docs/guide/secuirty/p11guide.html の『Java PKCS#11 Reference Guide』を参照してください。


この節で説明する内容は、次のとおりです。

鍵や証明書の一覧表示

非公開鍵と証明書の操作

自己署名付き証明書の作成や、証明書のインポート/エクスポートには、certutil を使用します。非公開鍵をインポートまたはエクスポートするには、pk12util ユーティリティーを使用します。詳細は、「NSS (Network Security Services) ツールの使用」を参照してください。


注意 – 注意 –

Application Server では、certutilmodutil などの NSS ツールを使用して NSS パスワードを直接変更しないでください。そのようにすると、Application Server のセキュリティーデータが破損する可能性があります。


J2SE 5.0 PKCS#11 プロバイダの設定

Application Server は実行時に PKCS#11 トークン内にある鍵や証明書へのアクセスに、J2SE PKCS#11 プロバイダを使用します。デフォルトでは、Application Server では NSS ソフトトークン用に J2SE PKCS#11 プロバイダが設定されます。ここでは、J2SE PKCS#11 プロバイダのデフォルト設定をオーバーライドする方法について説明します。

Application Server では、PKCS#11 トークンごとに次のデフォルト PKCS#11 設定パラメータが生成されます。

これらの設定は、『Java PKCS#11 Reference Guide』で説明されている構文に従います。


注 –

name パラメータは、固有でなければならない場合を除き、必要ではありません。J2SE 5.0 の一部の以前のバージョンでは、英数字のみ使用できます。


デフォルトの設定パラメータをオーバーライドするには、カスタム設定ファイルを作成します。たとえば、SCA–1000 で RSA 暗号化方式と RSA 鍵ペアジェネレータを明示的に無効にすることができます。RSA 暗号化方式と RSA 鍵ペアジェネレータを無効にする詳細は、http://www.mozilla.org/projects/security/pki/nss/tools を参照してください。

カスタム設定ファイルを作成するには、次の手順に従います。

  1. 次のコードを記述した install-dir/mypkcs11.cfg という設定ファイルを作成して保存します。


    name=HW1000
    library=/opt/SUNWconn/crypto/lib/libpkcs11.so
    slotListIndex=0
    disabledMechanisms = {
    	CKM_RSA_PKCS
    	CKM_RSA_PKCS_KEY_PAIR_GEN
    }
    omitInitialize=true
  2. 必要に応じて NSS データベースを更新します。この場合は、RSA を無効にするために NSS データベースを更新します。

    以下のコマンドを実行します。


    modutil -undefault "Sun Crypto Accelerator" -dbdir AS_NSS_DB -mechanisms RSA

    mechanisms リストのアルゴリズム名は、デフォルト設定のアルゴリズム名とは異なります。NSS で有効な mechanisms のリストについては、NSS セキュリティーツールのサイト (http://www.mozilla.org/projects/security/pki/nss/tools) にある modutil のドキュメントを参照してください。

  3. 次のように、適切な位置にプロパティーを追加して、この変更でサーバーを更新します。


    <property name="mytoken" value="&InstallDir;/mypkcs11.cfg"/>

    プロパティーの位置は、次のいずれかにします。

    • プロバイダが DAS またはサーバーインスタンス用である場合は、関連 <security-service> の下にプロパティーを追加します。

    • プロバイダがノードエージェント用である場合は、domain.xml ファイルで関連 <node-agent> 要素の下にプロパティーを追加します。

  4. Application Server を再起動します。

    カスタマイズされた設定が再起動後に有効になります。