certcreate コマンド

目的

certcreate は、指定されたユーザー用の新規証明書を要求します。

構文

certcreate [-S servicename ] [-s startdate ] [-e enddate ] { -f file | [-b | -t] } [-p privatekeystore ] -l label [-a subject_alt_name ] subject_distinguished_name [user-name]

説明

certcreate コマンドは、エンド・エンティティー・サービスおよびライブラリーを呼び出して、コマンド・ラインに含まれている識別情報を使用して新規証明書を作成するよう要求します。 使用するサービスは -S オプションで指定します。 使用可能なサービスは、/usr/lib/security/pki/ca.cfg に定義されています。 -S オプションが指定されていない証明書要求の場合は、ローカル・サービスを使用して作成されます。 /usr/lib/security/pki/ca.cfg ファイルにエントリーを持たないサービス名を指定すると、エラーになります。 ca.cfg ファイル内のサービス・エントリーにより、どの CA に要求を送信するのかが指定されます。

-s オプションが指定されていないと、現在の日付が使用されます。 -e オプションが指定されていないと、policy.cfg ファイルから取得される妥当性の値が使用されます。 この値が存在しない場合は、開始日から 1 年が妥当性の期間として使用されます。 startdateenddate は両方とも、 chuser コマンドによって使用される expires 属性と同じフォーマットになります。 このフォーマットは、MMDDhhmmyy という形式の 10 文字の文字列です。ここで、MM は月を、DD は日を、hh は時間を、mm は分を、そして yy は 1939 から 2038 年の最後の 2 桁を表します。 文字はすべて数字です。

-f オプションを指定した場合は、新規証明書は DER でエンコードされ、指定したファイルにバイナリー・フォーマットで保管されます。 指定しなかった場合は、新規証明書は DER でエンコードされ、標準出力にバイナリー・フォーマットまたは 16 進フォーマットのいずれかで出力されます。 -b オプションを指定した場合は、出力は標準出力にバイナリーで表示されます。指定しなかった場合は 16 進数になります。 -b-t も指定されていないと、バイナリー・フォーマットが使用されます。

対応する秘密鍵は、基となるコマンドまたはライブラリーでの必要に応じて、プライベート鍵ストアまたはデバイスに保管されます。 -p オプションを指定した場合は、秘密鍵は指定したプライベート鍵ストアに保管されます。 -p オプションを指定しない場合、デフォルトは /var/pki/ security/keys/ <username>になります。

-l オプションは、必ず指定しなければなりません。 ラベルは、鍵ストア内の秘密鍵の別名として使用される可変長のテキスト文字列です。

subject_alt_name の値がインターネットの電子メール・アドレスになります (このアドレスは rfc822Name にするよう RFC2459 で定義されています)。 この値はオプショナルです。 値が指定されていないと、証明書には rfc822Name フォーマットのサブジェクト代替名エクステンションが含まれないことになります。 Subject_distinguished_name の値は、PKI 証明書の場合の一連の有効値に限定されます。 これは X.501 タイプ名にすることが RFC2459 によって定義されています。

certcreate コマンドは、証明書を生成してユーザーのプライベート鍵ストアに保管するために、1 つ以上のプロンプトを出してパスワードを要求します。 ユーザーが既存の鍵ストアを持っている場合、パスワードを求めるプロンプトが 1 回出されます。 その鍵ストアが存在しない場合は作成され、ユーザーは確認のためにパスワードをもう一度再入力するよう求められます。 現行プロセス用の /dev/tty をオープンできないと、このコマンドは失敗します。

フラグ

項目 説明
-S サービス名 使用するサービス・モジュールを指定します。
-s 開始日 証明書が有効になる日付を指定します。
-e 終了日 証明書が無効になる日付を指定します。
-f ファイル 証明書を保管するファイルを指定します。
-p プライベートキーストア プライベート鍵ストアの場所を指定します。
-l ラベル 鍵ストア内の秘密鍵のラベルを指定します。
-a 主語 (名) 証明書のオーナーのサブジェクト代替名を指定します。
-b 証明書のデータをバイナリー・フォーマットにすることを指定します。
-t 証明書のデータを 16 進フォーマットにすることを指定します。

終了状況

項目 説明
0 コマンドは正常に完了しました。
>0 エラーが発生しました。

セキュリティー

これは setuid コマンドです。

Root およびグループ・セキュリティーに属する呼び出し側は、すべてのユーザーの証明書を作成できます。 非特権ユーザーの場合は、自分用の証明書しか作成できず、プライベート鍵ストアの位置の指定時には以下のルールが適用されます。
  • 呼び出し側は、デフォルトの秘密鍵ストア /var/pki/security/keys/ <user-name> を指定できます。
  • 起動者は、書き込みアクセス権を持つプライベート鍵ストアを指定できる。
非特権ユーザーは、他者の証明書は要求できません。

AUDIT

このコマンドは、以下のイベント情報を記録します。

CERT_Create <ユーザー名>

$ certcreate -S local -s 0831112702 -e 1231235902 -f 
cert.der -p file:/home/bob/bob.priv -l signcert 
bob@ibm.com ou=finance,cn=Bob%20James bob
上の例の場合、証明書は 2002 年 8 月 31 日 11:27 AM から 2002 年 12 月 31 日 11:59 PM まで有効になります。 この証明書はファイル cert.der に入れられ、秘密鍵は signcert という別名付きで bob.priv に入れられます。
以下の例では、開始日、終了日、およびプライベート鍵ストアにデフォルトが使用されます。
$ certcreate -l signcert bob@ibm.com ou=finance,cn=Bob James > cert.der

ファイル

/usr/lib/security/pki/ca.cfg

/usr/lib/security/pki/policy.cfg