certreq

Der Befehl certreq kann verwendet werden, um Zertifikate von einer Zertifizierungsstelle (CA) anzufordern, eine Antwort auf eine frühere Anforderung von einer Zertifizierungsstelle abzurufen, eine neue Anforderung über eine INF-Datei zu erstellen, eine Antwort auf eine Anforderung zu akzeptieren und zu installieren, eine Anforderung für eine Kreuzzertifizierung oder qualifizierte Unterordnungsanforderung anhand eines vorhandenen Zertifizierungsstellenzertifikats oder einer Anforderung zu konstruieren und eine Anforderung für eine Kreuzzertifizierung oder qualifizierte Unterordnungsanforderung zu signieren.

Wichtig

Frühere Versionen des Befehls certreq bieten möglicherweise nicht alle hier beschriebenen Optionen. Um die Optionen anzuzeigen, die basierend auf bestimmten Versionen von certreq unterstützt werden, führen Sie die Befehlszeilenhilfeoption aus certreq -v -?.

Der Befehl certreq unterstützt nicht das Erstellen einer neuen Zertifikatsanforderung auf der Grundlage einer Schlüsselnachweisvorlage in einer CEP/CES-Umgebung.

Warnung

Der Inhalt dieses Themas basiert auf den Standardeinstellungen für Windows Server, z.B. indem Sie die Schlüssellänge auf 2048 festlegen, Microsoft Software Key Storage-Anbieter als CSP auswählen und den Secure Hash Algorithm 1 (SHA1) verwenden. Bewerten Sie diese Auswahl anhand der Anforderungen der Sicherheitsrichtlinien Ihres Unternehmens.

Syntax

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]

Parameter

Parameter BESCHREIBUNG
-submit Sendet eine Anforderung an eine Zertifizierungsstelle.
-retrieve <requestid> Ruft eine Antwort auf eine vorherige Anforderung von einer Zertifizierungsstelle ab.
-new Erstellt eine neue Anforderung aus einer INF-Datei.
-accept Akzeptiert und installiert eine Antwort auf eine Zertifikatanforderung.
-policy Gibt die Richtlinie für eine Anfrage an.
-sign Signiert eine Kreuzzertifizierungs- oder qualifizierte Unterordnungsanforderung.
-enroll Registriert ein Zertifikat oder erneuert es.
-? Zeigt eine Liste der Certreq-Syntax, Optionen und Beschreibungen an.
<parameter> -? Zeigt Hilfe für den angegebenen Parameter an.
-v -? Zeigt eine ausführliche Liste der Certreq-Syntax, -Optionen und -Beschreibungen an.

Beispiele

certreq -submit

So übermitteln Sie eine grundlegende Zertifikatanforderung:

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

Hinweise

  • Dies ist der Standardparameter certreq.exe. Wenn an der Befehlszeileneingabeaufforderung keine Option angegeben ist, versucht certreq.exe, eine Zertifikatanforderung an eine Zertifizierungsstelle zu übermitteln. Sie müssen eine Zertifikatanforderungsdatei angeben, wenn Sie die Option –submit verwenden. Wenn dieser Parameter nicht angegeben wird, wird ein allgemeines Fenster Datei öffnen angezeigt, in dem Sie die entsprechende Zertifikatanforderungsdatei auswählen können.

  • Um ein Zertifikat durch Angabe des SAN-Attributs anzufordern, lesen Sie den Abschnitt Verwenden des Hilfsprogramms certreq.exe zum Erstellen und Übermitteln einer Zertifikatsanforderung im Microsoft Knowledge Base Artikel 931351 Hinzufügen eines alternativen Antragstellernamens zu einem sicheren LDAP-Zertifikat.

certreq -retrieve

Um die Zertifikats-ID 20 abzurufen und eine Zertifikatsdatei (.cer) mit dem Namen MyCertificate zu erstellen:

certreq -retrieve 20 MyCertificate.cer

