certreq

certreq コマンドを使用して、証明機関 (CA) の証明書の要求、前の CA の要求に対する応答の取得、.inf ファイルからの新しい要求の作成、要求に対する応答の受け入れとインストール、既存の CA 証明書または要求からの相互証明または限定従属の要求の作成、および相互証明または限定従属の要求の署名を行います。

重要

以前のバージョンの certreq コマンドでは、ここで説明するオプションの一部が提供されていない場合があります。 certreq の特定のバージョンに基づいてサポートされているオプションを確認するには、コマンドライン ヘルプ オプション certreq -v -? を実行します。

certreq コマンドでは、CEP/CES 環境でのキーの構成証明テンプレートに基づく新しい証明書要求の作成はサポートされていません。

警告

このトピックの内容は、Windows Server の既定の設定に基づいています。たとえば、キーの長さを 2048 に設定し、CSP として Microsoft ソフトウェア キー記憶域プロバイダーを選択し、セキュア ハッシュ アルゴリズム 1 (SHA1) を使用します。 これらの選択を、会社のセキュリティ ポリシーの要件に対して評価します。

構文

certreq [-submit] [options] [requestfilein [certfileout [certchainfileout [fullresponsefileOut]]]]
certreq -retrieve [options] requestid [certfileout [certchainfileout [fullresponsefileOut]]]
certreq -new [options] [policyfilein [requestfileout]]
certreq -accept [options] [certchainfilein | fullresponsefilein | certfilein]
certreq -sign [options] [requestfilein [requestfileout]]
certreq –enroll [options] templatename
certreq –enroll –cert certId [options] renew [reusekeys]

パラメーター

パラメーター 説明
-submit 証明機関に要求を送信します。
-retrieve <requestid> 証明機関から以前の要求への応答を取得します。
-new .inf ファイルから新しい要求を作成します。
-accept 証明書要求への応答を受け入れてインストールします。
-policy 要求のポリシーを設定します。
-sign 相互証明または限定従属要求に署名します。
-enroll 証明書を登録または更新します。
-? certreq の構文、オプション、および説明の一覧を表示します。
<parameter> -? 指定したパラメーターのヘルプを表示します。
-v -? certreq の構文、オプション、および説明の詳細な一覧を表示します。

certreq -submit

基本的な証明書要求を送信するには:

certreq –submit certrequest.req certnew.cer certnew.pfx

解説

  • これは既定の certreq.exe パラメーターです。 コマンド ライン プロンプトでオプションを指定しない場合、certreq.exe は、証明機関に証明書要求の送信を試みます。 –submit オプションを使用するときには、証明書要求ファイルを指定する必要があります。 このパラメーターを省略すると、共通の [ファイルを開く] ウィンドウが表示され、適切な証明書要求ファイルを選択できます。

  • SAN 属性を指定して証明書を要求するには、マイクロソフト サポート技術情報の記事 931351「セキュリティで保護された LDAP 証明書にサブジェクトの代替名を追加する方法」の「certreq.exe ユーティリティを使用して証明書要求を作成して送信する方法」のセクションを参照してください。

certreq -retrieve

証明書 ID 20 を取得し、MyCertificate という名前の証明書ファイル (.cer) を作成するには、次のように入力します。

certreq -retrieve 20 MyCertificate.cer

解説

  • 証明機関が証明書を発行した後に証明書を取得するには、certreq -retrieve requestid を使用します。 requestid PKC は、プレフィックスが 0x の 10 進数または 16 進数および 0x のプレフィックスが付かない証明書シリアル番号を指定できます。 証明書の要求が保留中の状態であったかどうかを考慮せずに、失効した証明書や期限切れの証明書など、証明機関によって発行された証明書を取得すするために使用することもできます。

  • 証明機関に要求を送信した場合、証明機関のポリシー モジュールが要求を保留状態のままにし、requestid を certreq 呼び出し元に返して表示する場合があります。 最終的に、証明機関の管理者が証明書を発行するか、要求を拒否します。

certreq -new

新しい要求を作成するには、次のように入力します。

[newrequest]
; At least one value must be set in this section
subject = CN=W2K8-BO-DC.contoso2.com

INF ファイルに追加できるセクションの一部を次に示します。

