Go to main content
Oracle® Solaris 11.3 での暗号化と証明書の管理

印刷ビューの終了

更新: 2017 年 3 月
 
 

pktool genkeypair コマンドを使用して鍵のペアを生成する方法

アプリケーションによっては、公開鍵と非公開鍵のペアが必要なものがあります。この手順では、これらの鍵のペアを作成して格納します。

  1. (オプション) キーストアの使用を予定している場合は、キーストアを作成します。
  2. 鍵のペアを作成します。

    次のいずれかを実行します。

    • 鍵のペアを作成し、その鍵のペアをファイル内に格納します。

      ディスク上のファイルから直接鍵を読み取るアプリケーションの場合は、ファイルベースの鍵が作成されます。通常、OpenSSL 暗号化ライブラリを直接使用するアプリケーションでは、そのアプリケーションのための鍵と証明書をファイル内に格納する必要があります。


      注 -  file キーストアは、楕円曲線 (ec) 鍵および証明書をサポートしていません。
      $ pktool genkeypair keystore=file outkey=key-filename \
      [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
      keystore=file

      file の値は、鍵の格納場所のファイルタイプを指定します。

      outkey=key-filename

      鍵のペアが格納されるファイルの名前を指定します。

      format=der|pem

      鍵のペアのエンコード形式を指定します。der 出力はバイナリであり、pem 出力は ASCII です。

      keytype=rsa|dsa

      file キーストア内に格納できる鍵のペアのタイプを指定します。定義については、DSA と RSA を参照してください。

      keylen=key-size

      鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。指定できるキーサイズを確認するには、cryptoadm list -vm コマンドを使用します。

    • 鍵のペアを作成して PKCS #11 キーストア内に格納します。

      この方法を使用するには、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]
      label=key-label

      鍵のペアのラベルを指定します。鍵のペアは、そのラベルによってキーストアから取得できます。

      token=token[:manuf[:serial]]

      トークン名を指定します。デフォルトでは、トークン名は Sun Software PKCS#11 softtoken です。

      keytype=rsa|dsa|ec [curve=ECC-Curve-Name]

      鍵のペアのタイプを指定します。楕円曲線 (ec) タイプの場合は、必要に応じて曲線名を指定します。曲線名は、listcurves オプションに対する出力として一覧表示されます。

      keylen=key-size

      鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。

      listcurves

      ec 鍵タイプの curve= オプションの値として使用できる楕円曲線の名前を一覧表示します。

    • 鍵のペアを生成し、それを NSS キーストア内に格納します。

      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]
      keystore=nss

      nss の値は、鍵の格納場所の NSS タイプを指定します。

      label=nickname

      鍵のペアのラベルを指定します。鍵のペアは、そのラベルによってキーストアから取得できます。

      token=token[:manuf[:serial]]

      トークン名を指定します。デフォルトでは、トークンは Sun Software PKCS#11 softtoken です。

      dir=directory

      NSS データベースのディレクトリパスを指定します。デフォルトでは、directory は現在のディレクトリです。

      prefix=database-prefix

      NSS データベースの接頭辞を指定します。デフォルトは接頭辞なしです。

      keytype=rsa|dsa|ec [curve=ECC-Curve-Name]

      鍵のペアのタイプを指定します。楕円曲線タイプの場合は、必要に応じて曲線名を指定します。曲線名は、listcurves オプションに対する出力として一覧表示されます。

      keylen=key-size

      鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。

      listcurves

      ec 鍵タイプの curve= オプションの値として使用できる楕円曲線の名前を一覧表示します。

  3. (オプション) 鍵が存在することを確認します。

    鍵を格納した場所に応じて、次のコマンドのいずれかを使用します。

    • key-filename ファイル内の鍵を確認します。
      $ pktool list keystore=file objtype=key infile=key-filename
      Found n keys.
      Key #1 - keytype:location (keylen)
    • PKCS #11 キーストア内の鍵を確認します。
      $ pktool list objtype=key
      Enter PIN for keystore:
      Found n keys.
      Key #1 - keytype:location (keylen)
    • NSS キーストア内の鍵を確認します。
      $ pktool list keystore=nss dir=directory objtype=key
使用例 29  pktool コマンドを使用して鍵のペアを作成する

次の例では、ユーザーがはじめて PKCS #11 キーストアを作成します。RSA 鍵のペアのキーサイズを確認したあと、ユーザーは、アプリケーションのための鍵のペアを生成します。最後に、ユーザーは、キーストア内に鍵のペアが存在することを確認します。ユーザーは、RSA 鍵のペアの 2 番目の出現をハードウェア上に格納できることに気付きました。ユーザーは token 引数を指定しなかったため、鍵のペアは Sun Software PKCS#11 softtoken として格納されます。

# pktool setpin
Create new passphrase:
Re-enter new passphrase:パスワードを再入力します
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  :パスワードを入力します

$ pktool list
Enter PIN for Sun Software PKCS#11 softtoken  :パスワードを入力します
No.      Key Type      Key Len.      Key Label
----------------------------------------------------
Asymmetric public keys:
1        RSA                         specialappkeypair
使用例 30  楕円曲線アルゴリズムを使用する鍵のペアを作成する

次の例では、ユーザーが楕円曲線 (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  :パスワードを入力します
No.  Key Type  Key Len.  Key Label
----------------------------------------------------
Asymmetric public keys:
1    ECDSA               eckeypair