Hinweise

  • Verwenden Sie certreq -retrieve requestid , um das Zertifikat abzurufen, nachdem es von der Zertifizierungsstelle ausgestellt wurde. Die requestid-PKC kann ein Dezimal- oder Hex-Objekt mit dem Präfix 0x und eine Zertifikatseriennummer ohne Präfix 0x sein. Sie können es auch verwenden, um jedes Zertifikat abzurufen, das jemals von der Zertifizierungsstelle ausgestellt wurde, einschließlich widerrufener oder abgelaufener Zertifikate, ohne zu berücksichtigen, ob sich die Anforderung des Zertifikats jemals im ausstehenden Zustand befand.

  • Wenn Sie eine Anforderung an die Zertifizierungsstelle übermitteln, kann das Richtlinienmodul der Zertifizierungsstelle die Anforderung in einem ausstehenden Zustand belassen und die requestid zur Anzeige an den Certreq-Aufrufer zurückgeben. Schließlich stellt der Administrator der Zertifizierungsstelle das Zertifikat aus oder lehnt die Anforderung ab.

certreq -new

Um eine neue Anforderung zu erstellen:

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

Im Folgenden sind einige der möglichen Abschnitte aufgeführt, die der INF-Datei hinzugefügt werden können:

[newrequest]

Dieser Bereich der INF-Datei ist für neue Zertifikatanforderungsvorlagen obligatorisch und muss mindestens einen Parameter mit einem Wert enthalten.

Schlüssel1 BESCHREIBUNG Wert2 Beispiel
Subject Mehrere Apps basieren auf den Antragstellerinformationen in einem Zertifikat. Es wird empfohlen, einen Wert für diesen Schlüssel anzugeben. Wenn der Antragsteller hier nicht festgelegt ist, wird empfohlen, einen Antragstellernamen als Teil der Zertifikaterweiterung für den alternativen Antragstellernamen aufzunehmen. Relative Distinguished Name-Zeichenfolgenwerte Subject = CN=computer1.contoso.com Subject=CN=John Smith,CN=Users,DC=Contoso,DC=com
Exportable Wenn TRUE festgelegt ist, kann der private Schlüssel mit dem Zertifikat exportiert werden. Um ein hohes Maß an Sicherheit zu gewährleisten, sollten private Schlüssel nicht exportiert werden können. In einigen Fällen kann dies jedoch erforderlich sein, wenn mehrere Computer oder Benutzer denselben privaten Schlüssel verwenden müssen. true | false Exportable = TRUE. CNG-Schlüssel können zwischen diesem und dem exportierbaren Klartext unterscheiden. CAPI1-Schlüssel können das nicht.
ExportableEncrypted Gibt an, ob der private Schlüssel so festgelegt werden soll, dass er exportierbar ist. true | false ExportableEncrypted = true

Tipp: Nicht alle öffentlichen Schlüsselgrößen und Algorithmen funktionieren mit allen Hashalgorithmen. Der angegebene CSP muss auch den angegebenen Hashalgorithmus unterstützen. Um die Liste der unterstützten Hashalgorithmen anzuzeigen, können Sie den Befehl ausführen: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo

HashAlgorithm Hashalgorithmus, der für diese Anforderung verwendet werden soll. Sha256, sha384, sha512, sha1, md5, md4, md2 HashAlgorithm = sha1. Um die Liste der unterstützten Hashalgorithmen anzuzeigen, verwenden Sie: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo
KeyAlgorithm Der Algorithmus, der vom Dienstanbieter verwendet wird, um ein öffentliches und privates Schlüsselpaar zu generieren. RSA, DH, DSA, ECDH_P256, ECDH_P521, ECDSA_P256, ECDSA_P384, ECDSA_P521 KeyAlgorithm = RSA
KeyContainer Es wird nicht empfohlen, diesen Parameter für neue Anforderungen festzulegen, bei denen neues Schlüsselmaterial generiert wird. Der Schlüsselcontainer wird automatisch vom System generiert und verwaltet.

