この節では、パスワード、パスフレーズ、ファイル、キーストア、証明書、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. |