Application Server をインストールすると、内部テストに適した JSSE (Java Secure Socket Extension) または NSS (Network Security Services) 形式のデジタル証明書が生成されます。デフォルトでは、Application Server は domain-dir/config ディレクトリの証明書データベースに、証明書情報を格納します。
キーストアファイル。key3.db には、非公開鍵を含む Application Server の証明 書が格納されます。キーストアファイルはパスワードで保護されています。パスワードを変更するには、asadmin change-master-password コマンドを使用します。certutil の詳細については、「certutil ユーティリティーの使用」を参照してください。
各キーストアエントリには一意のエイリアスがあります。インストール後の Application Server キーストア内には、エイリアス s1as を持つ単一のエントリが含まれています。
トラストストアファイル。cert8.db には、ほかのエンティティーの公開鍵を含 む Application Server の信頼できる証明書が格納されます。信頼できる証明書では、サーバーは証明書の公開鍵が証明書の所有者に属していることを確認しています。信頼できる証明書には、通常、証明書発行局 (CA) の証明書も含まれています。
Platform Edition では、サーバー側で、Application Server は keytool を使用して証明書とキーストアを管理する JSSE 形式を使用します。Enterprise Edition では、サーバー側で、Application Server は certutil を使用して非公開鍵と証明書を格納する NSS データベースを管理する NSS を使用します。これらの両方の Edition で、クライアントサイド (アプリケーションクライアントまたはスタンドアロン) では、JSSE 形式を使用します。
デフォルトで、Application Server は、サンプルアプリケーションで開発目的のために動作するキーストアおよびトラストストアを使用して設定されています。本稼動環境のために、証明書エイリアスを変更し、トラストストアにほかの証明書を追加し、キーストアおよびトラストストアファイルの名前と場所を変更する必要が生ずる可能性があります。
開発用として提供されているキーストアファイルとトラストストアファイルは、domain-dir/config ディレクトリに格納されています。
管理コンソールを使用して「server-config」ノード >「JVM 設定」>「JVM オプション」タブの順に展開し、証明書ファイルの新しい場所の値のフィールドを追加または変更します。
-Dcom.sun.appserv.nss.db=${com.sun.aas.instanceRoot}/NSS-database-directory |
ここで、NSS-database-directory は NSS データベースの場所です。
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) を参照してください。
次の例は、JSSE ツールによる証明書処理に関する使用方法を示したものです。
RSA 鍵アルゴリズムを使ってタイプ JKS のキーストア内に自己署名付き証明書を作成する。RSA は RSA Data Security, Inc. が開発した公開鍵暗号化技術です。この略語は、この技術の開発者である Rivest、Shamir、および Adelman を表しています。
keytool -genkey -noprompt -trustcacerts -keyalg RSA -alias ${cert.alias} -dname ${dn.name} -keypass ${key.pass} -keystore ${keystore.file} -storepass ${keystore.pass} |
証明書を作成する別の例については、「keytool ユーティリティーを使って証明書を生成する」を参照してください。
デフォルトの鍵アルゴリズムを使ってタイプ JKS のキーストア内に自己署名付き証明書を作成する。
keytool -genkey -noprompt -trustcacerts -alias ${cert.alias} -dname ${dn.name} -keypass ${key.pass} -keystore ${keystore.file} -storepass ${keystore.pass} |
証明書に署名する例については、「keytool ユーティリティーを使ってデジタル証明書に署名する」を参照してください。
タイプ JKS のキーストアで利用可能な証明書を表示する。
keytool -list -v -keystore ${keystore.file} -storepass ${keystore.pass} |
タイプ JKS のキーストア内の証明書情報を表示する。
keytool -list -v -alias ${cert.alias} -keystore ${keystore.file} -storepass ${keystore.pass} |
RFC/テキスト形式の証明書を JKS ストア内にインポートする。証明書は、バイナリエンコーディングではなく、Internet RFC (Request for Comments) 1421 標準によって定義された印刷可能なエンコーディング形式を使って格納されることがしばしばあります。Base 64 エンコーディングとしても知られるこの証明書形式を使用すれば、電子メールなどの機構を使って証明書をほかのアプリケーションにエクスポートしやすくなります。
keytool -import -noprompt -trustcacerts -alias ${cert.alias} -file ${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass} |
タイプ JKS のキーストア内の証明書を PKCS7 形式でエクスポートする。「Public Key Cryptography Standards #7, Cryptographic Message Syntax Standard」によって定義された応答形式には、発行される証明書に加え、それをサポートする証明書チェーンも含まれます。
keytool -export -noprompt -alias ${cert.alias} -file ${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass} |
タイプ JKS のキーストア内の証明書を RFC/テキスト形式でエクスポートする。
keytool -export -noprompt -rfc -alias ${cert.alias} -file ${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass} |
タイプ JKS のキーストアから証明書を削除する。
keytool -delete -noprompt -alias ${cert.alias} -keystore ${keystore.file} -storepass ${keystore.pass} |
キーストアから証明書を削除する別の例については、「keytool ユーティリティーを使って証明書を削除する」を参照してください。
keytool を使用して証明書の生成、インポート、およびエクスポートを行います。デフォルトでは、keytool は実行元のディレクトリにキーストアファイルを作成します。
証明書を実行すべきディレクトリに移動します。
証明書の生成は常に、キーストアファイルとトラストストアファイルが格納されたディレクトリ (デフォルトでは domain-dir/config) 内で行います。これらのファイルの場所を変更する方法については、「証明書ファイルの場所の変更」を参照してください。
次の keytool コマンドを入力することで、キーストアファイル keystore.jks 内に証明書を生成します。
keytool -genkey -alias keyAlias-keyalg RSA -keypass changeit -storepass changeit -keystore keystore.jks |
keyAlias には任意の一意名を指定します。キーストアまたは非公開鍵のパスワードをデフォルト以外の値に変更した場合には、前述のコマンドの changeit をその新しいパスワードで置き換えてください。
プロンプトが表示され、keytool が証明書の生成に使用するユーザーの名前、組織、およびその他の情報の入力を求められます。
次の keytool コマンドを入力することで、生成された証明書をファイル server.cer (または client.cer でもよい) にエクスポートします。
keytool -export -alias keyAlias-storepass changeit -file server.cer -keystore keystore.jks |
認証局によって署名された証明書が必要な場合は、「keytool ユーティリティーを使ってデジタル証明書に署名する」を参照してください。
トラストストアファイル cacerts.jks を作成し、そのトラストストアに証明書を追加するには、次の keytool コマンドを入力します。
keytool -import -v -trustcacerts -alias keyAlias -file server.cer -keystore cacerts.jks -keypass changeit |
キーストアまたは非公開鍵のパスワードをデフォルト以外の値に変更した場合には、前述のコマンドの changeit をその新しいパスワードで置き換えてください。
このツールは、証明書に関する情報を表示し、その証明書を信頼するかどうかをユーザーに尋ねます。
yes と入力し、続いて Enter キーを押します。
すると、keytool から次のようなメッセージが表示されます。
Certificate was added to keystore [Saving cacerts.jks] |
Application Server を再起動します。
デジタル証明書の作成後、所有者はそれに署名して偽造を防止する必要があります。E コマースのサイト、または ID の認証が重要であるサイトは、既知の証明書発行局 (CA) から証明書を購入できます。認証に心配がない場合、たとえば、非公開のセキュアな通信だけが必要な場合などは、CA 証明書の取得に必要な時間と費用を節約して、自己署名付き証明書を使用してください。
証明書の鍵のペアを生成するため、CA の Web サイトの指示に従います。
生成された証明書の鍵のペアをダウンロードします。
キーストアファイルとトラストストアファイルが格納されたディレクトリ (デフォルトでは domain-dir/config ディレクトリ) 内に、証明書を保存します。「証明書ファイルの場所の変更」を参照してください。
使用しているシェルで、証明書を含むディレクトリに変更します。
keytool を使用して、証明書をローカルのキーストア、および必要に応じてローカルのトラストストアにインポートします。
keytool -import -v -trustcacerts -alias keyAlias -file server.cer -keystore cacerts.jks -keypass changeit -storepass changeit |
キーストアまたは非公開鍵のパスワードがデフォルト以外の値である場合には、前述のコマンドの changeit をその新しいパスワードで置き換えてください。
Application Server を再起動します。
既存の証明書を削除するには、keytool -delete コマンドを使用します。次に例を示します。
keytool -delete -alias keyAlias -keystore keystore-name -storepass password
Enterprise Edition の場合、サーバー側では、NSS (Network Security Services) デジタル証明書を使って非公開鍵と証明書を格納するデータベースを管理します。クライアント側 (アプリケーションクライアントまたはスタンドアロン) では、「JSSE (Java Secure Socket Extension) ツールの使用」で説明した JSSE 形式を使用します。
NSS (Network Security Services) を使ってセキュリティーを管理するためのツールは、次のとおりです。
certutil。証明書および鍵データベースの管理に使用されるコマンド行ユーティリティー。certutil ユーティリティーの使用例については、「certutil ユーティリティーの使用」を参照してください。
pk12util。証明書または鍵データベースと PKCS12 形式のファイル間における鍵と証明書のインポートおよびエクスポートに使用されるコマンド行ユーティリティー。pk12util ユーティリティーの使用例については、「pk12util ユーティリティーによる証明書のインポートとエクスポート」を参照してください。
modutil。secmod.db ファイル内またはハードウェアトークン内の PKCS #11 モジュール情報を管理するためのコマンド行ユーティリティー。modutil ユーティリティーの使用例については、「modutil による PKCS11 モジュールの追加と削除」を参照してください。
これらのツールは install-dir/lib/ ディレクトリに格納されています。NSS セキュリティーツールの場所を指し示すために、次の各環境変数が使用されます。
LD_LIBRARY_PATH =${install-dir}/lib
${os.nss.path}
例に含まれる証明書の共通名 (CN) は、クライアントまたはサーバーの名前です。また、この CN は、SSL ハンドシェーク中に証明書の名前とその証明書の生成元であるホスト名とを比較する目的でも使用されます。SSL ハンドシェーク中に証明書名とホスト名が一致しなかった場合、警告または例外が生成されます。いくつかの例では便宜上、証明書の共通名 CN=localhost が使用されていますが、これは、すべてのユーザーが、実際のホスト名に基づいて新しい証明書を作成することなしにその証明書を使用できるようにするためです。
次の各節の例は、NSS ツールによる証明書処理に関する使用方法を示したものです。
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 セキュリティーツールを使って証明書の作成または管理、あるいはその両方を行う例を示したものです。
自己署名付きのサーバー証明書およびクライアント証明書を生成する。この例では、CN は hostname.domain.[com|org|net|...] の形式でなければなりません。
この例では、domain-dir/config です。serverseed.txt ファイルと clientseed.txt ファイルには、任意のランダムテキストを含めることができます。このランダムテキストは、鍵ペア生成時に使用されます。
certutil -S -n $SERVER_CERT_NAME -x -t "u,u,u" -s "CN=$HOSTNAME.$HOSTDOMAIN, OU=Java Software, O=Sun Microsystems Inc., L=Santa Clara, ST=CA, C=US" -m 25001 -o $CERT_DB_DIR/Server.crt -d $CERT_DB_DIR -f passfile <$CERT_UTIL_DIR/serverseed.txt |
クライアント証明書を生成する。この証明書も自己署名付き証明書です。
certutil -S -n $CLIENT_CERT_NAME -x -t "u,u,u" -s "CN=MyClient, OU=Java Software, O=Sun Microsystems Inc., L=Santa Clara, ST=CA, C=US" -m 25002 -o $CERT_DB_DIR/Client.crt -d $CERT_DB_DIR -f passfile <$CERT_UTIL_DIR/clientseed.txt |
前述の項目で生成された証明書を検証する。
certutil -V -u V -n $SERVER_CERT_NAME -d $CERT_DB_DIR certutil -V -u C -n $CLIENT_CERT_NAME -d $CERT_DB_DIR |
利用可能な証明書を表示する。
certutil -L -d $CERT_DB_DIR |
RFC テキスト形式の証明書を NSS 証明書データベースにインポートする。
certutil -A -a -n ${cert.nickname} -t ${cert.trust.options} -f ${pass.file} -i ${cert.rfc.file} -d ${admin.domain.dir}/${admin.domain}/config |
NSS 証明書データベース内の証明書を RFC 形式でエクスポートする。
certutil -L -a -n ${cert.nickname} -f ${pass.file} -d ${admin.domain.dir}/${admin.domain}/config > cert.rfc |
NSS 証明書データベースから証明書を削除する。
certutil -D -n ${cert.nickname} -f ${pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
証明書を NSS データベースから JKS 形式に移動する。
certutil -L -a -n ${cert.nickname} -d ${admin.domain.dir}/${admin.domain}/config > cert.rfc keytool -import -noprompt -trustcacerts -keystore ${keystore.file} -storepass ${keystore.pass} -alias ${cert.alias} -file cert.rfc |
証明書または鍵データベースと 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 を参照してください。
PKCS12 形式の証明書を NSS 証明書データベースにインポートする。
pk12util -i ${cert.pkcs12.file} -k ${certdb.pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
PKCS12 形式の証明書を NSS 証明書データベーストークンモジュールにインポートする。
pk12util -i ${cert.pkcs12.file} -h ${token.name} -k ${certdb.pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
NSS 証明書データベース内の証明書を PKCS12 形式でエクスポートする。
pk12util -o -n ${cert.nickname} -k ${pass.file} -w${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
NSS 証明書データベーストークンモジュール内の証明書を PKCS12 形式でエクスポートする (ハードウェアアクセラレータ構成で有用)。
pk12util -o -n ${cert.nickname} -h ${token.name} -k ${pass.file} -w ${cert.pass.file} -d ${admin.domain.dir}/${admin.domain}/config |
PKCS12 証明書を JKS 形式に変換する (Java ソースが必要)。
<target name="convert-pkcs12-to-jks" depends="init-common"> <delete file="${jks.file}" failonerror="false"/> <java classname="com.sun.enterprise.security.KeyTool"> <arg line="-pkcs12"/> <arg line="-pkcsFile ${pkcs12.file}"/> <arg line="-pkcsKeyStorePass ${pkcs12.pass}"/> <arg line="-pkcsKeyPass ${pkcs12.pass}"/> <arg line="-jksFile ${jks.file}"/> <arg line="-jksKeyStorePass ${jks.pass}"/> <classpath> <pathelement path="${s1as.classpath}"/> <pathelement path="${env.JAVA_HOME}/jre/lib/jsse.jar"/> </classpath> </java> </target>
「セキュリティーモジュールデータベースツール」である modutil は、secmod.db ファイル内またはハードウェアトークン内の PKCS #11 (Cryptographic Token Interface Standard) モジュール情報を管理するためのコマンド行ユーティリティーです。このツールを使用して、PKCS #11 モジュールを追加および削除し、パスワードを変更し、デフォルトを設定し、モジュールの内容を表示し、スロットを使用可または使用不可にし、FIPS-140-1 準拠を有効または無効にし、暗号化操作にデフォルトのプロバイダを割り当てることができます。また、このツールを使用すれば、key3.db、cert7.db、および secmod.db セキュリティーデータベースファイルを作成することもできます。このツールの詳細については、http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html を参照してください。
新しい PKCS11 モジュールまたはトークンを追加する。
modutil -add ${token.module.name} -nocertdb -force -mechanisms RSA:DSA:RC4:DES -libfile ${SCA.lib.path} -dbdir ${admin.domain.dir}/${admin.domain}/config |
NSS ストアから PKCS11 モジュールを削除する。
modutil -delete ${token.module.name} -nocertdb -force -mechanisms RSA:DSA:RC4:DES -libfile ${SCA.lib.path} -dbdir ${admin.domain.dir}/${admin.domain}/config |
NSS ストア内で利用可能なトークンモジュールを一覧表示する。
modutil -list -dbdir ${admin.domain.dir}/${admin.domain}/config |
ハードウェアアクセラレータトークンを使用すると、暗号化のパフォーマンスを向上させたり、セキュリティー保護された鍵ストレージ機能を備えたりすることができます。また、スマートカードを使用したモバイル用のセキュリティー保護された鍵ストレージを提供することもできます。
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 つの手順に分かれます。
ここでは、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 ----------------------------------------------------------- |
ここでは、certutil と pk12util を使用して鍵や証明書を作成および管理する一般的な手順について説明します。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』を参照してください。
この節で説明する内容は、次のとおりです。
設定済み 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 つの信頼属性が表示されます。Application Server 証明書の場合、通常は T,c,c です。信頼のレベルが 1 つしかない J2SE java.security.KeyStore API とは異なり、NSS テクノロジには信頼のレベルが複数あります。Application 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) ツールの使用」を参照してください。
Application Server では、certutil や modutil などの NSS ツールを使用して NSS パスワードを直接変更しないでください。そのようにすると、Application Server のセキュリティーデータが破損する可能性があります。
Application Server は実行時に PKCS#11 トークン内にある鍵や証明書へのアクセスに、J2SE PKCS#11 プロバイダを使用します。デフォルトでは、Application Server では NSS ソフトトークン用に J2SE PKCS#11 プロバイダが設定されます。ここでは、J2SE PKCS#11 プロバイダのデフォルト設定をオーバーライドする方法について説明します。
Application 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 を参照してください。
カスタム設定ファイルを作成するには、次の手順に従います。
次のコードを記述した 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 |
必要に応じて 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 のドキュメントを参照してください。
次のように、適切な位置にプロパティーを追加して、この変更でサーバーを更新します。
<property name="mytoken" value="&InstallDir;/mypkcs11.cfg"/> |
プロパティーの位置は、次のいずれかにします。
プロバイダが DAS またはサーバーインスタンス用である場合は、関連 <security-service> の下にプロパティーを追加します。
プロバイダがノードエージェント用である場合は、domain.xml ファイルで関連 <node-agent> 要素の下にプロパティーを追加します。
Application Server を再起動します。
カスタマイズされた設定が再起動後に有効になります。