Bei Anforderungen, bei denen das vorhandene Schlüsselmaterial verwendet werden soll, kann dieser Wert auf den Schlüsselcontainernamen des vorhandenen Schlüssels festgelegt werden. Verwenden Sie den certutil –key Befehl, um die Liste der verfügbaren Schlüsselcontainer für den Computerkontext anzuzeigen. Verwenden Sie den certutil –key –user Befehl für den Kontext des aktuellen Benutzers.

Zufälliger Zeichenfolgenwert

Tipp: Verwenden Sie doppelte Anführungszeichen um einen beliebigen INF-Schlüsselwert mit Leerzeichen oder Sonderzeichen, um potenzielle INF-Analyseprobleme zu vermeiden.

KeyContainer = {C347BD28-7F69-4090-AA16-BC58CF4D749C}
KeyLength Definiert die Länge des öffentlichen und privaten Schlüssels. Die Schlüssellänge wirkt sich auf die Sicherheitsstufe des Zertifikats aus. Eine größere Schlüssellänge bietet in der Regel eine höhere Sicherheitsstufe. Einige Anwendungen können jedoch Einschränkungen hinsichtlich der Schlüssellänge aufweisen. Alle gültigen Schlüssellängen, die vom Kryptografiedienstanbieter unterstützt werden. KeyLength = 2048
KeySpec Bestimmt, ob der Schlüssel für Signaturen, für Exchange (Verschlüsselung) oder für beides verwendet werden kann. AT_NONE, AT_SIGNATURE, AT_KEYEXCHANGE KeySpec = AT_KEYEXCHANGE
KeyUsage Definiert, wofür der Zertifikatschlüssel verwendet werden soll.
  • 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

Tipp: Für mehrere Werte wird ein Pipezeichentrennzeichen (|) verwendet. Stellen Sie sicher, dass Sie doppelte Anführungszeichen verwenden, wenn Sie mehrere Werte verwenden, um INF-Analyseprobleme zu vermeiden. Die angezeigten Werte sind hexadezimale (Dezimalwerte) für jede Bitdefinition. Eine ältere Syntax kann auch verwendet werden: ein einzelner Hexadezimalwert mit mehreren Bits anstelle der symbolischen Darstellung. Beispiel: KeyUsage = 0xa0.

KeyUsageProperty Ruft einen Wert ab, der den spezifischen Zweck angibt, für den ein privater Schlüssel verwendet werden kann.
  • 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 Dieser Schlüssel ist wichtig, wenn Sie Zertifikate erstellen müssen, die dem Computer und nicht einem Benutzer gehören. Das generierte Schlüsselmaterial wird im Sicherheitskontext des Sicherheitsprinzipals (Benutzer- oder Computerkonto) verwaltet, der die Anforderung erstellt hat. Wenn ein Administrator eine Zertifikatsanforderung im Namen eines Computers erstellt, muss das Schlüsselmaterial im Sicherheitskontext des Computers erstellt werden und nicht im Sicherheitskontext des Administrators. Andernfalls konnte der Computer nicht auf seinen privaten Schlüssel zugreifen, da er sich im Sicherheitskontext des Administrators befindet. true | false. Die Standardeinstellung ist „false“. MachineKeySet = true
NotBefore Gibt ein Datum oder ein Datum und eine Uhrzeit an, vor denen die Anforderung nicht ausgestellt werden kann. NotBefore kann mit ValidityPeriod und ValidityPeriodUnitsverwendet werden. Datum oder Datum und Uhrzeit NotBefore = 7/24/2012 10:31 AM

Tipp:NotBefore und NotAfter gelten nur für RequestType=cert . Die Datumsanalyse versucht, gebietsschemaabhängig zu sein. Die Verwendung von Monatsnamen wird eindeutig und sollte in jedem Gebietsschema funktionieren.

NotAfter Gibt ein Datum oder ein Datum und eine Uhrzeit an, nach denen die Anforderung nicht ausgestellt werden kann. NotAfter kann nicht mit ValidityPeriod oder ValidityPeriodUnits verwendet werden. Datum oder Datum und Uhrzeit NotAfter = 9/23/2014 10:31 AM