[newrequest]

INF ファイルのこの領域は、新しい証明書要求テンプレートには必須であり、値を持つパラメーターを少なくとも 1 つ含める必要があります。

キー1 説明 2
サブジェクト いくつかのアプリは、証明書のサブジェクト情報に依存しています。 このキーの値を指定することをお勧めします。 サブジェクトがここで設定されていない場合は、サブジェクト代替名証明書拡張機能の一部としてサブジェクト名を含めることをお勧めします。 相対識別名の文字列値 Subject = CN=computer1.contoso.com Subject=CN=John Smith,CN=Users,DC=Contoso,DC=com
Exportable TRUE に設定すると、秘密キーを証明書と共にエクスポートできます。 高いレベルのセキュリティを確保するには、秘密キーをエクスポート可能にしないでください。ただし、場合によっては、複数のコンピューターまたはユーザーが同じ秘密キーを共有する必要がある場合に必要になることがあります。 true | false Exportable = TRUE] の順にクリックします。 CNG キーは、これとエクスポート可能なプレーンテキストを区別できます。 CAPI1 キーは区別できません。
ExportableEncrypted 秘密キーをエクスポート可能に設定する必要があるかどうかを指定します。 true | false ExportableEncrypted = true

ヒント: すべての公開キーのサイズとアルゴリズムが、すべてのハッシュ アルゴリズムで動作するわけではありません。 指定された CSP は、指定されたハッシュ アルゴリズムもサポートする必要があります。 サポートされているハッシュ アルゴリズムの一覧を表示するには、次のコマンドを実行します。certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo

HashAlgorithm この要求に使用するハッシュ アルゴリズム。 Sha256, sha384, sha512, sha1, md5, md4, md2 HashAlgorithm = sha1] の順にクリックします。 サポートされているハッシュアルゴリズムの一覧を表示するには、certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo を使用します。
KeyAlgorithm 公開キーと秘密キーのペアを生成するためにサービス プロバイダーによって使用されるアルゴリズム。 RSA, DH, DSA, ECDH_P256, ECDH_P521, ECDSA_P256, ECDSA_P384, ECDSA_P521 KeyAlgorithm = RSA
KeyContainer 新しいキー マテリアルが生成される新しい要求に対しては、このパラメーターを設定しないことをお勧めします。 キー コンテナーは、システムによって自動的に生成され、維持されます。

既存のキー マテリアルを使用する必要がある要求の場合、この値は既存のキーの key-container 名に設定できます。 certutil –key コマンドを使用して、マシンのコンテキストで使用可能なキー コンテナーの一覧を表示します。 現在のユーザー名を出力するために、certutil –key –user コマンドを使用します。

ランダムな文字列値

ヒント: INF 解析の問題の可能性を回避するには、空白または特殊文字を含む INF キー値を二重引用符で囲みます。

KeyContainer = {C347BD28-7F69-4090-AA16-BC58CF4D749C}
Keylength 公開キーと秘密キーの長さを定義します。 キーの長さは、証明書のセキュリティ レベルに影響します。 キーの長さが大きいほど、通常は高いセキュリティ レベルになります。ただし、一部のアプリケーションでは、キーの長さに関する制限が適用される場合があります。 暗号化サービス プロバイダーでサポートされている任意の有効なキーの長さ。 KeyLength = 2048
KeySpec キーを署名、Exchange (暗号化)、またはその両方に使用できるかどうかを判別します。 AT_NONE, AT_SIGNATURE, AT_KEYEXCHANGE KeySpec = AT_KEYEXCHANGE
KeyUsage 証明書キーの使用目的を定義します。
  • CERT_DIGITAL_SIGNATURE_KEY_USAGE -- 80 (128)
  • CERT_NON_REPUDIATION_KEY_USAGE -- 40 (64)
  • CERT_KEY_ENCIPHERMENT_KEY_USAGE -- 20 (32)
  • CERT_DATA_ENCIPHERMENT_KEY_USAGE -- 10 (16)
  • CERT_KEY_AGREEMENT_KEY_USAGE -- 8
  • CERT_KEY_CERT_SIGN_KEY_USAGE -- 4
  • CERT_OFFLINE_CRL_SIGN_KEY_USAGE -- 2
  • CERT_CRL_SIGN_KEY_USAGE -- 2
  • CERT_ENCIPHER_ONLY_KEY_USAGE -- 1
  • CERT_DECIPHER_ONLY_KEY_USAGE -- 8000 (32768)
