アプリケーションによっては、公開鍵と非公開鍵のペアが必要なものがあります。この手順では、これらの鍵のペアを作成して格納します。
次のいずれかを実行します。
ディスク上のファイルから直接鍵を読み取るアプリケーションの場合は、ファイルベースの鍵が作成されます。通常、OpenSSL 暗号化ライブラリを直接使用するアプリケーションでは、そのアプリケーションのための鍵と証明書をファイル内に格納する必要があります。
% pktool genkeypair keystore=file outkey=key-filename \ [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
file の値は、鍵の格納場所のファイルタイプを指定します。
鍵のペアが格納されるファイルの名前を指定します。
鍵のペアのエンコード形式を指定します。der 出力はバイナリであり、pem 出力は ASCII です。
file キーストア内に格納できる鍵のペアのタイプを指定します。定義については、DSA と RSA を参照してください。
鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。指定できるキーサイズを確認するには、cryptoadm list -vm コマンドを使用します。
この方法を使用するには、Step 1 を完了する必要があります。
PKCS #11 キーストアは、オブジェクトをハードウェアデバイス上に格納するために使用されます。これらのデバイスには、Sun Crypto Accelerator 6000 カード、TPM (Trusted Platform Module) デバイス、または暗号化フレームワークに組み込まれたスマートカードがあります。また、PKCS #11 を使用すると、オブジェクトを softtoken (ソフトウェアベースのトークン) 内にも格納できます。このトークンでは、オブジェクトがディスク上の個人のサブディレクトリ内に格納されます。詳細は、pkcs11_softtoken (5) のマニュアルページを参照してください。
指定したラベルによって、鍵のペアをキーストアから取得できます。
% pktool genkeypair label=key-label \ [token=token[:manuf[:serial]]] \ [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]]\ [keylen=key-size] [listcurves]
鍵のペアのラベルを指定します。鍵のペアは、そのラベルによってキーストアから取得できます。
トークン名を指定します。デフォルトでは、トークン名は Sun Software PKCS#11 softtoken です。
鍵のペアのタイプを指定します。楕円曲線 (ec) タイプの場合は、必要に応じて曲線名を指定します。曲線名は、listcurves オプションに対する出力として一覧表示されます。
鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。
ec 鍵タイプの curve= オプションの値として使用できる楕円曲線の名前を一覧表示します。
NSS キーストアは、NSS を主要な暗号化インタフェースとして使用するサーバーによって使用されます。
この方法を使用するには、Step 1 を完了する必要があります。
% pktool keystore=nss genkeypair label=key-nickname \ [token=token[:manuf[:serial]]] \ [dir=directory-path] [prefix=database-prefix] \ [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]] \ [keylen=key-size] [listcurves]
nss の値は、鍵の格納場所の NSS タイプを指定します。
鍵のペアのラベルを指定します。鍵のペアは、そのラベルによってキーストアから取得できます。
トークン名を指定します。デフォルトでは、トークンは Sun Software PKCS#11 softtoken です。
NSS データベースのディレクトリパスを指定します。デフォルトでは、directory は現在のディレクトリです。
NSS データベースの接頭辞を指定します。デフォルトは接頭辞なしです。
鍵のペアのタイプを指定します。楕円曲線タイプの場合は、必要に応じて曲線名を指定します。曲線名は、listcurves オプションに対する出力として一覧表示されます。
鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。
ec 鍵タイプの curve= オプションの値として使用できる楕円曲線の名前を一覧表示します。
鍵を格納した場所に応じて、次のコマンドのいずれかを使用します。
% pktool list keystore=file objtype=key infile=key-filename Found n keys. Key #1 - keytype:location (keylen)
$ pktool list objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
% pktool list keystore=nss dir=directory objtype=key
次の例では、ユーザーがはじめて PKCS #11 キーストアを作成します。RSA 鍵のペアのキーサイズを確認したあと、ユーザーは、アプリケーションのための鍵のペアを生成します。最後に、ユーザーは、キーストア内に鍵のペアが存在することを確認します。ユーザーは、RSA 鍵のペアの 2 番目のインスタンスをハードウェア上に格納できることに気付きました。ユーザーは token 引数を指定しなかったため、鍵のペアは Sun Software PKCS#11 softtoken として格納されます。
# pktool setpin Create new passphrase: Re-enter new passphrase:Retype password Passphrase changed. % cryptoadm list -vm | grep PAIR ... CKM_DSA_KEY_PAIR_GEN 512 3072 . . . . . . . . . X . . . . CKM_RSA_PKCS_KEY_PAIR_GEN 256 8192 . . . . . . . . . X . . . . ... CKM_RSA_PKCS_KEY_PAIR_GEN 256 2048 X . . . . . . . . X . . . . ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1 % pktool genkeypair label=specialappkeypair keytype=rsa keylen=2048 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list Enter PIN for Sun Software PKCS#11 softtoken :Type password No. Key Type Key Len. Key Label ---------------------------------------------------- Asymmetric public keys: 1 RSA specialappkeypair使用例 4-7 楕円曲線アルゴリズムを使用する鍵のペアを作成する
次の例では、ユーザーが楕円曲線 (ec) 鍵のペアをキーストアに追加し、曲線名を指定したあと、キーストア内に鍵のペアが存在することを確認します。
% pktool genkeypair listcurves secp112r1, secp112r2, secp128r1, secp128r2, secp160k1 . . . c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2 prime192v3 % pktool genkeypair label=eckeypair keytype=ec curves=c2tnb431r1 % pktool list Enter PIN for Sun Software PKCS#11 softtoken :Type password No. Key Type Key Len. Key Label ---------------------------------------------------- Asymmetric public keys: 1 ECDSA eckeypair