Solaris 10 8/07 リリースから、鍵管理フレームワーク (KMF) を通じて、公開鍵オブジェクトを管理するためのツールとプログラミングインタフェースが提供されています。公開鍵オブジェクトには、X.509 証明書や公開鍵/非公開鍵ペアが含まれます。これらのオブジェクトの格納形式としては、さまざまなものが使えます。また、KMF では、アプリケーションによる X.509 証明書の使用方法を定義したポリシーを管理するためのツールも提供されます。
鍵管理フレームワーク (KMF) は、公開鍵技術 (PKI) を管理するための統一されたアプローチを提供します。Solaris OS には、PKI 技術を利用する異なるアプリケーションがいくつか含まれています。各アプリケーションはそれぞれ独自のプログラミングインタフェース、鍵格納メカニズム、および管理ユーティリティーを提供します。アプリケーションがあるポリシー適用メカニズムを提供する場合、そのメカニズムはそのアプリケーションにしか適用されません。KMF では、アプリケーションは統一された管理ツール群、単一のプログラミングインタフェース群、および単一のポリシー適用メカニズムを使用します。これらのインタフェースを採用したすべてのアプリケーションの PKI ニーズは、これらの機能によって管理されます。
KMF では、次のインタフェースによって公開鍵技術の管理が統一されます。
kmfcfg コマンド – このコマンドは PKI ポリシーデータベースを管理します。
PKI ポリシー決定には、ある操作の検証方法などの操作が含まれます。また、PKI ポリシーは証明書の適用範囲を制限することもできます。たとえば、ある証明書が特定の目的にしか使用できないことを主張する PKI ポリシーを定義できます。そのようなポリシーは、その証明書がほかの要求のために使用されるのを禁止します。
KMF ライブラリ – このライブラリには、ベースとなるキーストアメカニズムを抽象化するプログラミングインタフェースが含まれています。
アプリケーションは特定のキーストアメカニズムを選択する必要がなく、あるメカニズムから別のメカニズムへ移行できます。サポートされているキーストアは、PKCS #11、NSS、および OpenSSL です。このライブラリに含まれるプラグイン可能フレームワークを使えば、新しいキーストアメカニズムを追加できます。したがって、アプリケーションがある新しいメカニズムを使用する場合、アプリケーションを若干変更するだけで、その新しいキーストアを使用できるようになります。
KMF は、鍵の格納を管理するための手段を提供するとともに、それらの鍵の使用に関する包括的なポリシーを提供します。KMF は、次の 3 つの公開鍵技術のポリシー、鍵、および証明書を管理します。
PKCS #11 プロバイダ、つまり Solaris 暗号化フレームワークからのトークン
NSS、つまりネットワークセキュリティーサービス
OpenSSL、ファイルベースのキーストア
kmfcfg ツールを使えば、KMF ポリシーエントリの作成、変更、または削除を行えます。KMF は、pktool コマンド経由でキーストアを管理します。詳細については、kmfcfg(1) と pktool(1) のマニュアルページ、および次の各節を参照してください。
KMF のポリシーはデータベース内に格納されます。このポリシーデータベースは、KMF プログラミングインタフェースを使用するすべてのアプリケーションによって内部的にアクセスされます。このデータベースを使えば、KMF ライブラリによって管理される鍵や証明書の使用に、制約を設けることができます。アプリケーションは、証明書の検証を試みる際に、ポリシーデータベースをチェックします。kmfcfg コマンドはポリシーデータベースを変更します。
KMF は、PKCS #11 トークン、NSS、OpenSSL の 3 つの公開鍵技術のキーストアを管理します。pktool コマンドを使えば、これらすべての技術について次のことが行えます。
自己署名付き証明書を生成する。
証明書要求を生成する。
キーストアにオブジェクトをインポートする。
キーストア内のオブジェクトを一覧表示する。
キーストアからオブジェクトを削除する。
CRL をダウンロードする。
PKCS #11 および NSS 技術の場合には、pktool コマンドでパスフレーズを生成して PIN を設定することもできます。
キーストアのパスフレーズを生成する。
キーストア内のあるオブジェクトのパスフレーズを生成する。
pktool ユーティリティーの使用例については、pktool(1) のマニュアルページおよび 「鍵管理フレームワークの使用 (作業マップ)」を参照してください。
鍵管理フレームワーク (KMF) を使うと公開鍵技術を集中管理できます。
作業 |
説明 |
参照先 |
---|---|---|
証明書を作成します。 |
PKCS #11、NSS、SSL で使用される証明書を作成します。 | |
証明書をエクスポートします。 |
証明書とそれをサポートする鍵を含むファイルを作成します。このファイルはパスワードで保護できます。 | |
証明書をインポートします。 |
別のシステムから取得した証明書をインポートします。 | |
別のシステムから取得した PKCS #12 形式の証明書をインポートします。 | ||
パスフレーズを生成します。 |
PKCS #11 キーストアまたは NSS キーストアにアクセスするためのパスフレーズを生成します。 |
この節では、パスワード、パスフレーズ、ファイル、キーストア、証明書、CRL などの公開鍵オブジェクトを、pktool コマンドを使って管理する方法について説明します。
この手順では、自己署名付き証明書を作成し、その証明書を PKCS #11 キーストアに格納します。また、この処理の一部として、RSA 公開鍵/非公開鍵ペアも作成されます。非公開鍵は、証明書とともにキーストアに格納されます。
自己署名付き証明書を生成する。
% pktool gencert [keystore=keystore] label=label-name \ subject=subject-DN serial=hex-serial-number |
公開鍵オブジェクトのタイプを指定することでキーストアを指定します。指定可能な値は nss、pkcs11、ssl のいずれかです。このキーワードは省略可能です。
発行者が証明書に与える一意の名前です。
証明書の識別名です。
16 進形式のシリアル番号です。証明書の発行者が、0x0102030405 などの番号を選択します。
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number n. ... |
このコマンドは、キーストア内のすべての証明書を一覧表示します。次の例では、キーストアには証明書が 1 つしか含まれていません。
次の例では、My Company のあるユーザーが自己署名付き証明書を作成し、その証明書を PKCS #11 オブジェクト用のキーストアに格納しています。このキーストアは最初は空になっています。キーストアが初期化されていない場合、ソフトトークンの PIN は changeme になります。
% pktool gencert keystore=pkcs11 label="My Cert" \ subject="C=US, O=My Company, OU=Security Engineering Group, CN=MyCA" \ serial=0x000000001 Enter pin for Sun Software PKCS#11 softtoken:Type PIN for token |
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01 |
この手順では、PEM または生の DER を使ってエンコードされた PKI 情報を含むファイルを、キーストアにインポートする方法を説明します。エクスポートの手順については、例 15–4 を参照してください。
証明書をインポートします。
% pktool import keystore=keystore infile=infile-name label=label-name |
非公開 PKI オブジェクトをインポートする場合、プロンプトが表示されたときにパスワードを入力します。
キーストアの内容を確認します。
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ... |
次の例では、サードパーティーから取得した PKCS #12 ファイルをインポートしています。pktool import コマンドは、gracedata.p12 ファイルから非公開鍵と証明書を取り出し、それらを指定されたキーストア内に格納します。
% pktool import keystore=pkcs11 infile=gracedata.p12 label=GraceCert Enter password to use for accessing the PKCS12 file:Type PKCS #12 password Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Found 1 certificate(s) and 1 key(s) in gracedata.p12 % pktool list Found 1 certificates. 1. (X.509 certificate) Label: GraceCert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01 |
次の例では、PEM 形式の X.509 証明書を指定されたキーストアにインポートしています。この公開証明書はパスワードで保護されていません。ユーザーの公開キーストアもパスワードで保護されていません。
% pktool import keystore=pkcs11 infile=somecert.pem label="TheirCompany Root Cert" % pktool list Found 1 certificates. 1. (X.509 certificate) Label: TheirCompany Root Cert ID: 21:ae:83:98:24:d1:1f:cb:65:5b:48:75:7d:02:47:cf:98:1f:ec:a0 Subject: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Issuer: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Serial: 0x01 |
PKCS #12 形式のファイルを作成し、非公開鍵とそれに関連付けられた X.509 証明書をほかのシステムにエクスポートすることができます。このファイルへのアクセスはパスワードで保護されます。
エクスポートする証明書を見つけます。
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ... |
鍵と証明書をエクスポートします。
pktool list コマンドから得られたキーストアとラベルを使用します。エクスポートファイルのファイル名を指定します。名前に空白が含まれている場合は、名前を二重引用符で囲みます。
% pktool export keystore=keystore outfile=outfile-name label=label-name |
エクスポートファイルをパスワードで保護します。
プロンプトで、キーストアの現在のパスワードを入力します。ここで、エクスポートファイルのパスワードを作成します。ファイルの受信者は、インポート時にこのパスワードを入力する必要があります。
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password |
パスワードはエクスポートファイルとは別に送ってください。パスワードを伝える最良の方法は、電話上など、通常の通信手段以外の手段を使用する方法です。
次の例では、あるユーザーが、非公開鍵とそれに関連付けられた X.509 証明書を、標準 PKCS #12 ファイル内にエクスポートしています。このファイルは、ほかのキーストアにインポートできます。PKCS #11 パスワードはソースのキーストアを保護します。PKCS #12 パスワードは、PKCS #12 ファイル内の非公開データを保護するために使用されます。このパスワードはファイルのインポート時に必要となります。
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01 |
% pktool export keystore=pkcs11 outfile=mydata.p12 label="My Cert" Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password |
続いて、このユーザーは受信者に電話をかけ、PKCS #12 パスワードを伝えます。
キーストア内のあるオブジェクトに対して、あるいはキーストアそのものに対して、パスフレーズを生成することができます。このパスフレーズは、オブジェクトやキーストアにアクセスする際に必要となります。キーストア内のオブジェクトに対するパスフレーズの生成例については、例 15–4 を参照してください。
キーストアにアクセスするためのパスフレーズを生成します。
% pktool setpin keystore=nss|pkcs11 dir=directory |
プロンプトに答えます。
キーストアにまだパスワードが設定されていない場合には、Return キーを押してパスワードを作成します。
Enter current token passphrase:Press the Return key Create new passphrase:Type the passphrase that you want to use Re-enter new passphrase:Retype the passphrase Passphrase changed. |
これでキーストアがパスフレーズで保護されます。 パスフレーズを忘れると、キーストア内のオブジェクトにアクセスできなくなります。
次の例は、NSS データベースのパスフレーズを設定する方法を示したものです。パスフレーズがまだ作成されていないため、最初のプロンプトで Return キーを押します。
% pktool setpin keystore=nss dir=/var/nss Enter current token passphrase:Press the Return key Create new passphrase: has8n0NdaH Re-enter new passphrase: has8n0NdaH Passphrase changed. |