KeyUsage = CERT_DIGITAL_SIGNATURE_KEY_USAGE | CERT_KEY_ENCIPHERMENT_KEY_USAGE

ヒント: 複数の値は、パイプ (|) 記号の区切り文字を使用します。 複数の値を使用する場合は、INF 解析の問題を回避するために二重引用符を使用してください。 表示される値は、各ビット定義の 16 進数 (10 進数) 値です。 以前の構文も使用できます。シンボリック表現ではなく、複数のビットが設定された単一の 16 進値です。 たとえば、「 KeyUsage = 0xa0 」のように入力します。

KeyUsageProperty 秘密キーを使用できる特定の目的を識別する値を取得します。
  • NCRYPT_ALLOW_DECRYPT_FLAG -- 1
  • NCRYPT_ALLOW_SIGNING_FLAG -- 2
  • NCRYPT_ALLOW_KEY_AGREEMENT_FLAG -- 4
  • NCRYPT_ALLOW_ALL_USAGES -- ffffff (16777215)
KeyUsageProperty = NCRYPT_ALLOW_DECRYPT_FLAG | NCRYPT_ALLOW_SIGNING_FLAG
MachineKeySet このキーは、ユーザーではなく、マシンによって所有される証明書を作成する必要がある場合に重要です。 生成されるキー マテリアルは、要求を作成したセキュリティ プリンシパル (ユーザーまたはコンピューター アカウント) のセキュリティ コンテキストで保持されます。 管理者がコンピューターの代わりに証明書要求を作成する場合、キー マテリアルは、管理者のセキュリティ コンテキストではなく、マシンのセキュリティ コンテキストで作成する必要があります。 それ以外の場合、マシンは管理者のセキュリティ コンテキスト内に存在するため、秘密キーにアクセスできませんでした。 true | false] の順にクリックします。 既定値は false です。 MachineKeySet = true
NotBefore 要求を発行できない日付または日時を指定します。 NotBeforeValidityPeriod および ValidityPeriodUnits と共に使用できます。 日付または日付と時刻 NotBefore = 7/24/2012 10:31 AM

ヒント:NotBefore および NotAfter は RequestType=cert 専用です。 日付の解析は、ロケールを区別するように試行されます。 月の名前を使用すると明確になり、すべてのロケールで機能します。

NotAfter 要求を発行できない日付または日付と時刻を指定します。 NotAfter は、 ValidityPeriodValidityPeriodUnits では使用できません。 日付または日付と時刻 NotAfter = 9/23/2014 10:31 AM

ヒント:NotBefore および NotAfterRequestType=cert 専用です。 日付の解析は、ロケールを区別するように試行されます。 月の名前を使用すると明確になり、すべてのロケールで機能します。