Tipp:NotBefore und NotAfter gelten nur für RequestType=cert . Die Datumsanalyse versucht, gebietsschemaabhängig zu sein. Die Verwendung von Monatsnamen wird eindeutig und sollte in jedem Gebietsschema funktionieren.

PrivateKeyArchive Die Einstellung PrivateKeyArchive funktioniert nur, wenn der entsprechende RequestType auf CMC festgelegt ist, da nur das CMC-Anforderungsformat (Certificate Management Messages over CMS) die sichere Übertragung des privaten Schlüssels des Anforderers an die Zertifizierungsstelle für die Schlüsselarchivierung ermöglicht. true | false PrivateKeyArchive = true
EncryptionAlgorithm Der zu verwendende Verschlüsselungsalgorithmus. Die möglichen Optionen variieren je nach Betriebssystemversion und installierter Kryptografieanbieter. Führen Sie den Befehl aus, um die Liste der verfügbaren Algorithmen anzuzeigen: certutil -oid 2 | findstr pwszCNGAlgid. Der angegebene CSP muss auch den angegebenen symmetrischen Verschlüsselungsalgorithmus und die angegebene Länge unterstützen. EncryptionAlgorithm = 3des
EncryptionLength Länge des zu verwendenden Verschlüsselungsalgorithmus. Beliebige Länge, die von der angegebenen EncryptionAlgorithm zulässig ist. EncryptionLength = 128
ProviderName Der Anbietername ist der Anzeigename des CSP. Wenn Sie den Anbieternamen des verwendeten CSP nicht kennen, führen Sie certutil –csplist über eine Befehlszeile aus. Der Befehl zeigt die Namen aller CSPs an, die auf dem lokalen System verfügbar sind. ProviderName = Microsoft RSA SChannel Cryptographic Provider
ProviderType Der Anbietertyp wird verwendet, um bestimmte Anbieter basierend auf bestimmten Algorithmusfunktionen wie RSA Full auszuwählen. Wenn Sie den Anbietertyp des verwendeten CSP nicht kennen, führen Sie certutil –csplist über eine Befehlszeile aus. Der Befehl zeigt den Anbietertyp aller CSPs an, die auf dem lokalen System verfügbar sind. ProviderType = 1
RenewalCert Wenn Sie ein Zertifikat erneuern müssen, das auf dem System vorhanden ist, auf dem die Zertifikatsanforderung generiert wird, müssen Sie dessen Zertifikatshash als Wert für diesen Schlüssel angeben. Der Zertifikathash eines Zertifikats, das auf dem Computer verfügbar ist, auf dem die Zertifikatanforderung erstellt wird. Wenn Sie den Zertifikathash nicht kennen, verwenden Sie die MMC-Snap-In Zertifikate, und sehen Sie sich das Zertifikat an, das erneuert werden soll. Öffnen Sie die Zertifikateigenschaften, und sehen Sie sich das Thumbprint Attribut des Zertifikats an. Die Zertifikatverlängerung erfordert entweder ein PKCS#7oder ein CMC Anforderungsformat. RenewalCert = 4EDF274BD2919C6E9EC6A522F0F3B153E9B1582D
RequesterName Sendet die Anforderung, sich im Auftrag einer anderen Benutzeranforderung zu registrieren. Die Anforderung muss auch mit einem Registrierungs-Agent-Zertifikat signiert werden, sonst lehnt die Zertifizierungsstelle die Anforderung ab. Verwenden Sie die -cert Option, um das Registrierungs-Agent-Zertifikat anzugeben. Der Anforderername kann für Zertifikatanforderungen angegeben werden, wenn der RequestType auf PKCS#7 oder CMCfestgelegt ist. Wenn RequestType auf PKCS#10festgelegt ist, wird dieser Schlüssel ignoriert. Der Requestername kann nur als Teil der Anforderung festgelegt werden. Sie können die Requestername in einer ausstehenden Anforderung nicht bearbeiten. Domain\User Requestername = Contoso\BSmith
RequestType Bestimmt den Standard, der zum Generieren und Senden der Zertifikatanforderung verwendet wird.
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
Tipp: Diese Option gibt ein selbstsigniertes oder selbst ausgestelltes Zertifikat an. Es generiert keine Anforderung, sondern ein neues Zertifikat und installiert dann das Zertifikat. Die Standardeinstellung ist selbstsigniert. Geben Sie ein Signaturzertifikat an, indem Sie die Option –cert verwenden, um ein selbst ausgestelltes Zertifikat zu erstellen, das nicht selbstsigniert ist.
RequestType = CMC
SecurityDescriptor Enthält die Sicherheitsinformationen, die sicherungsfähigen Objekten zugeordnet sind. Für die meisten sicherungsfähigen Objekte können Sie den Sicherheitsdeskriptor im Funktionsaufruf angeben, der das Objekt erstellt. Zeichenfolgen basierend auf der Sicherheitsdeskriptordefinitionssprache.

