ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1M: システム管理コマンド Oracle Solaris 11.1 Information Library (日本語) |
- マシンのファイルシステム上の公開鍵証明書データベースを操作する
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 | -l | -r | -U | -C | -L] [[-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 暗号化アクセラレータ 4000 だけです。
tokens 以外のサブコマンドにはオプションを 1 つ指定する必要があり、そのあとにオプション固有の引数をいくつか指定する場合もあります。
tokens サブコマンドは、/etc/inet/ike/config に指定されている PKCS#11 ライブラリの使用可能なトークンをすべて一覧表示します。
サポートしているオプションは、次のとおりです。
certlocal サブコマンドにこのオプションを指定すると、インターネット鍵交換 (IKE) のローカル ID データベースに秘密鍵がインストール (追加) されます。鍵データは標準入力から読み込まれ、その形式は Solaris 専用形式または暗号化されていない PKCS#8 DER 形式です。鍵の形式は自動的に検出されます。PKCS#8 鍵ファイルは PEM 形式です。パスワードで保護された暗号化された形式のファイルは認識されませんが、OpenSSL で入手可能なツールを使用すると適切に変換できます。
このオプションを PKCS#11 ハードウェアオブジェクトで使用するには、対応する公開証明書が IKE データベースにすでに存在している必要があります。公開証明書と秘密鍵の両方をインポートする場合は、certdb サブコマンドを使用して公開部分を最初にインポートする必要があります。
certdb サブコマンドにこのオプションを指定すると、証明書が標準入力から読み込まれて IKE 証明書データベースに追加されます。PEM Base64 または ASN.1 BER でエンコードされた X.509 証明書でなければなりません。証明書には、そのアイデンティティーの名前が採用されます。
このオプションでは、次のどちらかの方法で PKCS#11 ハードウェアキーストアに証明書をインポートできます。1 つは、一致する公開鍵オブジェクトと既存の秘密鍵オブジェクトの両方を certlocal -kc オプションで作成する方法、もう 1 つは、PKCS#11 トークンを -T オプションで明示的に指定する方法です。
certrldb サブコマンドにこのオプションを指定すると、IKE データベースに CRL がインストール (追加) されます。CRL は標準入力から読み込まれます。
certlocal サブコマンドにこのオプションを指定すると、IKE ローカル ID データベースから秘密鍵が抽出されます。鍵データは標準出力に書き込まれます。slot は、どの秘密鍵を抽出するかを指定します。秘密鍵はバイナリ BER 形式のみで抽出されます。
このオプションは特に慎重に使用してください。後述の「セキュリティー」のセクションを参照してください。
このオプションは PKCS#11 ハードウェアオブジェクトでは機能しません。
「-f pkcs8」と組み合せて使用すると、暗号化されていない PKCS#8 形式で秘密鍵が抽出されます。
certdb サブコマンドにこのオプションを指定すると、certspec に一致する証明書が IKE 証明書データベースから抽出され、標準出力に書き込まれます。output-format オプションはエンコード形式を指定します。指定できるオプションは PEM と BER です。最初に一致したアイデンティティーが抽出されます。デフォルトの出力形式は PEM です。
certrldb サブコマンドにこのオプションを指定すると、IKE データベースから CRL が抽出されます。鍵データは標準出力に書き込まれます。certspec は、どの CRL を抽出するかを指定します。データベース内で最初に一致したものが抽出されます。certspec パターンの詳細については、後述の「注意事項」を参照してください。
certlocal サブコマンドにこのオプションを指定すると、IKE 公開鍵/秘密鍵のペアが生成され、ローカル ID データベースに追加されます。証明書要求も生成され、標準出力に書き込まれます。上記のオプションの詳細は、dname 引数については「注意事項」を参照し、このコマンドの altname 引数については「代替名」を参照してください。
-T を指定すると、ハードウェアトークンで鍵のペアが生成されます。
-T と同時に -p を指定すると、PKCS#11 トークン PIN が平文でディスク上に保存され、ルート保護されたファイルアクセス権が設定されます。指定しない場合は、in.iked(1M) の実行開始後に ikeadm(1M) でトークンのロックを解除する必要があります。
certlocal サブコマンドにこのオプションを指定すると、公開鍵/秘密鍵のペアが生成され、ローカル ID データベースに追加されます。自己署名付き証明書も生成され、証明書データベースにインストールされます。このコマンドの dname 引数と altname 引数の詳細については、後述の「注意事項」を参照してください。
-T を指定すると、ハードウェアトークンで鍵のペアが生成され、自己署名付き証明書もハードウェアに保存されます。
certlocal サブコマンドにこのオプションを指定すると、ローカル ID データベース内の秘密鍵が一覧表示されます。-v オプションを指定すると、出力が詳細モードに切り替わり、証明書全体が出力されます。
-v オプションは特に慎重に使用してください。後述の「セキュリティー」のセクションを参照してください。-v オプションは PKCS#11 ハードウェアオブジェクトでは機能しません。
certdb サブコマンドにこのオプションを指定すると、IKE 証明書データベース内の証明書が一覧表示されます。certspec を指定した場合は、そのパターンに一致するものだけが表示されます。このリストには、証明書のアイデンティティー文字列が表示され、鍵データベースに存在する場合は秘密鍵も表示されます。-v を指定すると、出力が詳細モードに切り替わり、証明書全体が出力されます。
一致する証明書がハードウェアトークン上にある場合は、トークン ID も表示されます。
certrldb サブコマンドにこのオプションを指定すると、IKE データベース内の CRL と、データベース内にあり発行者名に一致する証明書が一覧表示されます。certspec を使用すると、特定の CRL を表示するように指定できます。-v オプションを指定すると、出力が詳細モードに切り替わり、証明書全体が出力されます。certspec パターンの詳細については、後述の「注意事項」を参照してください。
certlocal サブコマンドにこのオプションを指定すると、指定したスロットのローカル ID が削除されます。対応する公開鍵が存在する場合は削除されません。このスロットが「壊れている」とみなされる場合やほかの理由で認識されない場合にも、同じく削除されます。
これを PKCS#11 ハードウェアオブジェクトに対して呼び出すと、PKCS#11 公開鍵オブジェクトと秘密鍵オブジェクトも削除されます。公開鍵オブジェクトが certdb -r ですでに削除されていても問題ありません。
IKE 証明書データベースから証明書を削除します。指定した証明書パターンに一致する証明書が削除されます。これらの証明書に対応する秘密鍵が certlocal データベースに存在する場合、それらは削除されません。最初に一致したアイデンティティーが削除されます。
パターンでスロットを指定すると、そのスロットが「壊れている」とみなされる場合やほかの理由で認識されない場合にも、同じく削除されます。
これを PKCS#11 ハードウェアオブジェクトに対して呼び出すと、証明書と PKCS#11 公開鍵オブジェクトも削除されます。公開鍵オブジェクトが certlocal -r ですでに削除されていても問題ありません。
certrldb サブコマンドにこのオプションを指定すると、指定した certspec を持つ CRL が削除されます。
certlocal サブコマンドに -T フラグとともにこのオプションを指定すると、PKCS#11 秘密鍵オブジェクトが IKE データベースからリンク解除されます。ハードウェアキーストアへのアクセスや、トークン上の秘密鍵オブジェクトの検証または削除が試みられることはありません。単にオブジェクトと IKE データベースの関連付けが解除されます。
certdb サブコマンドに -T フラグとともにこのオプションを指定すると、PKCS#11 証明書オブジェクトが IKE データベースからリンク解除されます。ハードウェアキーストアへのアクセスや、トークン上の証明書オブジェクトや公開鍵オブジェクトの検証または削除が試みられることはありません。単にオブジェクトと IKE データベースの関連付けが解除されます。
certlocal サブコマンドにこのオプションを指定すると、秘密鍵、それに対応する証明書、および公開鍵が、ディスク上のキーストアから PKCS#11 トークンで指定されたハードウェアキーストアにコピーされます。このサブコマンドでは、一部が失敗しても、これらの各コンポーネントの作成が試みられます。いずれの場合も、ディスク上の元の秘密鍵および公開証明書はそのまま残るため、これらは個別に削除する必要があります。FIPS-140 準拠のデバイスなど、一部のハードウェアキーストアでは、この方法による秘密鍵オブジェクトの移行がサポートされていません。
certdb サブコマンドにこのオプションを指定すると、指定した certspec に一致する証明書、およびそれに対応する公開鍵が、ディスク上のキーストアから PKCS#11 トークンで指定されたハードウェアキーストアにコピーされます。元の公開証明書はそのまま残るため、必要な場合は個別に削除する必要があります。
-p を指定すると、PKCS#11 トークン PIN が平文でディスク上に保存され、ルート保護されたファイルアクセス権が設定されます。指定しない場合は、in.iked(1M) の実行開始後に ikeadm(1M) でトークンのロックを解除する必要があります。
certlocal サブコマンドにこのオプションを指定すると、トークン上に存在している秘密鍵オブジェクトが IKE データベースにリンクされます。オブジェクト自体はトークン上に残ります。このオプションは、オブジェクトが元から Solaris の IKE ユーティリティーでトークン上に作成されたかのように、オブジェクトの存在を IKE インフラストラクチャーに認識させるだけです。
certdb サブコマンドにこのオプションを指定すると、トークン上に存在している証明書オブジェクトが IKE データベースにリンクされます。オブジェクト自体はトークン上に残ります。このオプションは、オブジェクトが元から Solaris の IKE ユーティリティーでトークン上に作成されたかのように、オブジェクトの存在を IKE インフラストラクチャーに認識させるだけです。
-p を指定すると、PKCS#11 トークン PIN が平文でディスク上に保存され、ルート保護されたファイルアクセス権が設定されます。指定しない場合は、in.iked(1M) の実行開始後に ikeadm(1M) でトークンのロックを解除する必要があります。
サポートされているパラメータは次のとおりです。
証明書仕様のパターンマッチングを指定します。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 オプションに続く引数は、tag=value という形式で指定するようにしてください。有効なタグは、IP、DNS、EMAIL、 URI、DN、および RID です (下記の例を参照)。
証明書の被認証者の X.509 識別名。一般的な形式は次のとおりです。C=country (国)、O=organization (組織)、OU=organizational unit (組織単位)、CN=common name (共通名)。有効なタグは、C、 O、OU、および CN です。
エンコード出力形式。pem (PEM Base64) または ber (ASN.1 BER) です。-f を指定しない場合、 pem とみなされます。
証明書の有効期間の終了時間。-F フラグを指定しない場合、 有効期間の終了時間は有効期間の開始時間から 4 年として計算されます。有効期間の日付と時間の構文については、「注意事項」を参照してください。
鍵のサイズ。有効な値は、512、1024、2048、3072、または 4096 です。Solaris 暗号化フレームワークでサポートされている鍵サイズを調べるには、次のコマンドを使用します。
% cryptoadm list -vm
このコマンドで表示されるメカニズムについては、pkcs11_softtoken(5) を参照してください。ハードウェアアクセラレーションを備えたシステムの場合、ハードウェアでサポートされているメカニズムがプロバイダごとに個別のセクションに表示されます。メカニズムは次のいずれかにできます。
CKM_RSA_PKCS_KEY_PAIR_GEN CKM_DSA_KEY_PAIR_GEN CKM_DH_PKCS_KEY_PAIR_GEN
注 - すべてのハードウェアですべての鍵サイズがサポートされているわけではありません。たとえば、Sun 暗号化アクセラレータ 4000 のキーストアでは (後述の -T オプションを使用した場合)、RSA には最大 2048 ビット、DSA には最大 1024 ビットの鍵だけがサポートされています。
証明書の有効期間の開始時間。-S フラグを指定しない場合、 有効期間の開始時間として現在の日付と時間が使用されます。有効期間の日付と時間の構文については、後述の「注意事項」を参照してください。
鍵のタイプ。有効な値は、rsa-sha1、rsa-md5、dsa-sha1 のいずれかです。
ハードウェアキーストアの PKCS#11 トークン識別子。これは、PKCS#11 標準に準拠したハードウェアデバイスインスタンスを指定します。/etc/inet/ike/config に PKCS#11 ライブラリが指定されている必要があります。(ike.config(4) を参照。)
トークン識別子は、スペースで詰められた 32 文字の文字列です。指定したトークンの長さが 32 文字未満の場合は、自動的にスペースで詰められます。
システムに複数の PKCS#11 ライブラリが存在する場合、/etc/inet/ike/config には一度に 1 つのライブラリしか指定できないことに留意してください。1 つの PKCS#11 ライブラリインスタンスに複数のトークン (それぞれが別個のキーストアを持つ) が存在することもあります。
このコマンドは、公開鍵と秘密鍵のペアから秘密鍵をファイルに保存できます。秘密鍵が外部にさらされると、悪意のある者が何らかの方法でこの鍵を入手した場合、危殆化につながる可能性があります。
PKCS#11 ハードウェアオブジェクトの機能は、ディスク上の秘密鍵の短所に一部対処できます。IKE はシステムサービスなので、ブート時のユーザーの介入は望ましくありません。ただし、トークンの PIN は必要です。したがって、PKCS#11 トークンの PIN は、ディスク上の暗号化鍵が通常置かれる場所に保存されます。このような設計上の決定は妥当と考えられます。なぜなら、ハードウェアキーストアでは、鍵の「所有」はまだ不可能で、ホストが危殆化した場合に鍵の「使用」だけが問題になるからです。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 512 -t rsa-md5 -D "C=US, O=SUN" -A 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 512 -t rsa-md5 \ -D "C=US, O=SUN" -A IP=1.2.3.4
例 3 ハードウェアキーストアを使用した CA 要求
次の例は、-T オプションでトークンを指定する方法を示しています。
example# # ikecert certlocal -kc -m 1024 -t rsa-md5 -T vca0-keystore \ -D "C=US, O=SUN" -A IP=1.2.3.4
次の終了ステータスが返されます。
正常終了。
エラーが発生した。対応するエラーメッセージが標準エラーに書き込まれます。
秘密鍵。秘密鍵に対応する同じファイル名の公開鍵証明書が /etc/inet/ike/publickeys/ に存在する必要があります。
公開鍵証明書。名前については、対応する秘密鍵の名前との関連だけが重要です。
公開鍵証明書失効リスト。
PKCS#11 ライブラリのパス名を調べるために参照されます。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
ikeadm(1M), in.iked(1M), getdate(3C), ike.config(4), attributes(5), pkcs11_softtoken(5)
Schneier, Bruce 著『Applied Cryptography: Protocols, Algorithms, and Source Code in C』、第 2 版、John Wiley & Sons 発行、New York, NY、1996.
『PKCS#11 v2.11: Cryptographic Token Interface Standards』、RSA Labs 発行、2001 年 11 月
次に、-F または -S フラグを使用する場合の有効期間の日付と時間の構文について説明します。
相対日付の場合、構文は次のとおりです。
{+,-}[Ns][Nm][Nh][Nd][Nw][NM][Ny]
各表記の意味は次のとおりです。
整数を表します
秒を表します
分を表します
時間を表します
日を表します
週を表します
月を表します
年を表します
これらのパラメータは任意の順序で指定できます。たとえば、「+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-sha1 -m 1024 \ -D "CN=mycert, O=Sun, C=US" \ -S -1d2h -F "01/22/2007 12:00:00"
in.iked(1M) は大域ゾーンと排他的 IP ゾーンでのみ実行可能なので、このコマンドは共有 IP ゾーンでは役立ちません。