PrivateKeyArchive PrivateKeyArchive 設定は、対応する RequestType が CMC に設定されている場合にのみ機能します。これは、CMS 上の証明書管理メッセージ (CMC) の要求形式のみが、キーのアーカイブのために要求元の秘密キーを CA に安全に転送できるためです。 true | false PrivateKeyArchive = true
[EncryptionAlgorithm] 使用する暗号化アルゴリズム。 使用可能なオプションは、オペレーティング システムのバージョンとインストールされている暗号化プロバイダーのセットによって異なります。 使用可能なアルゴリズムの一覧を表示するには、次のコマンドを実行します。certutil -oid 2 | findstr pwszCNGAlgid 使用する指定された CSP は、指定された対称暗号化のアルゴリズムと長さもサポートする必要があります。 EncryptionAlgorithm = 3des
EncryptionLength 使用する暗号化アルゴリズムの長さ。 指定した EncryptionAlgorithm で許可されている任意の長さ。 EncryptionLength = 128
ProviderName プロバイダー名は、CSP の表示名です。 使用している CSP のプロバイダー名がわからない場合は、コマンド ラインから certutil –csplist を実行します。 このコマンドは、ローカル・システムで使用可能なすべての CSP の名前を表示します ProviderName = Microsoft RSA SChannel Cryptographic Provider
ProviderType プロバイダーの種類は、RSA Full などの特定のアルゴリズム機能に基づいて特定のプロバイダーを選択するために使用されます。 使用している CSP のプロバイダーの種類がわからない場合は、コマンド ライン プロンプトから certutil –csplist を実行します。 このコマンドは、ローカル システムで使用可能なすべての CSP のプロバイダーの種類を表示します。 ProviderType = 1
RenewalCert 証明書の要求が生成されたシステム上に存在する証明書を更新する必要がある場合は、その証明書のハッシュをこのキーの値として指定する必要があります。 証明書の要求が作成されたコンピューターで使用可能な任意の証明書の証明書ハッシュ。 証明書ハッシュがわからない場合は、証明書 MMC スナップインを使用して、更新する必要がある証明書を確認します。 証明書のプロパティを開き、証明書の Thumbprint 属性を確認します。 証明書の更新には、PKCS#7 または CMC のいずれかの要求形式が必要です。 RenewalCert = 4EDF274BD2919C6E9EC6A522F0F3B153E9B1582D
RequesterName 別のユーザー要求に代わって登録要求を行います。 要求も登録エージェント証明書で署名する必要があり、さもなければ CA が要求を拒否します。 -cert オプションを使用して、登録エージェント証明書を指定します。 RequestTypePKCS#7 または CMC に設定されている場合、証明書の要求に対して要求者名を指定できます。 RequestTypePKCS#10 に設定されている場合、このキーは無視されます。 Requestername は、要求の一部としてのみ設定できます。 保留中の要求で Requestername を操作することはできません。 Domain\User Requestername = Contoso\BSmith
RequestType 証明書要求の生成と送信に使用される標準を決定します。
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
ヒント: このオプションは、自己署名の証明書または自己発行の証明書を示します。 要求ではなく、新しい証明書が生成され、証明書がインストールされます。 自己署名が既定値です。 自己署名されていない自己署名証明書を作成するには、–cert オプションを使用して署名証明書を指定します。
RequestType = CMC
SecurityDescriptor セキュリティ保護可能なオブジェクトに関連付けられているセキュリティ情報を格納します。 ほとんどのセキュリティ保護可能なオブジェクトでは、セキュリティ記述子定義言語に基づいて object.Strings を作成する関数呼び出しで、オブジェクトのセキュリティ記述子を指定できます。

ヒント: これは、マシン コンテキストのスマート カード以外のキーにのみ関連します。

SecurityDescriptor = D:P(A;;GA;;;SY)(A;;GA;;;BA)
AlternateSignatureAlgorithm PKCS#10 要求または証明書署名の署名アルゴリズム オブジェクト識別子 (OID) が不連続か結合かを示すブール値を指定して取得します。 true | false AlternateSignatureAlgorithm = false

RSA 署名の場合、falsePkcs1 v1.5 を示し truev2.1 署名を示します。

サイレント 既定では、このオプションを使用すると、CSP は対話型ユーザー デスクトップにアクセスし、ユーザーにスマート カード PIN などの情報を要求できます。 このキーが TRUE に設定されている場合、CSP はデスクトップと対話することはできず、ユーザーに対するユーザー インターフェイスの表示がブロックされます。 true | false Silent = true
SMIME このパラメーターが TRUE に設定されている場合、オブジェクト識別子の値 1.2.840.113549.1.9.15 を持つ拡張機能が要求に追加されます。 オブジェクト識別子の数は、インストールされているオペレーティング システムのバージョンと CSP 機能によって異なります。これは、Outlook などの Secure Multipurpose Internet Mail Extensions (S/MIME) アプリケーションで使用できる対称暗号化アルゴリズムを指します。 true | false SMIME = true
UseExistingKeySet このパラメーターは、証明書要求の作成に既存のキー ペアを使用する必要があることを指定するために使用されます。 このキーが TRUE に設定されている場合は、RenewalCert キーまたは KeyContainer 名の値も指定する必要があります。 既存のキーのプロパティを変更できないので、Exportable キーを設定することはできません。 この場合、証明書要求の作成時にキー マテリアルは生成されません。 true | false UseExistingKeySet = true
KeyProtection 使用する前に、秘密キーを保護する方法を示す値を指定します。
  • XCN_NCRYPT_UI_NO_PROTCTION_FLAG -- 0
  • XCN_NCRYPT_UI_PROTECT_KEY_FLAG -- 1
  • XCN_NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG -- 2
