Sun Java™ System Directory Server 5.2 2005Q1 管理ガイド |
付録 A
Sun Crypto Accelerator ボードの使用この付録では、Directory Server で Sun Crypto Accelerator ボードを使用して、証明書ベースの認証と Secure Sockets Layer (SSL) プロトコルを使用した接続のパフォーマンスを向上させる手順について説明します。
始める前にSun Crypto Accelerator ボードを使用して SSL 接続のパフォーマンスを向上させる前に、表 A-1 に示した項目を完了しておく必要があります。
表 A-1 ボードを使用するための前提条件
前提条件
内容
ボードのインストール
ハードウェア、ドライバ、パッチ、および管理ユーティリティをホストにインストールするときは、ボードに付属の製品マニュアルを参照してください。
Directory Serverインストール
手順については、『Java Enterprise System インストールガイド』を参照してください。
サーバー証明書 (PKCS#12 形式)
Directory Server のサーバー証明書を .p12 ファイルで取得します。
CA 証明書 (PEM 形式)
証明書発行局 (CA) の CA 証明書を PEM (Privacy Enhanced Mail) 形式ファイルで取得します。
SSL プロトコルと SSL 証明書、および Server Console による管理をサポートする Sun Java System サーバーでプロトコルを使用する方法については、第 11 章「認証と暗号化の管理」を参照してください。
トークンの作成Directory Server ではトークンとパスワードを使用して、アクセラレータボード上の適切な暗号化キーマテリアルにアクセスします。トークンは user@realm という形式になります。ここで user は、アクセラレータボードのユーザーで、暗号化キーマテリアルの所有者です。realm は、アクセラレータボードのレルムで、ユーザーとキーマテリアルの論理パーティションです。アクセラレータボードのユーザーは、システムのユーザーアカウントとは何も関係を持つ必要はありません。このユーザーはボード専用です。ユーザーとレルムについての詳細は、アクセラレータボードの製品マニュアルを参照してください。
トークンのユーザーとレルムは、ボードで使用するように用意された secadm (1M) ユーティリティを使用して作成できます。また、アクセラレータボードでは、複数のアプリケーションのトークンを管理するために、複数のスロットを作成することもできます。ここでは、パフォーマンス上の理由から、ホストを Directory Server 専用にし、1 スロットだけを使用します。これはデフォルトの設定です。複数のソフトウェアアプリケーションでボードを使用する詳細は、アクセラレータボードの製品マニュアルを参照してください。
デフォルトのスロットにアクセスするためのトークンのユーザーとレルムを作成するには、次の手順を実行します。
- secadm ユーティリティを起動します。
$ CryptoPath/bin/secadm
デフォルトの CryptoPath は /opt/SUNWconn/crypto です。
- トークンのレルムを作成します。
secadm> create realm=dsrealm
System Administrator Login Required
Login: super-user
Password:
Realm dsrealm created successfully.- ユーザーを作成するレルムを設定します。
secadm> set realm=dsrealm
secadm{dsrealm}> su
System Administrator Login Required
Login: super-user
Password:
secadm{root@dsrealm}#- デフォルトのスロットを使用するユーザー nobody を作成し、SSL を設定した Directory Server を再起動するときに使用するパスワードを指定します。
secadm{root@dsrealm}# create user=nobody
Initial password: password
Confirm password: password
User nobody created successfully.secadm{root@dsrealm}# exitこの時点で、トークン nobody@dsrealm のユーザーとレルムが作成され、Directory Server を再起動するときに使用するパスワードを指定しています。
ボード用バインドの生成アクセラレータボード用のバインドは、生成する外部セキュリティモジュールの形式をとるため、Directory Server はボードにバインドできます。複数の SSL アルゴリズムをサポートした、外部セキュリティモジュールと Directory Server 証明書データベースとの間のバインドを生成するには、次の手順を実行します。
- modutil を使用する前にLD_LIBRARY_PATH を設定します。
$ set LD_LIBRARY_PATH=ServerRoot/lib ; export LD_LIBRARY_PATH
- セキュリティモジュールデータベースが存在しない場合は作成します。
$ cd ServerRoot/shared/bin
$ ./modutil -create -dbdir ../../alias -dbprefix "slapd-serverID"- 外部セキュリティモジュールをセキュリティモジュールデータベースに追加します。
$ ./modutil -add "Crypto Mod" -dbdir ../../alias -nocertdb ¥
-libfile CryptoPath/lib/libpkcs11.so ¥
-mechanisms "RSA:DSA:RC4:DES" -dbprefix "slapd-serverID"デフォルトの CryptoPath は /opt/SUNWconn/crypto です。
- セキュリティモジュールを一覧にして、追加に成功したことを確認します。
$ ./modutil -list -dbdir ../../alias -dbprefix "slapd-serverID"
手順 3 で追加した Crypto Mod のエントリが表示されます。
- 外部セキュリティモジュールを RSA、DSA、RC4、および DES のデフォルトにします。
$ ./modutil -default "Crypto Mod" -dbdir ../../alias ¥
-mechanisms "RSA:DSA:RC4:DES" -dbprefix "slapd-serverID"デフォルトのセキュリティモジュールの変更が成功します。
この時点で、アクセラレータボード用バインドを生成し、証明書をインポートできるようになりました。
証明書のインポートSSL を設定する前に、表 A-1 で説明したようにして取得したサーバー証明書と CA 証明書をインポートする必要があります。証明書をインポートするには、次の手順を実行します。
- サーバー証明書 .p12 ファイルをインポートします。
$ cd ServerRoot/shared/bin
$ ./pk12util -i ServerCert.p12 -d ../../alias -P "slapd-serverID" ¥
-h "nobody@dsrealm"
Enter Password or Pin for "nobody@dsrealm": password
Enter Password for PKCS12 file: password- CA 証明書をインポートします。
$ ./certutil -A -n "Crypto CA Cert" -t CT -i CACert.txt ¥
-d ../../alias -P "slapd-serverID" -h "nobody@dsrealm"- トークンに関連付けられた証明書を一覧にして、インポートが成功したことを確認します。
$ ./certutil -L -d ../../alias -P "slapd-serverID" ¥
-h "nobody@dsrealm"この時点で、証明書がインポートされ、Directory Server が SSL 接続を待機するように設定できるようになります。
SSL の設定作成したトークンとパスワード、外部セキュリティモジュールと Directory Server 証明書データベースの間に生成したバインド、およびインポートした証明書を使用すると、Directory Server をセキュリティ保護されたモードで起動できます。SSL を設定して Directory Server をセキュリティ保護されたモードで再起動するには、次の手順を実行します。
- SSL 関連の Directory Server 設定エントリを変更するための修正ファイル ssl.ldif を作成します。
コード例 A-1 ボードを使用した SSL をアクティブにするための変更 (ssl.ldif)
dn: cn=RSA,cn=encryption,cn=config
changetype: add
objectclass: top
objectclass: nsEncryptionModule
cn: RSA
nsSSLToken: nobody@dsrealm
nsSSLPersonalitySSL: ServerCertNickname1
nsSSLActivation: on
dn: cn=encryption,cn=config
changetype: modify
replace: nsSSL3
nsSSL3: on
-
replace: nsSSLClientAuth
nsSSLClientAuth: allowed
-
replace: nsSSL3Ciphers
nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,
+rsa_rc2_40_md5,+rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,
+rsa_fips_3des_sha,+fortezza,+fortezza_rc4_128_sha,
+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,
+tls_rsa_export1024_with_rc4_56_sha,
+tls_rsa_export1024_with_des_cbc_sha
-
replace: nsCertfile
nsCertfile: alias/slapd-serverID-cert8.db
-
replace: nsKeyFile
nsKeyFile: alias/slapd-serverID-key3.db
dn: cn=config
changetype: modify
replace: nsslapd-secureport
nsslapd-secureport: port
-
replace: nsslapd-security
nsslapd-security: on
1このニックネームは Directory Server の証明書に含まれています。
ここで nsslapd-secureport の値である port は、Directory Server がセキュリティ保護されたモードで起動した後、SSL 接続を待機するためのポートです。
- Directory Server 設定を変更するために、変更内容を適用します。
$ ldapmodify -p currPort -D "cn=directory manager" -w password -f ssl.ldif
ここで currPort は、Directory Server がクライアント要求を待機している現在のポートの番号です。
- Directory Server をセキュリティ保護されたモードで再起動します。
$ ServerRoot/slapd-serverID/restart-slapd
Enter PIN for nobody@dsrealm: passwordここで password は nobody のユーザーパスワードで、トークン nobody@dsrealm を作成したときに指定しています。
この時点で、Directory Server は指定したポートで SSL トラフィックを待機します。そのポートを使用して、 SSL によって Directory Server にアクセスするために、Sun Java System 管理サーバーとクライアントアプリケーションを設定することができます。詳細については、第 11 章「認証と暗号化の管理」を参照してください。