Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2022年7月27日
 
 

ikecert(8)

名前

ikecert - マシンのファイルシステム上の公開鍵証明書データベースを操作する

形式

ikecert certlocal
     [-a | -e | -h | -k | -l | -r | -U | -C | -L]
     [[-p] -T PKCS#11 token identifier]
     [option_specific_arguments]...
ikecert certdb [-a | -e | -h |  -r | -U | -C | -L |
                -l [-v [-H [sha1|sha224|sha256|sha384|sha512]]]]
     [[-p] -T PKCS#11 token identifier]
     [option_specific_arguments]...
ikecert certrldb [-a | -e | -h | -l | -r]
     [option_specific_arguments]...
ikecert tokens

説明

ikecert コマンドは、マシンのファイルシステム上の公開鍵証明書データベースを操作します。後述の「ファイル」の項を参照してください。

ikecert には、3 つの主要なリポジトリにそれぞれ対応する 3 つのサブコマンドと、使用可能なハードウェアトークンを一覧表示するサブコマンドがあります。

  • certlocal は秘密鍵リポジトリを処理します。

  • certdb は公開鍵リポジトリを処理します。

  • certrldb は証明書失効リスト (CRL) リポジトリを処理します。

  • tokens は、特定の PKCS#11 ライブラリの使用可能な PKCS#11 トークンを表示します。

サポートされている PKCS#11 ライブラリとハードウェアは、Sun 暗号化アクセラレータ 6000 だけです。

オプション

tokens 以外のサブコマンドにはオプションを 1 つ指定する必要があり、そのあとにオプション固有の引数をいくつか指定する場合もあります。

tokens サブコマンドは、/etc/inet/ike/config に指定されている PKCS#11 ライブラリの使用可能なトークンをすべて一覧表示します。

サポートしているオプションは、次のとおりです。

–a
certlocal

certlocal サブコマンドにこのオプションを指定すると、インターネット鍵交換 (IKE) のローカル ID データベースに秘密鍵がインストール (追加) されます。鍵データは標準入力から読み込まれ、その形式は Solaris 専用形式または暗号化されていない PKCS#8 DER 形式です。鍵の形式は自動的に検出されます。PKCS#8 鍵ファイルは PEM 形式です。パスワードで保護された暗号化された形式のファイルは認識されませんが、OpenSSL で入手可能なツールを使用すると適切に変換できます。

このオプションを PKCS#11 ハードウェアオブジェクトで使用するには、対応する公開証明書が IKE データベースにすでに存在している必要があります。公開証明書と秘密鍵の両方をインポートする場合は、certdb サブコマンドを使用して公開部分を最初にインポートする必要があります。

certdb

certdb サブコマンドにこのオプションを指定すると、証明書が標準入力から読み込まれて IKE 証明書データベースに追加されます。PEM Base64 または ASN.1 BER でエンコードされた X.509 証明書でなければなりません。証明書には、そのアイデンティティーの名前が採用されます。

このオプションでは、次のどちらかの方法で PKCS#11 ハードウェアキーストアに証明書をインポートできます。1 つは、一致する公開鍵オブジェクトと既存の秘密鍵オブジェクトの両方を certlocal –kc オプションで作成する方法、もう 1 つは、PKCS#11 トークンを –T オプションで明示的に指定する方法です。

certrldb

certrldb サブコマンドにこのオプションを指定すると、IKE データベースに CRL がインストール (追加) されます。CRL は標準入力から読み込まれます。

–e [–f pkcs8] slot
certlocal

certlocal サブコマンドにこのオプションを指定すると、IKE ローカル ID データベースから秘密鍵が抽出されます。鍵データは標準出力に書き込まれます。slot は、どの秘密鍵を抽出するかを指定します。秘密鍵はバイナリ BER 形式のみで抽出されます。

このオプションは特に慎重に使用してください。後述の「セキュリティー」のセクションを参照してください。

このオプションは PKCS#11 ハードウェアオブジェクトでは機能しません。

–f pkcs8」と組み合せて使用すると、暗号化されていない PKCS#8 形式で秘密鍵が抽出されます。

–e [–f output-format] certspec
certdb

When specified with the certdb subcommand, this option extracts a certificate from the IKE certificate database which matches the certspec and writes it to standard output.output-format オプションはエンコード形式を指定します。指定できるオプションは PEMBER です。最初に一致したアイデンティティーが抽出されます。デフォルトの出力形式は PEM です。

certrldb

certrldb サブコマンドにこのオプションを指定すると、IKE データベースから CRL が抽出されます。鍵データは標準出力に書き込まれます。certspec は、どの CRL を抽出するかを指定します。データベース内で最初に一致したものが抽出されます。 certspec パターンの詳細については、後述の「ノート」を参照してください。

–kc –m keysize –t keytype –D dname –A altname[ ... ]
[–S validity start_time][–F validity end_time]
[–T PKCS#11 token identifier]
certlocal

certlocal サブコマンドにこのオプションを指定すると、IKE 公開鍵/秘密鍵のペアが生成され、ローカル ID データベースに追加されます。証明書要求も生成され、標準出力に書き込まれます。上記のオプションの詳細は、dname 引数についてはNotesを参照し、このコマンドの altname 引数については「代替名」を参照してください。

–T を指定すると、ハードウェアトークンで鍵のペアが生成されます。

If –p is specified with –T, the PKCS#11 token PIN is stored in the clear on-disk, with root-protected file permissions.指定しない場合は、in.iked(8) の実行開始後に ikeadm(8) でトークンのロックを解除する必要があります。

–ks –m keysize –t keytype –D dname –A altname[ ... ]
[–S validity start_time][–F validity end_time]
[–f output-format][[–p] –T PKCS#11 token identifier]
certlocal

certlocal サブコマンドにこのオプションを指定すると、公開鍵/秘密鍵のペアが生成され、ローカル ID データベースに追加されます。自己署名付き証明書も生成され、証明書データベースにインストールされます。このコマンドの dname 引数と altname 引数の詳細については、後述の「ノート」を参照してください。

–T を指定すると、ハードウェアトークンで鍵のペアが生成され、自己署名付き証明書もハードウェアに保存されます。

–l [–v] [slot]
certlocal

certlocal サブコマンドにこのオプションを指定すると、ローカル ID データベース内の秘密鍵が一覧表示されます。–v オプションを指定すると、出力が詳細モードに切り替わり、証明書全体が出力されます。

–v オプションは特に慎重に使用してください。後述の「セキュリティー」のセクションを参照してください。–v オプションは PKCS#11 ハードウェアオブジェクトでは機能しません。

–l [–v [–H [sha1|sha224|sha256|sha384|sha512]]]] [certspec]
certdb

When specified with the certdb subcommand, this option lists certificates in the IKE certificate database matching the certspec, if any pattern is given.このリストには、証明書のアイデンティティー文字列が表示され、鍵データベースに存在する場合は秘密鍵も表示されます。–v を指定すると、出力が詳細モードに切り替わり、証明書全体が出力されます。–H オプションは、証明書のフィンガープリントの計算に使用されるハッシュアルゴリズムを指定します。

一致する証明書がハードウェアトークン上にある場合は、トークン ID も一覧表示されます。

certrldb

When specified with the certrldb subcommand, this option lists the CRLs in the IKE database along with any certificates that reside in the database and match the Issuer Name. certspec can be used to specify a specific CRL.–v オプションを指定すると、出力が詳細モードに切り替わり、証明書全体が出力されます。 certspec パターンの詳細については、後述の「ノート」を参照してください。

–r slot
certlocal

certlocal サブコマンドにこのオプションを指定すると、指定したスロットのローカル ID が削除されます。対応する公開鍵が存在する場合は削除されません。このスロットが「壊れている」とみなされる場合やほかの理由で認識されない場合にも、同じく削除されます。

これを PKCS#11 ハードウェアオブジェクトに対して呼び出すと、PKCS#11 公開鍵オブジェクトと秘密鍵オブジェクトも削除されます。公開鍵オブジェクトが certdb –r ですでに削除されていても問題ありません。

–r certspec
certdb

IKE 証明書データベースから証明書を削除します。指定した証明書パターンに一致する証明書が削除されます。これらの証明書に対応する秘密鍵が certlocal データベースに存在する場合、それらは削除されません。最初に一致したアイデンティティーが削除されます。

パターンでスロットを指定すると、そのスロットが「壊れている」とみなされる場合やほかの理由で認識されない場合にも、同じく削除されます。

これを PKCS#11 ハードウェアオブジェクトに対して呼び出すと、証明書と PKCS#11 公開鍵オブジェクトも削除されます。公開鍵オブジェクトが certlocal –r ですでに削除されていても問題ありません。

certrldb

certrldb サブコマンドにこのオプションを指定すると、指定した certspec を持つ CRL が削除されます。

–U slot
certlocal

certlocal サブコマンドに –T フラグとともにこのオプションを指定すると、PKCS#11 秘密鍵オブジェクトが IKE データベースからリンク解除されます。ハードウェアキーストアへのアクセスや、トークン上の秘密鍵オブジェクトの検証または削除が試みられることはありません。単にオブジェクトと IKE データベースの関連付けが解除されます。

certdb

certdb サブコマンドに –T フラグとともにこのオプションを指定すると、PKCS#11 証明書オブジェクトが IKE データベースからリンク解除されます。ハードウェアキーストアへのアクセスや、トークン上の証明書オブジェクトや公開鍵オブジェクトの検証または削除が試みられることはありません。単にオブジェクトと IKE データベースの関連付けが解除されます。

–C certspec
certlocal

certlocal サブコマンドにこのオプションを指定すると、秘密鍵、それに対応する証明書、および公開鍵が、ディスク上のキーストアから PKCS#11 トークンで指定されたハードウェアキーストアにコピーされます。このサブコマンドでは、一部が失敗しても、これらの各コンポーネントの作成が試みられます。いずれの場合も、ディスク上の元の秘密鍵および公開証明書はそのまま残るため、これらは個別に削除する必要があります。FIPS-140 準拠のデバイスなど、一部のハードウェアキーストアでは、この方法による秘密鍵オブジェクトの移行がサポートされていません。

certdb

certdb サブコマンドにこのオプションを指定すると、指定した certspec に一致する証明書、およびそれに対応する公開鍵が、ディスク上のキーストアから PKCS#11 トークンで指定されたハードウェアキーストアにコピーされます。元の公開証明書はそのまま残るため、必要な場合は個別に削除する必要があります。

If –p is specified, the PKCS#11 token PIN is stored in the clear on-disk, with root-protected file permissions.指定しない場合は、in.iked(8) の実行開始後に ikeadm(8) でトークンのロックを解除する必要があります。

–L pattern
certlocal

certlocal サブコマンドにこのオプションを指定すると、トークン上に存在している秘密鍵オブジェクトが IKE データベースにリンクされます。オブジェクト自体はトークン上に残ります。このオプションは、オブジェクトが元から Solaris の IKE ユーティリティーでトークン上に作成されたかのように、オブジェクトの存在を IKE インフラストラクチャーに認識させるだけです。

certdb

certdb サブコマンドにこのオプションを指定すると、トークン上に存在している証明書オブジェクトが IKE データベースにリンクされます。オブジェクト自体はトークン上に残ります。このオプションは、オブジェクトが元から Solaris の IKE ユーティリティーでトークン上に作成されたかのように、オブジェクトの存在を IKE インフラストラクチャーに認識させるだけです。

If –p is specified, the PKCS#11 token PIN is stored in the clear on-disk, with root-protected file permissions.指定しない場合は、in.iked(8) の実行開始後に ikeadm(8) でトークンのロックを解除する必要があります。

パラメータ

サポートされているパラメータは次のとおりです。

certspec

証明書仕様のパターンマッチングを指定します。certspec には、被認証者名、発行者名、および被認証者代替名を指定できます。

これらを使用すると、指定の certspec 値に一致し、ほかの certspec 値には一致しない証明書を指定できます。証明書に存在しないと想定する certspec 値を表すには、タグの前に ! を付加します。

有効な certspec は次のとおりです。

<Subject Names>
SUBJECT=<Subject Names>
ISSUER=<Issuer Names>
SLOT=<Slot Number in the certificate database>

Example:"ISSUER=C=US, O=SUN" IP=1.2.3.4 !DNS=example.com
Example:"C=US,   O=CALIFORNIA" IP=5.4.2.1 DNS=example.com 

代替名の有効な引数は次のとおりです。

IP=<IPv4 address>
DNS=<Domain Name Server address>
EMAIL=<email (RFC 822) address>
URI=<Uniform Resource Indicator value>
DN=<LDAP Directory Name value>
RID=<Registered Identifier value>

キーワードタグなしで、有効なスロット番号を指定できます。代替名はキーワードタグを使用して発行することもできます。

–A

証明書の被認証者代替名。–A オプションに続く引数は、tag=value という形式で指定するようにしてください。Valid tags are IP, DNS, EMAIL, URI, DN, and RID (see example below).

–D

証明書の被認証者の X.509 識別名。一般的な形式は次のとおりです。C=country (国)、O=organization (組織)、OU=organizational unit (組織単位)、CN=common name (共通名)。有効なタグは、COOU、および CN です。

–f

エンコード出力形式。pem (PEM Base64) または ber (ASN.1 BER) です。–f を指定しない場合、 pem とみなされます。

–F validity end_time

証明書の有効期間の終了時間。–F フラグを指定しない場合、 有効期間の終了時間は有効期間の開始時間から 4 年として計算されます。有効期間の日付と時間の構文については、「ノート」を参照してください。

–m

鍵のサイズ。有効な値は、10242048, 30724096 のいずれかです。Solaris 暗号化フレームワークでサポートされている鍵サイズを調べるには、次のコマンドを使用します。

% cryptoadm list -vm

このコマンドで表示されるメカニズムについては、pkcs11_softtoken(7) を参照してください。ハードウェアアクセラレーションを備えたシステムの場合、ハードウェアでサポートされているメカニズムがプロバイダごとに個別のセクションに表示されます。メカニズムは次のいずれかにできます。

CKM_RSA_PKCS_KEY_PAIR_GEN
CKM_DSA_KEY_PAIR_GEN
CKM_DH_PKCS_KEY_PAIR_GEN

RSA 鍵には少なくとも 2048 ビットの鍵サイズを使用することをお勧めします。これより短い鍵サイズは非推奨と見なされます。


注 - すべてのハードウェアですべての鍵サイズがサポートされているわけではありません。たとえば、Sun 暗号化アクセラレータ 4000 のキーストアでは (後述の –T オプションを使用した場合)、RSA には最大 2048 ビット、DSA には最大 1024 ビットの鍵だけがサポートされています。
–S validity start_time

証明書の有効期間の開始時間。–S フラグを指定しない場合、 有効期間の開始時間として現在の日付と時間が使用されます。有効期間の日付と時間の構文については、後述の「ノート」を参照してください。

–t

鍵のタイプ。有効な値は、rsa-sha1, rsa-sha256, rsa-sha384, rsa-sha512, dsa-sha1, dsa-sha256 のいずれかです。証明書の署名アルゴリズムとして sha1md5 を使用することは非推奨と見なされます。

–T

ハードウェアキーストアの PKCS#11 トークン識別子。これは、PKCS#11 標準に準拠したハードウェアデバイスインスタンスを指定します。/etc/inet/ike/config に PKCS#11 ライブラリが指定されている必要があります。(ike.config(5) を参照してください。)

トークン識別子は、スペースで詰められた 32 文字の文字列です。指定したトークンの長さが 32 文字未満の場合は、自動的にスペースで詰められます。

システムに複数の PKCS#11 ライブラリが存在する場合、/etc/inet/ike/config には一度に 1 つのライブラリしか指定できないことに留意してください。1 つの PKCS#11 ライブラリインスタンスに複数のトークン (それぞれが別個のキーストアを持つ) が存在することもあります。

セキュリティー

このコマンドは、公開鍵と秘密鍵のペアから秘密鍵をファイルに保存できます。秘密鍵が外部にさらされると、悪意のある者が何らかの方法でこの鍵を入手した場合、危殆化につながる可能性があります。

PKCS#11 ハードウェアオブジェクトの機能は、ディスク上の秘密鍵の短所に一部対処できます。IKE はシステムサービスなので、ブート時のユーザーの介入は望ましくありません。ただし、トークンの PIN は必要です。The PIN for the PKCS#11 token, therefore, is stored where normally the on-disk cryptographic keys would reside.このような設計上の決定は妥当と考えられます。なぜなら、ハードウェアキーストアでは、鍵の「所有」はまだ不可能で、ホストが危殆化した場合に鍵の「使用」だけが問題になるからです。PIN を越えると、ikecert のセキュリティーは PKCS#11 実装のセキュリティーまで下がります。PKCS#11 の実装も詳細に検討されるべきです。

詳細については、Bruce Schneier 著『Applied Cryptography: Protocols, Algorithms, and Source Code in C』の Matt Blaze による後書きを参照してください。

使用例 1 自己署名証明書の生成

次に、自己署名付き証明書の例を示します。

example# ikecert certlocal -ks -m 4096 -t rsa-sha256 -D "C=US, O=SUN" \
-A IP=1.2.3.4

IP=1.2.3.4
Generating, please wait...
Certificate generated.
Certificate added to database.
-----BEGIN X509 CERTIFICATE-----
MIIBRDCB76ADAgECAgEBMA0GCSqGSIb3DQEBBAUAMBsxCzAJBgNVBAYTAlVTMQww
CgYDVQQKEwNTVU4wHhcNMDEwMzE0MDEzMDM1WhcNMDUwMzE0MDEzMDM1WjAbMQsw
CQYDVQQGEwJVUzEMMAoGA1UEChMDU1VOMFowDQYJKoZIhvcNAQEBBQADSQAwRgJB
APDhqpKgjgRoRUr6twTMTtSuNsReEnFoReVer!ztpXpQK6ybYlRH18JIqU/uCV/r
26R/cVXTy5qc5NbMwA40KzcCASOjIDAeMAsGA1UdDwQEAwIFoDAPBgNVHREECDAG
hwQBAgMEMA0GCSqGSIb3DQEBBAUAA0EApTRD23KzN95GMvPD71hwwClukslKLVg8
f1xm9ZsHLPJLRxHFwsqqjAad4j4wwwriiUmGAHLTGB0lJMl8xsgxag==
-----END X509 CERTIFICATE-----
使用例 2 CA 要求の生成

CA 要求の生成は自己署名付き証明書の生成と同じに見えます。これら 2 つの相違点は、オプション –s の代わりに –c を使用し、証明書データが CA 要求であるということだけです。

example# ikecert certlocal -kc -m 4096 -t rsa-sha256 \
   -D "C=US, O=SUN" -A IP=1.2.3.4
使用例 3 ハードウェアキーストアを使用した CA 要求

次の例は、–T オプションでトークンを指定する方法を示しています。

example# ikecert certlocal -kc -m 2048 -t rsa-sha1 \
-T vca0-keystore -D "C=US, O=SUN" -A IP=1.2.3.4

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

0 以外

エラーが発生した。対応するエラーメッセージが標準エラーに書き込まれます。

ファイル

/etc/inet/secret/ike.privatekeys/*

秘密鍵。秘密鍵に対応する同じファイル名の公開鍵証明書が /etc/inet/ike/publickeys/ に存在する必要があります。

/etc/inet/ike/publickeys/*

公開鍵証明書。名前については、対応する秘密鍵の名前との関連だけが重要です。

/etc/inet/ike/crls/*

公開鍵証明書失効リスト。

/etc/inet/ike/config

PKCS#11 ライブラリのパス名を調べるために参照されます。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/network/ike
インタフェースの安定性
確実

関連項目

getdate(3C), ike.config(5), attributes(7), pkcs11_softtoken(7), ikeadm(8), in.iked(8)

Schneier, Bruce.『Applied Cryptography: Protocols, Algorithms, and Source Code in C』、Second Edition.John Wiley & Sons.New York, NY. 1996.

OASIS PKCS#11 specification

https://www.oasis-open.org/committees/pkcs11/

次に、–F または –S フラグを使用する場合の有効期間の日付と時間の構文について説明します。

相対日付の場合、構文は次のとおりです。

{+,-}[Ns][Nm][Nh][Nd][Nw][NM][Ny]

各表記の意味は次のとおりです。

N

整数を表します

s

秒を表します

m

分を表します

h

時間を表します

d

日を表します

w

週を表します

M

月を表します

y

年を表します

これらのパラメータは任意の順序で指定できます。たとえば、「+3d12h」は今から 3.5 日後、「-3y2M」は 3 年 2 か月前です。

固定値を持つパラメータはすべて、秒数の絶対値で足し合わせることができます。月と年は、秒数が可変なので、カレンダを使用して計算されます。月と年は、長さが固定ではないため、1 年または 1 か月を足すことは、次の年または次の月の同じ日を表すものとして定義されます。たとえば、今日が 2005 年 1 月 26 日で、今日から 3 年 1 か月後に証明書が失効する場合、失効日 (有効期間の終了時間) は 2008 年 2 月 26 日になります。オーバーフローは適切に処理されます。たとえば、2 月には 28 日しかないため、2005 年 1 月 31 日から 1 か月後は 2005 年 3 月 3 日です。

絶対日付の場合は、ファイル /etc/datemsk に含まれている日付形式の構文を使用できます (詳細は、getdate(3C) を参照)。日付文字列の前に「+」または「-」が付加されている場合は、現在の時間からの相対時間とみなされます。それ以外の場合は、絶対日付とみなされます。有効期間の終了日時が有効期間の開始日時より大きいことを確認する妥当性検査も行われます。たとえば、次のコマンドを実行すると、1 日と 2 時間前を開始日時、2007 年 1 月 22 日のローカル時間 12:00:00 を終了日時として証明書が作成されます。

# ikecert certlocal -ks -t rsa-sha256 -m 4096 \
    -D "CN=mycert, O=Sun, C=US" \
    -S -1d2h -F "01/22/2007 12:00:00"

As in.iked(8) can run only in the global zone, kernel zones, and exclusive-IP zones, this command is not useful in shared-IP zones.