KeyProtection = NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG
SuppressDefaults 既定の拡張機能と属性が要求に含まれるかどうかを示すブール値を指定します。 既定値は、オブジェクト識別子 (OID) によって表されます。 true | false SuppressDefaults = true
FriendlyName 新しい証明書のフレンドリ名を入力します。 Text FriendlyName = Server1
ValidityPeriodUnits ValidityPeriod で使用する多数の単位を指定します。 注: これは、request type=cert の場合にのみ使用されます。 数値 ValidityPeriodUnits = 3
ValidityPeriod ValidityPeriod は、米国英語の複数期間である必要があります。 注: これは、request type=cert の場合にのみ使用されます。 Years | Months | Weeks | Days | Hours | Minutes | Seconds ValidityPeriod = Years

1等号 (=) の左側のパラメーター

2等号 (=) の右側のパラメーター

[拡張機能]

このセクションは省略可能です。

拡張 OID 定義
2.5.29.17 2.5.29.17 = {text}
continue continue = UPN=User@Domain.com&
continue continue = EMail=User@Domain.com&
continue continue = DNS=host.domain.com&
continue continue = DirectoryName=CN=Name,DC=Domain,DC=com&
continue continue = URL=<http://host.domain.com/default.html&>
continue continue = IPAddress=10.0.0.1&
continue continue = RegisteredId=1.2.3.4.5&
continue continue = 1.2.3.4.6.1={utf8}String&
continue continue = 1.2.3.4.6.2={octet}AAECAwQFBgc=&
continue continue = 1.2.3.4.6.2={octet}{hex}00 01 02 03 04 05 06 07&
continue continue = 1.2.3.4.6.3={asn}BAgAAQIDBAUGBw==&
continue continue = 1.2.3.4.6.3={hex}04 08 00 01 02 03 04 05 06 07
2.5.29.37 2.5.29.37={text}
continue continue = 1.3.6.1.5.5.7
continue continue = 1.3.6.1.5.5.7.3.1
2.5.29.19 {text}ca=0pathlength=3
Critical Critical=2.5.29.19
KeySpec
  • AT_NONE -- 0
  • AT_SIGNATURE -- 2
  • AT_KEYEXCHANGE -- 1
RequestType
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
KeyUsage
  • CERT_DIGITAL_SIGNATURE_KEY_USAGE -- 80 (128)
  • CERT_NON_REPUDIATION_KEY_USAGE -- 40 (64)
  • CERT_KEY_ENCIPHERMENT_KEY_USAGE -- 20 (32)
  • CERT_DATA_ENCIPHERMENT_KEY_USAGE -- 10 (16)
  • CERT_KEY_AGREEMENT_KEY_USAGE -- 8
  • CERT_KEY_CERT_SIGN_KEY_USAGE -- 4
  • CERT_OFFLINE_CRL_SIGN_KEY_USAGE -- 2
  • CERT_CRL_SIGN_KEY_USAGE -- 2
  • CERT_ENCIPHER_ONLY_KEY_USAGE -- 1
  • CERT_DECIPHER_ONLY_KEY_USAGE -- 8000 (32768)
KeyUsageProperty
  • NCRYPT_ALLOW_DECRYPT_FLAG -- 1
  • NCRYPT_ALLOW_SIGNING_FLAG -- 2
  • NCRYPT_ALLOW_KEY_AGREEMENT_FLAG -- 4
  • NCRYPT_ALLOW_ALL_USAGES -- ffffff (16777215)
KeyProtection
  • NCRYPT_UI_NO_PROTECTION_FLAG -- 0
  • NCRYPT_UI_PROTECT_KEY_FLAG -- 1
  • NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG -- 2
