ハードウェアアクセラレータトークンを使用すると、暗号化のパフォーマンスを向上させたり、セキュリティー保護された鍵ストレージ機能を備えたりすることができます。また、スマートカードを使用したモバイル用のセキュリティー保護された鍵ストレージを提供することもできます。
Sun Java System Application Server は、SSL 通信および TLS 通信用の PKCS#11 トークンと、鍵および PKCS#11 トークンを管理するための Network Security Services (NSS) ツールの使用をサポートします。この節では、Enterprise Server によるサポートの提供方法と、関連設定の手順を説明します。
J2SE 5.0 PKCS#11 プロバイダは、簡単に Enterprise Server ランタイムと統合できます。これらのプロバイダによって、ハードウェアアクセラレータなどの PKCS#11 トークンを Enterprise Server で使用して、高速なパフォーマンスを実現したり、SSL 通信や TLS 通信での非公開鍵の継承を防いだりすることができます。
ここでは、次の内容について説明します。
Sun GlassFish Enterprise Server は、Sun Crypto Accelerator 1000 (SCA-1000) および SCA-4000 でテスト済みです。
Enterprise Server は、PKCS#11 トークンと通信できます。Enterprise 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 トークンです。
Enterprise Server を J2SE 1.4.x プラットフォームで実行する場合、PKCS#11 トークンは 1 つだけ、つまり NSS ソフトトークンがサポートされます。
Microsoft Windows 環境では、NSS ライブラリの位置 AS_NSS と NSS ツールディレクトリ AS_NSS_BIN を PATH 環境変数に追加してください。簡単にするために、この節では UNIX のコマンドだけを使用して手順を説明します。必要に応じて UNIX 変数を Windows 変数に置き換えるようにしてください。
ハードウェア暗号化アクセラレータの設定は、主に次の 2 つの手順に分かれます。
ここでは、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 セキュリティーツールの Web サイト (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 ----------------------------------------------------------- |
ここでは、certutil と pk12util を使用して鍵や証明書を作成および管理する一般的な手順について説明します。certutil と pk12util の詳細については、「NSS (Network Security Services) ツールの使用」と NSS セキュリティーツールの Web サイト (http://www.mozilla.org/projects/security/pki/nss/tools) を参照してください。
Java ランタイムの JAVA_HOME/jre/lib/security ディレクトリにある java.security プロパティーファイルで PKCS#11 プロバイダを設定することで、J2SE keytool ユーティリティーを使用して鍵や証明書を管理することもできます。keytool の使用方法については、『Java PKCS#11 Reference Guide』 (http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.html) を参照してください。
ここで説明する内容は次のとおりです。
設定済み PKCS#11 トークンの鍵や証明書を表示するには、次のコマンドを実行します。
certutil -L -d AS_NSS_DB [-h tokenname]
たとえば、デフォルトの NSS ソフトトークンの内容を表示するには、次のように入力します。
certutil -L -d AS_NSS_DB
標準出力表示は次のようになります。
verisignc1g1 T,c,c verisignc1g2 T,c,c verisignc1g3 T,c,c verisignc2g3 T,c,c verisignsecureserver T,c,c verisignc2g1 T,c,c verisignc2g2 T,c,c verisignc3g1 T,c,c verisignc3g2 T,c,c verisignc3g3 T,c,c s1as u,u,u |
出力には、左側の列にトークンの名前、右側の列に 3 つの信頼属性が表示されます。Enterprise Server 証明書の場合、通常は T,c,c です。信頼のレベルが 1 つしかない J2SE java.security.KeyStore API とは異なり、NSS テクノロジには信頼のレベルが複数あります。Enterprise Server では、基本的に 1 番目の信頼属性に着目します。この信頼属性は、このトークンが SSL を使用する方法を示します。この属性の意味は次のとおりです。
T は、認証局 (CA) がクライアント証明書の発行について信頼されていることを示します。 |
u は、認証または署名に証明書 (および鍵) を使用できることを示します。 |
u,u,u という属性の組み合わせは、非公開鍵がデータベースに存在することを表します。 |
ハードウェアトークン mytoken の内容を表示するには、次のコマンドを実行します。
certutil -L -d AS_NSS_DB -h mytoken
ハードウェアトークンのパスワードが求められます。標準出力表示は次のようになります。
Enter Password or Pin for "mytoken": mytoken:Server-Cert 	u,u,u |
自己署名付き証明書の作成や、証明書のインポート/エクスポートには、certutil を使用します。非公開鍵をインポートまたはエクスポートするには、pk12util ユーティリティーを使用します。詳細は、「NSS (Network Security Services) ツールの使用」を参照してください。
Enterprise Server では、certutil や modutil などの NSS ツールを使用して NSS パスワードを直接変更しないでください。そのようにすると、Enterprise Server のセキュリティーデータが破損する可能性があります。
Enterprise Server は実行時に PKCS#11 トークン内にある鍵や証明書へのアクセスに、J2SE PKCS#11 プロバイダを使用します。デフォルトでは、Enterprise Server では NSS ソフトトークン用に J2SE PKCS#11 プロバイダが設定されます。ここでは、J2SE PKCS#11 プロバイダのデフォルト設定をオーバーライドする方法について説明します。
Enterprise Server では、PKCS#11 トークンごとに次のデフォルト PKCS#11 設定パラメータが生成されます。
デフォルトの NSS ソフトトークン用の設定
name=internal library=${com.sun.enterprise.nss.softokenLib} nssArgs="configdir='${com.sun.appserv.nss.db}' certPrefix='' keyPrefix='' secmod='secmod.db'" slot=2 omitInitialize = true |
SCA 1000 ハードウェアアクセラレータ用の設定
name=HW1000 library=/opt/SUNWconn/crypto/lib/libpkcs11.so slotListIndex=0 omitInitialize=true |
これらの設定は、『Java PKCS#11 Reference Guide』で説明されている構文に従います。
name パラメータは、固有でなければならない場合を除き、必要ではありません。J2SE 5.0 の一部の以前のバージョンでは、英数字のみ使用できます。
デフォルトの設定パラメータをオーバーライドするには、カスタム設定ファイルを作成します。たとえば、SCA–1000 で RSA 暗号化方式と RSA 鍵ペアジェネレータを明示的に無効にすることができます。RSA 暗号化方式と RSA 鍵ペアジェネレータの詳細については、http://www.mozilla.org/projects/security/pki/nss/tools を参照してください。.
カスタム設定ファイルを作成するには、次の手順に従います。
次のコードを記述した as-install/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 |
必要に応じて NSS データベースを更新します。この場合は、RSA を無効にするために NSS データベースを更新します。
以下のコマンドを実行します。
modutil -undefault "Sun Crypto Accelerator" -dbdir AS_NSS_DB -mechanisms RSA |
mechanisms リストのアルゴリズム名は、デフォルト設定のアルゴリズム名とは異なります。NSS の有効な mechanisms の値については、NSS セキュリティーツールの Web サイト (http://www.mozilla.org/projects/security/pki/nss/tools) で modutil のドキュメントを参照してください。
次のように、適切な位置にプロパティーを追加して、この変更でサーバーを更新します。
<property name="mytoken" value="&InstallDir;/mypkcs11.cfg"/> |
プロパティーの位置は、次のいずれかにします。
プロバイダが DAS またはサーバーインスタンス用である場合は、関連 <security-service> の下にプロパティーを追加します。
プロバイダがノードエージェント用である場合は、domain.xml ファイルで関連 <node-agent> 要素の下にプロパティーを追加します。
Enterprise Server を再起動します。
カスタマイズされた設定が再起動後に有効になります。