SSL の用途が暗号化か認証かにかかわらず、Messaging Server 用のサーバー証明書を入手する必要があります。この証明書は、使用するサーバーの識別情報をクライアントや他のサーバーに提供します。証明書を入手するためのもっとも効率的な方法は、msgcert コマンド (この節のあとの方で説明) の使用です。古い certutil コマンドもまだ機能しますが、新しいコマンドに比べてずっと複雑で、グローバル化もされていないことに注意してください。certutil の詳細は、「23.5 暗号化と証明書に基づく認証を構成する」および http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html を参照してください。
サーバー証明書によって、キーのペアの所有権と有効性が確立されます。キーのペアは、データの暗号化と解読に使用される数値です。サーバーの証明書とキーのペアは、そのサーバーの識別情報を示します。これらは、サーバー内部または取り外し可能な外部のハードウェアカード (スマートカード) の証明書データベース内に保存されます。
Sun Java System サーバーは、PKCS (Public-Key Cryptography System) #11 API に準拠するモジュールを使用して、キーと証明書のデータベースにアクセスします。通常、特定のハードウェアデバイスの PKCS #11 モジュールは、そのデバイスの供給元から入手できます。Messaging Server でそのデバイスを使用する前に、このモジュールを Messaging Server にインストールする必要があります。Messaging Server にプリインストールされている「Netscape Internal PKCS # 11 Module」は、サーバー内部の証明書データベースを使用する単一の内部ソフトウェアトークンをサポートします。
証明書を使用できるようにサーバーを設定する場合は、証明書とそのキーを格納するためのデータベースを作成し、PKCS #11 モジュールをインストールする必要があります。外部のハードウェアトークンを使用しない場合は、サーバー上に内部データベースを作成し、Messaging Server に含まれるデフォルトの内部モジュールを使用します。外部トークンを使用する場合は、スマートカードリーダーハードウェアを接続し、そのハードウェアの PKCS #11 モジュールをインストールします。
以降の節では、コンソールまたはディレクトリサーバーコンソールについて触れています。これは、バージョン 6 より前の Directory Server を指しています。バージョン 6 以降では、グラフィカルユーザーインタフェースは Directory Server Control Center と呼ばれています。詳細は、Directory Server の最新のマニュアル (『Sun Java System Directory Server Enterprise Edition 6.0 管理ガイド』) を参照してください。
外部モジュールか内部モジュールかにかかわらず、PKCS #11 モジュールは、コンソールを使用して管理できます。PKCS #11 モジュールをインストールするには、次の手順を実行します。
カードリーダーハードウェアを Messaging Server ホストマシンに接続し、ドライバをインストールします。
msg-svr-base/sbin にある modutil を使用して、インストールしたドライバ用の PKCS #11 モジュールをインストールします。
ハードウェア暗号化アクセラレータのインストール暗号化用に SSL を使用する場合は、ハードウェア暗号化アクセラレータをインストールすることによって、メッセージの暗号化と解読のパフォーマンスを向上させることができます。一般的に、暗号化アクセラレータは、サーバーマシンに常設されたハードウェアボードとソフトウェアドライバで構成されます。Messaging Server は、PKCS #11 API に準拠したアクセラレータモジュールをサポートしています。これらは、基本的に独自のキーを格納しないハードウェアトークンで、キーの格納には内部データベースが使用されます。まず、製造元の指示に従ってハードウェアとドライバをインストールすることにより、アクセラレータをインストールします。その後、PKCS #11 モジュールをインストールすることにより、ハードウェア証明書トークンをインストールします。
SSL を有効にしている Sun Java System サーバーでは、ほとんどの場合、起動時に管理者がキーのペアの解読に必要なパスワードを入力します。ただし、Messaging Server では、パスワードを何度も入力する手間を省き (少なくとも 3 つのサーバープロセスで入力が必要)、さらに無人でサーバーを再起動できるように、パスワードファイルからパスワードが読み取られます。パスワード自体は、msgcert generate_certdb コマンドを使用して証明書データベースが作成されるときに生成されます。
パスワードファイルは、sslpassword.conf という名前で、ディレクトリ msg-svr-base/config/ に保存されています。ファイル内の各エントリは、次の形式で 1 行ずつ記述されます。
moduleName:password
moduleName は使用される (内部または外部) PKCS #11 モジュールの名前です。password はそのモジュールのキーのペアを暗号化するためのパスワードです。パスワードは、クリアテキスト (暗号化されていないテキスト) として保存されます。
Messaging Server には、デフォルトのパスワードファイルが用意されています。このファイルには、次のような内部モジュールとデフォルトのパスワードのエントリが 1 つだけ含まれています。
Internal (Software) Token:netscape!
内部証明書をインストールするときにデフォルト以外のパスワードを指定する場合は、指定するパスワードに合わせてパスワードファイル内の上記の行を編集する必要があります。外部モジュールをインストールする場合は、ファイルに新しい行を追加し、モジュール名とモジュール用に指定するパスワードを記述する必要があります。
管理者はサーバー起動時にモジュールパスワードの入力を要求されません。そのため、管理者のアクセスが適切に制御されていること、およびサーバーホストマシンとそのバックアップの物理的なセキュリティーが確保されていることの確認が重要になります。
SSL の用途が暗号化か認証かにかかわらず、Messaging Server 用のサーバー証明書を入手する必要があります。この証明書は、使用するサーバーの識別情報をクライアントや他のサーバーに提供します。証明書を取得して管理するための主なメカニズムとして、msgcert を使用します。ただし、管理サーバーがインストールされている場合は、管理コンソールも使用できます。
この節の残りの部分では、msgcert を使用する方法について説明します。
msgcert を使用すると、証明書要求の生成、証明書データベースへの証明書の追加、データベース内の証明書の一覧表示などを行うことができます。詳細な情報を表示するには、コマンド行で次のコマンドを入力します。
msg-svr-base/sbin/msgcert --help
次の情報が表示されます。
# ./msgcert --help Usage: msgcert SUBCMD [GLOBAL_OPTS] [SUBCMD_OPTS] [SUBCMD_OPERANDS] Manages the Messaging Servers Certificate Database The accepted values for SUBCMD are: add-cert Adds a certificate to the certificate database add-selfsign-cert Creates and adds a selfsign certificate to the certificate database export-cert Exports a certificate and its keys from the database generate-certDB Creates Messaging Server Databases cert8.db key3.db secmod.db and sslPassword import-cert Adds a new certificate and its keys to the cert database import-selfsign-cert Adds a new selfsign certificate and its keys to the cert database list-certs Lists all certificates in the Certificate database remove-cert Removes a certificate from the database renew-cert Renews a certificate renew-selfsign-cert Renews a selfsign certificate request-cert Generates a certificate request show-cert Displays a certificate The accepted value for GLOBAL_OPTS is:-?, --help Displays SUBCMD help NOTE: You must stop all the TLS or SSL-enabled servers before making any changes to the Certificate Database. |
上に示されている各サブコマンドが、特定の証明書管理機能を実行します。これらのサブコマンドやその機能に関する詳細情報を得るには、次のコマンドを入力します。
msgcert SUBCMD –help
この節の残りの部分では、いくつかの一般的な証明書管理手順について説明します。
ここでは、Messaging Server で SSL 証明書を管理する方法について説明します。Messaging Server で SSL を実行するには、自己署名付き証明書か、または外部の認証局 (CA) を含む公開鍵インフラストラクチャー (PKI) ソリューションのどちらかを使用してください。PKI ソリューションの場合は、公開鍵と非公開鍵の両方を含む CA 署名付きサーバー証明書が必要です。この証明書は、1 つの Messaging Server に固有です。また、公開鍵を含む、信頼できる CA 証明書も必要です。信頼できる CA 証明書によって、CA からのすべてのサーバー証明書が信頼できることが保証されます。この証明書は、CA ルートキーまたはルート証明書とも呼ばれることがあります。
証明書を管理する場合、証明書のパスワードを入力したり、パスワードファイルを指定したりする必要はありません。パスワードを -W 引数として渡すだけで済みます。次に例を示します。
echo "password22" > /tmp/certdbpwd echo "password22" > /tmp/certdbpwd # ./msgcert list-certs -W /tmp/certdbpwd |
Messaging Server 証明書データベースを作成するには、次のコマンドを実行します。
msgcert generate-certDB |
このコマンドによって CERT_PW_FILE から証明書データベースのパスワードが読み取られます。(デフォルトはパスワードの入力を要求)
この証明書は、次のコマンドを使用して表示できます。
msgcert show-cert Server-Cert |
テストの目的で証明書を使用している場合は、自己署名付き証明書を使用できます。配備の設定では、信頼できる証明書発行局 (CA) の証明書を使用するほうを選択する可能性があります。また、Directory Server 管理コンソールを使用してもこのタスクを実行できます。
証明書データベースを作成する場合は、デフォルトの自己署名付き証明書が自動的に提供されます。デフォルト以外の設定を含む自己署名付き証明書を使用する場合は、msgcert add-selfsign-cert コマンドを使用します。次に例を示します。
msgcert add-selfsign-cert --name siroe --org comms --org-unit Messaging --city SantaClara --state ca --country us MySelfSigned-Cert |
自己署名付き証明書の有効期間は 3 か月です。
自己署名付き証明書の期限が切れたら、次のコマンドを使用して証明書を更新します。
msgcert renew-selfsign-cert cert_alias |
認証局の証明書をインストールするには、./msgcert add-cert を使用します。CA 証明書は、認証局自体の身元を証明します。サーバーは、クライアントやほかのサーバーを認証するプロセスで、これらの CA 証明書を使用します。
たとえば、パスワードに基づく認証 (157ページの「証明書に基づくログインを設定する」を参照) に加え、証明書に基づく認証にも対応するように会社の環境を設定した場合は、クライアントが提示する可能性のある証明書の発行元として信頼できる CA の証明書をすべてインストールする必要があります。これらの CA は、社内組織の場合もあれば、商業機関、政府機関、ほかの企業などの外部組織の場合もあります。認証用 CA 証明書の使用方法については、『Managing Servers With iPlanet Console 5.0 』の「Introduction to Public-Key Cryptography」を参照してください。
Messaging Server をインストールすると、いくつかの商用認証局の CA 証明書もインストールされます。ほかの商用認証局の CA 証明書を追加する場合や、社内使用のために (Sun Java System Certificate Server を使用して) 独自の認証局を開発する場合は、追加の CA 証明書を入手して、インストールする必要があります。
Messaging Server により自動的に提供される CA 証明書は、インストール時にはクライアント証明書用の信頼できる証明書としてマークされていません。これらの CA から発行されるクライアント証明書を信頼できるものにする必要がある場合は、信頼設定を編集する必要があります。手順については、「23.5.1 証明書の入手」を参照してください。
次の手順は、Messaging Server で使用する CA 署名付きサーバー証明書と信頼できる認証局の証明書を要求してインストールするプロセスを示しています。
また、Directory Server 管理コンソールを使用してもこのタスクを実行できます。
CA 署名付きサーバー証明書に対する要求を生成します。
msgcert request-cert [-W CERT_PW_FILE] {-S DN|--name NAME [--org ORG] [--org-unit ORG-UNIT] [--city CITY] [--state STATE] [--country COUNTRY] } [-F FORMAT] [-o OUTPUT_FILE] |
CA 署名付きサーバー証明書に対する要求の例を次に示します。この場合は、バイナリ形式の証明書が返されます。
./msgcert request-cert --name aqua --org siroe --org-unit Messaging -o my_ca_signed_request_cert |
ASCII 形式の証明書を返すには、次のコマンドを使用します。
./msgcert request-cert --name aqua --org siroe --org-unit Messaging -F ascii -o my_casigned_request_cert |
DURGA:どうして 2 つのコマンドがあるのですか。
通常、CA はサーバーを完全に識別するために、この例に含まれるすべての属性を必要とします。各属性の説明を表示するには、./msgcert request-cert --help を入力します。msgcert request-cert を使用して証明書を要求した場合、出力形式として ASCII を指定しないかぎり、得られる証明書要求はバイナリ形式の証明書要求になります。ASCII を指定すると、得られる証明書要求は、PEM 形式の PKCS #10 証明書要求になります。PEM (Privacy Enhanced Mail) は、RFC 1421 〜 1424 で指定されている形式で、US-ASCII 文字を使用した base64 形式で符号化されます。要求の内容は、次の例のようになります。
-----BEGIN NEW CERTIFICATE REQUEST----- MIIBdTCB3wIBADA2MRIwEAYDVQQLEwlNZXNzYWdpbmcxDjAMBgNVBAoTBXNpcm9l MRAwDgYDVQQDEwdhcXVhdGljMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt KEh5Fnj/h9GEu18Da6DkJpcNShkwxanjnKs2883ZoUV5Sp4pN7U6Vfbh0414WXZh D26m3t81q9b9h47Klkf0pW1X3BB6LOjGOHSt2VoNBI8n3hJ6XiN2zYbrlLTgdKuo y0YrSG/kHFnqKghikag9O/Ox+cwD+mpjl2QnsPZgswIDAQABoAAwDQYJKoZIhvcN AQEEBQADgYEArqgWQIwNZDC2d3EZawI23Wj9o6Pyvu9J1rkb+NYgIEnNp9jugxqX F326N0ABLdHXXNX/2ZvC5TKOgS4RidTBM89N9xJvokmvRGfc+1x80uxy474YdNlZ s+nP8AYo9dW9mrLOammozx9HLPSVYNFp4FxekgV2n8QG7WC5rkN5bCE= -----END NEW CERTIFICATE REQUEST----- |
ここで説明する手順に従って、証明書要求を CA に送信します。
認証局証明書を取得するプロセスは、使用する認証局によって異なります。一部の商用認証局は、証明書を自動的にダウンロードできる Web サイトを提供しています。その他の認証局は、要求された証明書を電子メールで送信します。
要求を送信したら、CA から証明書が送られてくるまで待ちます。要求に対する回答が届くまでの時間は、状況によって異なります。たとえば、CA が社内にある場合は、要求に対する回答は 1 〜 2 日しかかからないこともあります。CA が社外にある場合は、数週間かかることもあります。
認証局から送られてきた証明書を保存します。
証明書を安全な場所にバックアップするようにしてください。これにより、証明書を失ってもバックアップファイルを使用して再インストールできます。証明書は、テキストファイルに保存できます。次に、PEM 形式の PKCS #11 証明書の例を示します。
-----BEGIN CERTIFICATE----- MIICjCCAZugAwIBAgICCEEwDQYJKoZIhKqvcNAQFBQAwfDELMAkGA1UEBhMCVVMx IzAhBgNVBAoGlBhbG9a2FWaWxsZGwSBXaWRnZXRzLCBJbmMuMR0wGwYDVQQLExRX aWRnZXQgTW3FrZXJzICdSJyBVczEpMCcGAx1UEAxgVGVzdCBUXN0IFRlc3QgVGVz dCBUZXN0IFlc3QgQ0EswHhcNOTgwMzEyMDIzMzUWhcNOTgwMzI2MDIzMpzU3WjBP MQswCYDDVQQGEwJVUzEoMCYGA1UEChMfTmV0c2NhcGUgRGlyZN0b3J5VIFB1Ymxp Y2F0aW9uczEWMB4QGA1UEAxMNZHVgh49dq2tLNvbjTBaMA0GCSqGSIb3DQEBAQUA A0kAMEYkCQCksMR/aLGdfp4m0OiGgijG5KgOsyRNvwGYW7kfW+8mmijDtZaRjYNj jcgpF3VnlbxbclX9LVjjNLC5737XZdAgEDozYwpNDARBglghkgBhvhCEAQEEBAMC APAwHkwYDVR0jBBgwFAU67URjwCaGqZHUpSpdLxlzwJKiMwDQYJKoZIhQvcNAQEF BQADgYEAJ+BfVem3vBOPBveNdLGfjlb9hucgmaMcQa9FA/db8qimKT/ue9UGOJqL bwbMKBBopsDn56p2yV3PLIsBgrcuSoBCuFFnxBnqSiTS7YiYgCWqWaUA0ExJFmD6 6hBLseqkSWulk+hXHN7L/NrViO+7zNtKcaZLlFPf7d7j2MgX4Bo= -----END CERTIFICATE----- |
また、Directory Server 管理コンソールを使用してもこのタスクを実行できます。
次のコマンドを使用して、CA 署名付きサーバー証明書を追加します。
msgcert add-cert cert_alias cert_file |
ここで、cert_alias は証明書を識別するために指定する名前です。cert_file は、PEM 形式の PKCS #11 証明書を含むテキストファイルです。
たとえば、CA 署名付きサーバー証明書をインストールするには、次のようなコマンドを使用できます。
msgcert add-cert /my_cert/server-cert-file |
これで証明書がインストールされましたが、まだ信頼されてはいません。CA 署名付きサーバー証明書を信頼できるものにするには、認証局証明書をインストールしてください。
次のコマンドを使用して、信頼できる証明書発行局の証明書を追加します。
msgcert add-cert -C cert_alias cert_file |
-C オプションは、この証明書が信頼できる証明書発行局の証明書であることを示します。
たとえば、認証局から信頼できる証明書をインストールするには、次のコマンドを使用できます。
msgcert add-cert -C CA-cert /my_cert/ca-cert-file |
必要に応じて、インストールした証明書を、次のコマンドを使用して確認します。
すべてのサーバー証明書を一覧表示して、エイリアスや有効期限などの情報を表示するには、次のコマンドを実行します。
msgcert list-certs |
./msgcert generate-CertDB で生成された場合、Messaging Server には Server-Cert と呼ばれるデフォルトの証明書が用意されています。「発行者と同じ」というテキストは、デフォルトの証明書が自己署名付きサーバー証明書であることを示しています。次に例を示します。
# ./msgcert list-certs 証明書データベースのパスワードを入力してください: エイリアス 有効期限開始日 有効期限 自己 発行元 発行先 署名付き ------------ ---------------- --------------- ------ --------------------- ------------------------- -------------- SelfSignedCrt 2006/07/28 12:58 2006/10/28 12:58 y CN=SFO,L=SC,ST=ca,C=us 発行者と同じ Server-Cert 2006/07/28 07:47 2006/10/28 07:47 y CN=perseids 発行者と同じ 2 個の証明書が見つかりました |
信頼できる認証局の証明書を一覧表示するには、次のコマンドを実行します。
msgcert list-certs -C |
証明書の詳細 (証明書の満了日を含む) を表示するには、次のコマンドを実行します。
msgcert show-cert cert_alias |
たとえば、自己署名付き証明書を表示するには、次のコマンドを実行します。
# ./msgcert show-cert MySelfSigned-Cert Enter the certificate database password: Certificate: Data: Version: 3 (0x2) Serial Number: 00:83:35:37:94 Signature Algorithm: PKCS #1 MD5 With RSA Encryption Issuer: "CN=siroe,O=comms,OU=Messaging,L=SantaClara,ST=ca,C=us" Validity: Not Before: Fri Jul 28 19:58:31 2006 Not After : Sat Oct 28 19:58:31 2006 Subject: "CN=siroe,O=comms,OU=Messaging,L=SantaClara,ST=ca,C=us" Subject Public Key Info: Public Key Algorithm: PKCS #1 RSA Encryption RSA Public Key: Modulus: aa:9d:3d:23:b2:59:39:f3:77:c8:69:7f:b0:d1:ac:d2: 4e:81:c8:51:0f:27:6f:a1:21:4b:a9:27:46:d7:0f:b4: c8:44:86:32:5e:4f:2f:1c:2f:a9:b8:a3:49:b5:b8:ab: 51:a8:a5:ba:1c:e8:90:7d:46:67:f9:a7:44:c5:1d:24: e6:bd:e8:8f:07:b4:5a:68:41:b1:19:f2:ea:98:ba:25: 55:b8:ba:9c:af:bb:43:c3:c0:8f:14:a7:4c:2b:50:b4: ac:df:b5:cd:68:de:a6:14:9d:68:77:d3:8b:7f:de:c0: 5d:35:d7:55:8d:b5:c3:14:2a:60:a9:bf:de:96:90:a9 Exponent: 65537 (0x10001) Signature Algorithm: PKCS #1 MD5 With RSA Encryption Signature: 15:86:f1:cc:85:c9:08:0f:ff:d3:56:d8:e2:c8:ea:3c: 8e:45:36:be:8b:b0:7d:2f:e9:cd:e3:b4:ad:8c:70:59: c8:a5:14:da:9c:fa:7f:70:86:64:34:0b:21:ae:c4:28: d2:f5:94:5c:a6:78:0f:d9:fd:fc:c5:5e:37:49:25:a9: bc:12:59:cb:fb:4e:e9:d4:8a:8d:3d:41:12:ae:f1:7f: 8d:d3:10:ac:fb:33:51:5d:0c:1b:dc:23:5f:95:d5:6d: c6:1d:e5:ed:13:8b:16:41:89:5b:4d:de:c0:c7:56:a2: 48:82:38:32:5a:99:d5:21:20:c5:0d:5c:ea:0c:84:aa Fingerprint (MD5): EF:76:A3:6C:09:4E:BC:6B:87:76:A3:35:70:1F:B2:C4 Fingerprint (SHA1): BB:1C:20:4B:79:3A:F1:49:F0:83:FB:CC:9C:56:10:D3:06:97:AA:07 Certificate Trust Flags: SSL Flags: Valid CA Trusted CA User Trusted Client CA Email Flags: User Object Signing Flags: User |
CA 署名付きサーバー証明書 (公開鍵および非公開鍵) の期限が切れた場合は、次の手順を使用して証明書を更新できます。また、Directory Server 管理コンソールを使用してもこのタスクを実行できます。
認証局から、更新された CA 署名付きサーバー証明書を取得します。
更新された証明書を受信したら、その証明書をインストールします。
msgcert renew-cert cert_alias cert_file |
場合によっては、証明書を (たとえば、別のホストに) エクスポートして、あとでその証明書をインポートできるようにしたいことがあります。また、Directory Server 管理コンソールを使用してもこのタスクを実行できます。
証明書をエクスポートします。
msgcert export-cert [-o OUTPUT_FILE] CERT_ALIAS |
次に例を示します。
$ ./msgcert export-cert -o /tmp/first-certificate "First Certificate" $./msgcert export-cert -o /tmp/first-server-certificate Server-Cert Choose the PKCS#12 file password: Confirm the PKCS#12 file password: $ls /tmp first-server-certificate /tmp/first-certificate |
証明書をインポートします。
$ msgcert import-cert CERT_FILE |
たとえば、証明書をインポートするには、次のコマンドを実行します。
$ msgcert import-cert /tmp/first-server-certificate Enter the PKCS#12 file password: $ |