SubjectNameFlags template
  • CT_FLAG_SUBJECT_REQUIRE_COMMON_NAME -- 40000000 (1073741824)
  • CT_FLAG_SUBJECT_REQUIRE_DIRECTORY_PATH -- 80000000 (2147483648)
  • CT_FLAG_SUBJECT_REQUIRE_DNS_AS_CN -- 10000000 (268435456)
  • CT_FLAG_SUBJECT_REQUIRE_EMAIL -- 20000000 (536870912)
  • CT_FLAG_OLD_CERT_SUPPLIES_SUBJECT_AND_ALT_NAME -- 8
  • CT_FLAG_SUBJECT_ALT_REQUIRE_DIRECTORY_GUID -- 1000000 (16777216)
  • CT_FLAG_SUBJECT_ALT_REQUIRE_DNS -- 8000000 (134217728)
  • CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS -- 400000 (4194304)
  • CT_FLAG_SUBJECT_ALT_REQUIRE_EMAIL -- 4000000 (67108864)
  • CT_FLAG_SUBJECT_ALT_REQUIRE_SPN -- 800000 (8388608)
  • CT_FLAG_SUBJECT_ALT_REQUIRE_UPN -- 2000000 (33554432)
X500NameFlags
  • CERT_NAME_STR_NONE -- 0
  • CERT_OID_NAME_STR -- 2
  • CERT_X500_NAME_STR -- 3
  • CERT_NAME_STR_SEMICOLON_FLAG -- 40000000 (1073741824)
  • CERT_NAME_STR_NO_PLUS_FLAG -- 20000000 (536870912)
  • CERT_NAME_STR_NO_QUOTING_FLAG -- 10000000 (268435456)
  • CERT_NAME_STR_CRLF_FLAG -- 8000000 (134217728)
  • CERT_NAME_STR_COMMA_FLAG -- 4000000 (67108864)
  • CERT_NAME_STR_REVERSE_FLAG -- 2000000 (33554432)
  • CERT_NAME_STR_FORWARD_FLAG -- 1000000 (16777216)
  • CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG -- 10000 (65536)
  • CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG -- 20000 (131072)
  • CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG -- 40000 (262144)
  • CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG -- 80000 (524288)
  • CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG -- 100000 (1048576)
  • CERT_NAME_STR_ENABLE_PUNYCODE_FLAG -- 200000 (2097152)

Note

SubjectNameFlags により、INF ファイルで、現在のユーザーまたは現在のマシンのプロパティ (DNS 名、UPN など) に基づいて certreq によって自動入力される Subject および SubjectAltName 拡張フィールドを指定できます。 リテラル テンプレートを使用すると、代わりにテンプレート名フラグが使用されます。 これにより、1 つの INF ファイルを複数のコンテキストで使用して、コンテキスト固有のサブジェクト情報を含む要求を生成できます。

X500NameFlags は、Subject INF keys 値が ASN.1 でエンコードされた識別名 Name に変換される場合に、CertStrToName API に直接渡されるフラグを指定します。

メモ帳でポリシー ファイル (.inf) を作成し、requestconfig.inf として保存するには、次のように入力します。

[NewRequest]
Subject = CN=<FQDN of computer you are creating the certificate>
Exportable = TRUE
KeyLength = 2048
KeySpec = 1
KeyUsage = 0xf0
MachineKeySet = TRUE
[RequestAttributes]
CertificateTemplate=WebServer
[Extensions]
OID = 1.3.6.1.5.5.7.3.1
OID = 1.3.6.1.5.5.7.3.2

証明書を要求するコンピューターで、次の手順を実行します:

certreq –new requestconfig.inf certrequest.req

OID の [Strings] セクション構文とその他の解釈が困難なデータを使用する場合。 OID のコンマ区切りリストを使用する、EKU 拡張機能の新しい {text} 構文例。

[Version]
Signature=$Windows NT$

[Strings]
szOID_ENHANCED_KEY_USAGE = 2.5.29.37
szOID_PKIX_KP_SERVER_AUTH = 1.3.6.1.5.5.7.3.1
szOID_PKIX_KP_CLIENT_AUTH = 1.3.6.1.5.5.7.3.2

[NewRequest]
Subject = CN=TestSelfSignedCert
Requesttype = Cert

[Extensions]
%szOID_ENHANCED_KEY_USAGE%={text}%szOID_PKIX_KP_SERVER_AUTH%,
_continue_ = %szOID_PKIX_KP_CLIENT_AUTH%

