クラスタおよびエンタープライズプロファイルの場合、サーバー側では、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 モジュールの追加と削除」を参照してください。
これらのツールは as-install/lib/ ディレクトリに格納されています。NSS セキュリティーツールの場所を指し示すために、次の各環境変数が使用されます。
LD_LIBRARY_PATH =${as-install}/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 |