Tipp: Dies ist nur für Computerkontextschlüssel ohne Smartcard relevant.

SecurityDescriptor = D:P(A;;GA;;;SY)(A;;GA;;;BA)
AlternateSignatureAlgorithm Gibt einen booleschen Wert an, der angibt, ob der Signaturalgorithmus-Objektbezeichner (OID) für eine PKCS#10-Anforderung oder eine Zertifikatsignatur diskret oder kombiniert ist. true | false AlternateSignatureAlgorithm = false

Gibt für eine RSA-Signatur falseeine anPkcs1 v1.5, während trueeine v2.1 Signatur angibt.

Automatisch Standardmäßig ermöglicht diese Option dem CSP den Zugriff auf den interaktiven Benutzerdesktop und fordert Informationen wie eine Smartcard-PIN vom Benutzer an. Wenn dieser Schlüssel auf TRUE festgelegt ist, darf der CSP nicht mit dem Desktop interagieren und wird daran gehindert, dem Benutzer eine Benutzeroberfläche anzuzeigen. true | false Silent = true
SMIME Wenn dieser Parameter auf TRUE festgelegt ist, wird der Anforderung eine Erweiterung mit dem Objektbezeichnerwert 1.2.840.113549.1.9.15 hinzugefügt. Die Anzahl der Objektbezeichner hängt von der installierten Betriebssystemversion und der CSP-Funktion ab, die sich auf symmetrische Verschlüsselungsalgorithmen beziehen, die von S/MIME-Anwendungen (Secure Multipurpose Internet Mail Extensions) wie Outlook verwendet werden können. true | false SMIME = true
UseExistingKeySet Dieser Parameter wird verwendet, um anzugeben, dass ein vorhandenes Schlüsselpaar beim Erstellen einer Zertifikatanforderung verwendet werden soll. Wenn dieser Schlüssel auf TRUE festgelegt ist, müssen Sie auch einen Wert für den RenewalCert-Schlüssel oder den KeyContainer-Namen angeben. Sie dürfen den exportierbaren Schlüssel nicht festlegen, da Sie die Eigenschaften eines vorhandenen Schlüssels nicht ändern können. In diesem Fall wird beim Erstellen der Zertifikatanforderung kein Schlüsselmaterial generiert. true | false UseExistingKeySet = true
KeyProtection Gibt einen Wert an, der angibt, wie ein privater Schlüssel vor der Verwendung geschützt wird.
  • 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 Gibt einen booleschen Wert an, der anweist, ob die Standarderweiterungen und -attribute in der Anforderung enthalten sind. Die Standardwerte werden durch ihre Objektbezeichner (Object Identifiers, OIDs) dargestellt. true | false SuppressDefaults = true
FriendlyName Ein Anzeigename für das neue Zertifikat. Text FriendlyName = Server1
ValidityPeriodUnits Gibt viele Einheiten an, die mit ValidityPeriod verwendet werden sollen. Hinweis: Dies wird nur verwendet, wenn der request type=cert. Numeric ValidityPeriodUnits = 3
ValidityPeriod ValidityPeriod muss ein US-englischer Pluralzeitzeitraum sein. Hinweis: Dies wird nur verwendet, wenn die Anforderung type=cert ist. Years | Months | Weeks | Days | Hours | Minutes | Seconds ValidityPeriod = Years