サブジェクト代替名 (SAN) を指定するには、INF の [拡張機能] セクションに追加します。 次に例を示します。

[Version]
Signature=$Windows NT$
 
[Strings]
szOID_ENHANCED_KEY_USAGE = 2.5.29.37
szOID_PKIX_KP_SERVER_AUTH = 1.3.6.1.5.5.7.3.1
szOID_PKIX_KP_CLIENT_AUTH = 1.3.6.1.5.5.7.3.2

[NewRequest]
Subject = CN=TestSelfSignedCert
Requesttype = Cert

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com"
_continue_ = "DNS=www.example.com"
_continue_ = "IP Address=192.168.1.1"

この例では、 2.5.29.17 は SAN を定義する OID です。 複数の SAN を指定するには、 _continue_ 拡張機能 OID を使用し、各 SAN 拡張機能を分離して指定できます。

certreq -accept

–accept パラメーターは、以前に生成された秘密キーを発行された証明書にリンクし、証明書が要求されたシステムから保留中の証明書要求を削除します (一致する要求がある場合)。

証明書を手動で受け入れるには、次のように入力します。

certreq -accept certnew.cer

警告

-accept パラメーターを -user および –machine オプションと共に使用することで、インストール証明書をユーザー コンテキストまたはマシン コンテキストのどちらでインストールするかを示します。 インストールされる公開キーと一致する未処理の要求がいずれかのコンテキストにある場合、これらのオプションは必要ありません。 未処理の要求がない場合は、これらのうち 1 つを指定する必要があります。

certreq -policy

policy.inf ファイルは、限定従属が定義されている場合に、CA 証明書に適用される制約を定義する構成ファイルです。

相互証明書要求を作成するには、次のように入力します。

certreq -policy certsrv.req policy.inf newcertsrv.req

追加のパラメーターを追加せずに certreq -policy を使用すると、ダイアログ ウィンドウが開き、要求されたファイル (.req、.cmc、.txt、.der、.cer、または .crt) を選択できます。 要求されたファイルを選択して、[開く] をクリックすると、別のダイアログ ウィンドウが開き、policy.inf ファイルを選択できます。

policy.inf ファイルの例については、「CAPolicy.inf 構文」を参照してください。

certreq -sign

新しい証明書要求を作成するには、次のように署名して送信します。

certreq -new policyfile.inf myrequest.req
certreq -sign myrequest.req myrequest.req
certreq -submit myrequest_sign.req myrequest_cert.cer

解説

  • certreq -sign を他のパラメーターなしで使用するとダイアログ ウィンドウが開き、要求されたファイル (req、cmc、txt、der、cer、または crt) を選択できます。

  • 限定従属要求に署名するには、エンタープライズ管理者の資格情報が必要になる場合があります。 これは、限定従属の署名証明書を発行する場合のベスト プラクティスです。

  • 限定従属要求に署名するために使用される証明書は、限定従属テンプレートを使用します。 エンタープライズ管理者は、要求に署名するか、証明書に署名する個人にユーザーアクセス許可を付与する必要があります。

  • 後で、追加の担当者に CMC 要求への署名を依頼するよう求められる場合があります。 これは、限定従属に関連付けられている保証レベルに依存します。

  • インストールする修飾下位 CA の親 CA がオフラインの場合は、オフラインの親から修飾下位 CA の CA 証明書を取得する必要があります。 親 CA がオンラインの場合は、証明書サービスのインストール ウィザードで、限定従属 CA の CA 証明書を指定します。

certreq -enroll

このコメントを使用して、証明書を登録または更新できます。

証明書を登録するには、WebServer テンプレートを使用し、U/I を使用してポリシー サーバーを選択します。

certreq -enroll –machine –policyserver * WebServer

シリアル番号を使用して証明書を更新するには、次のように入力します。

certreq –enroll -machine –cert 61 2d 3c fe 00 00 00 00 00 05 renew

有効な証明書のみを更新できます。 期限切れの証明書は更新できないので、新しい証明書に置き換える必要があります。

オプション

オプション 説明
-any Force ICertRequest::Submit でエンコードの種類を決定します。
-attrib <attributestring> NameValue の文字列ペアをコロンで区切って指定します。

NameValue の文字列ペアを \n を使用して区切ります (たとえば、Name1:value1\nName2:value2 など)。

-binary 出力ファイルを base64 エンコードではなく、バイナリとして書式設定します。
-policyserver <policyserver> ldap: <path>
証明書登録ポリシー Web サービスを実行しているコンピューターの URI または一意の ID を挿入します。

参照して要求ファイルを使用する場合は、<policyserver> にマイナス記号 (-) を使用します。

-config <ConfigString> 構成文字列 (CAHostName\CAName) で指定された CA を使用して、操作を実行します。 https:\\ 接続の場合は、登録サーバーの URI を指定します。 ローカル コンピューター ストア CA の場合は、マイナス記号 (-) を使用します。
-anonymous 証明書登録 Web サービスに匿名の資格情報を使用します。
-kerberos 証明書登録 Web サービスに Kerberos (ドメイン) 資格情報を使用します。
-clientcertificate <ClientCertId> <ClientCertId> は、証明書の拇印、CN、EKU、テンプレート、電子メール、UPN、または新しい name=value 構文に置き換えることができます。
-username <username> 証明書登録 Web サービスで使用されます。 <username> は、SAM 名または domain\user 値で置き換えることができます。 このオプションは、-p オプションで使用されます。
-p <password> 証明書登録 Web サービスで使用されます。 <password> を実際のユーザーのパスワードに置き換えます。 このオプションは、-username オプションで使用されます。
-user 新しい証明書要求の -user コンテキストを構成するか、証明書の受け入れのコンテキストを指定します。 INF またはテンプレートで何も指定されていない場合、これは既定のコンテキストです。
-コンピューター 新しい証明書要求のコンテキストを構成するか、マシン コンテキストに対して証明書の受け入れのコンテキストを指定します。 新しい要求の場合は、MachineKeyset INF キーおよびテンプレート コンテキストと一致している必要があります。 このオプションが指定されておらず、テンプレートでコンテキストが設定されていない場合、既定値はユーザー コンテキストです。
-crl certchainfileout で指定された base64 でエンコードされた PKCS #7 ファイルまたは requestfileout で指定された base64 でエンコードされたファイルへの出力に、証明書失効リスト (CRL) が含まれます。
-rpc 分散 COM の代わりにリモート プロシージャ コール (RPC) サーバー接続を使用するように、Active Directory 証明書サービス (AD CS) に指示します。
-adminforcemachine キー サービスまたは偽装を使用して、ローカル システム コンテキストから要求を送信します。 このオプションを呼び出すユーザーはローカル管理者のメンバーである必要があります。
-renewonbehalfof 署名証明書で識別されたサブジェクトに代わって更新を送信します。 これにより、ICertRequest::Submit メソッドの呼び出し時に CR_IN_ROBO が設定されます
-f 既存のファイルを強制的に上書きします。 これにより、キャッシュ テンプレートとポリシーもバイパスされます。
-Q サイレント モードを使用します。すべての対話型プロンプトを抑制します。
-unicode 標準出力が別のコマンドにリダイレクトまたはパイプ処理されるときに Unicode 出力を書き込みます。これは、Windows PowerShell スクリプトからの呼び出し時に便利です。
-unicodetext base64 テキストでエンコードされたデータ BLOB をファイルに書き込むときに Unicode 出力を送信します。

形式

形式 説明
requestfilein Base64 エンコードまたはバイナリ入力ファイル名: PKCS #10 証明書要求、CMS 証明書要求、PKCS #7 証明書更新要求、相互証明される X.509 証明書、または KeyGen タグ形式の証明書要求。
requestfileout Base64 エンコード出力ファイル名。
certfileout Base64 エンコード X-509 ファイル名。
PKCS10fileout certreq -policy パラメーターでのみ使用します。 Base64 エンコード PKCS10 出力ファイル名。
certchainfileout Base64 エンコード PKCS #7 ファイル名。
fullresponsefileout Base64 エンコードの完全な応答ファイル名。
policyfilein certreq -policy パラメーターでのみ使用します。 要求を限定するために使用される拡張機能のテキスト表現を含む INF ファイル。

その他のリソース

次の記事には、certreq の使用例が含まれます。