1 Parameter links neben dem Gleichheitszeichen (=)

1 Parameter rechts neben dem Gleichheitszeichen (=)

[Erweiterungen]

Dieser Abschnitt ist optional.

Erweiterungs-OID Definition Beispiel
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
Kritisch 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 Vorlage
  • 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)

Hinweis

SubjectNameFlags ermöglicht es der INF-Datei, anzugeben, welche Subject und SubjectAltName Erweiterungsfelder von certreq basierend auf den aktuellen Benutzer- oder Computereigenschaften automatisch ausgefüllt werden sollen: DNS-Name, UPN usw. Die Verwendung der Literalvorlage bedeutet, dass stattdessen die Vorlagennamenflags verwendet werden. Dadurch kann eine einzige INF-Datei in mehreren Kontexten verwendet werden, um Anfragen mit kontextspezifischen Betreffinformationen zu generieren.

X500NameFlags gibt die Flags an, die direkt an CertStrToName die API übergeben werden sollen, wenn der Subject INF keys Wert in einen ASN.1-codierten Distinguished Name konvertiert wird.

Beispiel

So erstellen Sie eine Richtliniendatei (.inf) in Editor und speichern sie als 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

Auf dem Computer, für den Sie ein Zertifikat anfordern:

certreq –new requestconfig.inf certrequest.req

So verwenden Sie die Syntax des Abschnitts [Zeichenfolgen] für OIDs und andere schwer zu interpretierende Daten. Das neue {text}-Syntaxbeispiel für die EKU-Erweiterung, die eine durch Trennzeichen getrennte Liste von OIDs verwendet:

[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%

Um einen alternativen Antragstellernamen (Subject Alternate Name, SAN) anzugeben, fügen Sie ihn im Abschnitt [Erweiterungen] Ihrer INF hinzu. Beispiel:

[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"

In diesem Beispiel ist 2.5.29.17 die OID, die das SAN definiert. Um mehrere SANs anzugeben, wird die Erweiterungs-OID _continue_ verwendet, mit dem Sie jede SAN-Erweiterung trennen und angeben können.

certreq -accept

Der –accept-Parameter verknüpft den zuvor generierten privaten Schlüssel mit dem ausgestellten Zertifikat und entfernt die ausstehende Zertifikatsanforderung aus dem System, in dem das Zertifikat angefordert wird (wenn eine übereinstimmende Anforderung vorhanden ist).

Um ein Zertifikat manuell zu akzeptieren:

certreq -accept certnew.cer

Warnung

Die Verwendung des -acceptParameters mit den -userOptionen und –machinegibt an, ob das installierende Zertifikat im Benutzer- oder Computerkontext installiert werden soll. Wenn in beiden Kontexten eine ausstehende Anforderung vorhanden ist, die dem installierten öffentlichen Schlüssel entspricht, dann werden diese Optionen nicht erforderlich. Wenn keine ausstehende Anforderung vorhanden ist, muss eine dieser Anforderungen angegeben werden.

certreq -policy

Die Datei policy.inf ist eine Konfigurationsdatei, die die Einschränkungen definiert, die auf eine Zertifizierungsstelle angewendet werden, wenn eine qualifizierte Unterordnung definiert wird.

So erstellen Sie eine zertifikatübergreifende Anforderung:

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

Wenn Sie certreq -policy ohne zusätzlichen Parameter verwenden, wird ein Dialogfeld geöffnet, in dem Sie die angeforderte Datei (.req, .cmc, .txt, .der, .cer oder .crt) auswählen können. Nachdem Sie die angeforderte Datei ausgewählt und auf Öffnen geklickt haben, wird ein weiteres Dialogfenster geöffnet, in dem Sie die Datei policy.inf auswählen können.

Beispiele

Suchen Sie ein Beispiel für die Datei policy.inf in der Syntax CAPolicy.inf.

certreq -sign

Um eine neue Zertifikatanforderung zu erstellen, signieren Sie sie, und übermitteln Sie sie:

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

Hinweise

  • Wenn Sie certreq -sign ohne zusätzlichen Parameter verwenden, wird ein Dialogfeld geöffnet, in dem Sie die angeforderte Datei (.req, .cmc, .txt, .der, .cer oder .crt) auswählen können.

  • Für das Signieren der qualifizierten Unterordnungsanforderung sind möglicherweise Anmeldeinformationen des Unternehmensadministrators erforderlich. Dies ist eine bewährte Methode zum Ausstellen von Signaturzertifikaten für qualifizierte Unterordnungen.

  • Das Zertifikat, das zum Signieren der qualifizierten Unterordnungsanforderung verwendet wird, verwendet die qualifizierte Unterordnungsvorlage. Unternehmensadministratoren müssen die Anforderung signieren oder den Personen, die das Zertifikat signieren, Benutzerberechtigungen erteilen.

  • Möglicherweise müssen zusätzliche Mitarbeiter die CMC-Anforderung nach Ihnen signieren lassen. Dies hängt von der Zuverlässigkeitsebene ab, die der qualifizierten Unterordnung zugeordnet ist.

  • Wenn die übergeordnete Zertifizierungsstelle der qualifizierten untergeordneten Zertifizierungsstelle, die Sie installieren, offline ist, müssen Sie das Zertifizierungsstellenzertifikat für die qualifizierte untergeordnete Zertifizierungsstelle von der übergeordneten Offlinezertifizierungsstelle abrufen. Wenn die übergeordnete Zertifizierungsstelle online ist, geben Sie das Zertifizierungsstellenzertifikat für die qualifizierte untergeordnete Zertifizierungsstelle während des Installations-Assistenten für Zertifikatdienste an.

certreq -enroll

Sie können diesen Kommentar verwenden, um Ihre Zertifikate zu registrieren oder zu erneuern.

Beispiele

So registrieren Sie ein Zertifikat mithilfe der WebServer-Vorlage und wählen den Richtlinienserver mit U/I aus:

certreq -enroll –machine –policyserver * WebServer

So verlängern Sie ein Zertifikat mit einer Seriennummer:

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

Sie können nur gültige Zertifikate verlängern. Abgelaufene Zertifikate können nicht verlängert werden und müssen durch ein neues Zertifikat ersetzt werden.

Optionen

Optionen BESCHREIBUNG
-any Force ICertRequest::Submit , um den Codierungstyp zu bestimmen.
-attrib <attributestring> Gibt die Zeichenfolgenpaare Name und Wert an, getrennt durch einen Doppelpunkt.

Trennen Sie Zeichenfolgenpaare mit Name und Wert\n (z. B. Name1:value1\nName2:value2).

-binary Formatiert Ausgabedateien als binär statt als Base64-codiert.
-policyserver <policyserver> ldap: <path>
Fügen Sie den URI oder die eindeutige ID für einen Computer ein, auf dem der Webdienst „Zertifikatregistrierungsrichtlinie“ ausgeführt wird.

Um anzugeben, dass Sie eine Anforderungsdatei beim Durchsuchen verwenden möchten, verwenden Sie einfach ein Minuszeichen (-) für <policyserver>.

-config <ConfigString> Verarbeitet den Vorgang mit der in der Konfigurationszeichenfolge (d. h. Name des Zertifizierungsstellencomputers\Name der Zertifizierungsstelle) angegebenen Zertifizierungsstelle. Geben Sie für eine https:\\-Verbindung den Registrierungsserver-URI an. Verwenden Sie für die lokale Computerspeicherzertifizierungsstelle ein Minuszeichen (-).
-anonymous Verwenden Sie anonyme Anmeldeinformationen für Zertifikatregistrierungswebdienste.
-kerberos Verwenden Sie Kerberos-Anmeldeinformationen (Domänenanmeldeinformationen) für Zertifikatregistrierungswebdienste.
-clientcertificate <ClientCertId> Sie können den <ClientCertId> durch einen Zertifikatfingerabdruck, einen CN, eine EKU, eine Vorlage, eine E-Mail, einen UPN oder die neue name=value Syntax ersetzen.
-username <username> Mit Zertifikatregistrierungswebdienst verwendet. Sie können <username>durch den SAM-Namen oder den Wert domain\user ersetzen. Diese Option kann mit der -p Option verwendet werden.
-p <password> Mit Zertifikatregistrierungswebdienst verwendet. Ersetzen Sie <password> durch das Kennwort des tatsächlichen Benutzers. Diese Option kann mit der -username Option verwendet werden.
-user Konfiguriert eine neue Zertifikatsanforderung oder gibt den -user-Kontext für eine Zertifikatsakzeptanz für den Kontext an. Dies ist der Standardkontext, wenn keiner im INF oder der Vorlage angegeben ist.
-machine Konfiguriert eine neue Zertifikatsanforderung oder gibt den Kontext für eine Zertifikatsakzeptanz für den Computerkontext an. Bei neuen Anforderungen muss er mit dem MachineKeyset-INF-Schlüssel und dem Vorlagenkontext konsistent sein. Wenn diese Option nicht angegeben ist und die Vorlage keinen Kontext festlegt, ist der Standard der Benutzerkontext.
-crl Schließt Zertifikatsperrlisten (Certificate Revocation Lists, CRLs) in die Ausgabe der base64-codierten PKCS #7-Datei ein, die durch certchainfileout oder für die base64-codierte Datei angegeben wird, die durch angegeben wird requestfileout.
-rpc Weist Active Directory Certificate Services (AD CS) an, anstelle von Distributed COM eine RPC-Serververbindung (Remote Procedure Call) zu verwenden.
-adminforcemachine Verwenden Sie den Schlüsseldienst oder Identitätswechsel, um die Anforderung aus dem Kontext des lokalen Systems zu übermitteln. Erfordert, dass der Benutzer, der diese Option aufruft, Mitglied der lokalen Administratoren ist.
-renewonbehalfof Übermitteln Sie eine Verlängerung im Namen des Antragstellers, der im Signaturzertifikat angegeben ist. Dadurch wird CR_IN_ROBO beim Aufrufen der ICertRequest::Submit method festgelegt.
-f Erzwingen, dass vorhandene Dateien überschrieben werden. Dadurch wird auch das Zwischenspeichern von Vorlagen und Richtlinien umgangen.
-q Verwenden des unbeaufsichtigten Modus; unterdrücken Sie alle interaktiven Eingabeaufforderungen.
-unicode Schreibt die Unicode-Ausgabe, wenn die Standardausgabe umgeleitet oder an einen anderen Befehl weitergeleitet wird. Dies hilft beim Aufrufen von Windows PowerShell Skripts.
-unicodetext Sendet Unicode-Ausgabe beim Schreiben von Base64-Textcodierten Datenblobs in Dateien.

Formate

Formate BESCHREIBUNG
requestfilein Base64-codierter oder binärer Eingabedateiname: PKCS #10-Zertifikatsanforderung, CMS-Zertifikatsanforderung, PKCS #7-Zertifikatsverlängerungsanforderung, X.509-Zertifikat, um kreuzzertifiziert zu sein, oder Zertifikatsanforderung im KeyGen-Tagformat.
requestfileout Base64-codierter Ausgabedateiname.
certfileout Base64-codierter X-509-Dateiname.
PKCS10fileout Nur für die Verwendung mit dem certreq -policy Parameter. Base64-codierter PKCS10-Ausgabedateiname.
certchainfileout Base64-codierter PKCS #7-Dateiname.
fullresponsefileout Base64-codierter Name der vollständigen Antwortdatei.
policyfilein Nur für die Verwendung mit dem certreq -policy Parameter. INF-Datei, die eine Textdarstellung von Erweiterungen enthält, die zum Qualifizieren einer Anforderung verwendet wird.

Zusätzliche Ressourcen

Die folgenden Artikel enthalten Beispiele für die Verwendung von certreq: