certreq

La commande certreq peut être utilisée pour demander des certificats à une autorité de certification pour récupérer la réponse à une demande précédente à l’autorité de certification, pour créer une nouvelle demande à partir d’un fichier .inf, pour accepter et pour installer une réponse à une demande, afin de construire une certification croisée ou une demande de subordination qualifiée à partir d’un certificat ou d’une demande et pour signer une certification croisée ou une demande de subordination qualifiée.

Important

Les versions antérieures de la commande certreq peuvent ne pas fournir toutes les options décrites ici. Pour afficher les options prises en charge en fonction de versions spécifiques de certreq, exécutez l’option d’aide de ligne de commande, certreq -v -?.

La commande certreq ne prend pas en charge la création d’une demande de certificat basée sur un modèle d’attestation de clé dans un environnement CEP/CES.

Avertissement

Le contenu de cette rubrique est basé sur les paramètres par défaut de Windows Server ; par exemple, en définissant la longueur de la clé sur 2048, en sélectionnant Fournisseur de stockage de clés logicielles Microsoft comme fournisseur de solutions Cloud et en utilisant l’algorithme de hachage sécurisé 1 (SHA1). Évaluez ces sélections par rapport aux exigences de la stratégie de sécurité de votre entreprise.

Syntaxe

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]

Paramètres

Paramètre Description
-submit Envoie une demande à une autorité de certification.
-retrieve <requestid> Récupère une réponse à une demande précédente d’une autorité de certification.
-new Crée une demande à partir d’un fichier .inf.
-accept Accepte et installe une réponse à une demande de certificat.
-policy Définit la stratégie d’une demande.
-sign Signe une demande de certification croisée ou de subordination qualifiée.
-enroll Inscrit ou renouvelle un certificat.
-? Affiche une liste de syntaxe, d’options et de descriptions certreq.
<parameter> -? Affiche l’aide pour le paramètre spécifié.
-v -? Affiche une liste détaillée de la syntaxe, des options et des descriptions certreq.

Exemples

certreq -submit

Pour envoyer une demande de certificat de base :

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

Notes

  • Il s’agit du paramètre de certreq.exe par défaut. Si aucune option n’est spécifiée à l’invite de ligne de commande, certreq.exe tente d’envoyer une demande de certificat à une autorité de certification. Vous devez spécifier un fichier de demande de certificat lors de l’utilisation de l’option –submit. Si ce paramètre est omis, une fenêtre Ouverture de fichier commune s’affiche, ce qui vous permet de sélectionner le fichier de demande de certificat approprié.

  • Pour demander un certificat en spécifiant l’attribut SAN, consultez la section Comment utiliser l’utilitaire certreq.exe pour créer et envoyer une demande de certificat de l’article de la Base de connaissances Microsoft 931351 Comment ajouter un autre nom d’objet à un certificat LDAP sécurisé.

certreq -retrieve

Pour récupérer l’ID de certificat 20 et créer un fichier de certificat (.cer), nommé MyCertificate :

certreq -retrieve 20 MyCertificate.cer

Notes

  • Utilisez certreq -retrieve requestid pour récupérer le certificat une fois que l’autorité de certification l’a émis. Le PKC requestid peut être un décimal ou hex avec un préfixe 0x et il peut s’agir d’un numéro de série de certificat sans préfixe 0x. Vous pouvez également l’utiliser pour récupérer tout certificat qui a déjà été émis par l’autorité de certification, y compris les certificats révoqués ou expirés, sans tenir compte du fait que la demande du certificat a été ou non dans l’état en attente.

  • Si vous envoyez une demande à l’autorité de certification, le module de stratégie de l’autorité de certification peut laisser la demande dans un état en attente et retourner le requestid à l’appelant certreq pour affichage. Finalement, l’administrateur de l’autorité de certification émet le certificat ou refuse la demande.

certreq -new

Pour créer une nouvelle demande :

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

Voici quelques-unes des sections possibles qui peuvent être ajoutées au fichier INF :

[newrequest]

Cette zone du fichier INF est obligatoire pour tous les nouveaux modèles de demande de certificat et doit inclure au moins un paramètre avec une valeur.

Key1 Description Value2 Exemple
Objet Plusieurs applications s’appuient sur les informations relatives au sujet dans un certificat. Nous vous recommandons de spécifier une valeur pour cette clé. Si l’objet n’est pas défini ici, nous vous recommandons d’inclure un nom d’objet dans le cadre de l’extension de certificat d’autre nom d’objet. Valeurs de chaîne de nom unique relative Subject = CN=computer1.contoso.com Subject=CN=John Smith,CN=Users,DC=Contoso,DC=com
Exportable Si la valeur est TRUE, la clé privée peut être exportée avec le certificat. Pour garantir un niveau élevé de sécurité, les clés privées ne doivent pas être exportables ; Toutefois, dans certains cas, cela peut être nécessaire si plusieurs ordinateurs ou utilisateurs doivent partager la même clé privée. true | false Exportable = TRUE. Les clés CNG peuvent faire la distinction entre ceci et le plaintext exportable. Les clés CAPI1 ne le peuvent pas.
ExportableEncrypted Spécifie si la clé privée doit être définie pour être exportable. true | false ExportableEncrypted = true

Astuce : toutes les tailles de clé publique et les algorithmes ne fonctionnent pas avec tous les algorithmes de hachage. Le fournisseur de solutions Cloud spécifié doit également prendre en charge l’algorithme de hachage spécifié. Pour afficher la liste des algorithmes de hachage pris en charge, vous pouvez exécuter la commande : certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo

HashAlgorithm Algorithme de hachage à utiliser pour cette requête. Sha256, sha384, sha512, sha1, md5, md4, md2 HashAlgorithm = sha1. Pour afficher la liste des algorithmes de hachage pris en charge, utilisez : certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo
KeyAlgorithm Algorithme qui est utilisé par le fournisseur de services pour générer une paire de clés publique et privée. RSA, DH, DSA, ECDH_P256, ECDH_P521, ECDSA_P256, ECDSA_P384, ECDSA_P521 KeyAlgorithm = RSA
KeyContainer Nous vous déconseillons de définir ce paramètre pour les nouvelles requêtes où de nouveaux éléments clés sont générés. Le conteneur de clé est automatiquement généré et géré par le système.

Pour les demandes pour lesquelles le matériel de clé existant doit être utilisé, cette valeur peut être définie sur le nom de conteneur de clé de la clé existante. Utilisez la commande certutil –key pour afficher la liste des conteneurs de clés disponibles pour le contexte de l’ordinateur. Utilisez la commande certutil –key –user pour le contexte de l’utilisateur actuel.

Valeur de chaîne aléatoire

Conseil : Utilisez des guillemets doubles autour de toute valeur de clé INF contenant des caractères vides ou spéciaux pour éviter les problèmes d’analyse INF potentiels.

KeyContainer = {C347BD28-7F69-4090-AA16-BC58CF4D749C}
KeyLength Définit la longueur de la clé publique et privée. La longueur de la clé a un impact sur le niveau de sécurité du certificat. Une plus grande longueur de clé offre généralement un niveau de sécurité plus élevé ; toutefois, certaines applications peuvent avoir des limitations concernant la longueur de la clé. Toute longueur de clé valide qui est prise en charge par le fournisseur de services de chiffrement. KeyLength = 2048
KeySpec Détermine si la clé peut être utilisée pour les signatures, pour Exchange (chiffrement) ou pour les deux. AT_NONE, AT_SIGNATURE, AT_KEYEXCHANGE KeySpec = AT_KEYEXCHANGE
KeyUsage Définit ce pour quoi la clé de certificat doit être utilisée.
  • 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

Conseil : plusieurs valeurs utilisent un séparateur de symboles de canal (|). Veillez à utiliser des guillemets doubles lors de l’utilisation de plusieurs valeurs pour éviter les problèmes d’analyse INF. Les valeurs affichées sont des valeurs hexadécimales (décimales) pour chaque définition de bit. Une syntaxe plus ancienne peut également être utilisée : une valeur hexadécimale unique avec plusieurs bits définis, au lieu de la représentation symbolique. Par exemple : KeyUsage = 0xa0.

KeyUsageProperty Récupère une valeur qui identifie l’objectif spécifique pour lequel une clé privée peut être utilisée.
  • 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 Cette clé est importante lorsque vous devez créer des certificats appartenant à l’ordinateur et non à un utilisateur. Le matériel de clé généré est conservé dans le contexte de sécurité du principal de sécurité (compte d’utilisateur ou d’ordinateur) qui a créé la demande. Lorsqu’un administrateur crée une demande de certificat pour le compte d’un ordinateur, le matériel de clé doit être créé dans le contexte de sécurité de l’ordinateur et non dans le contexte de sécurité de l’administrateur. Sinon, la machine ne pourrait pas accéder à sa clé privée, car elle se trouverait dans le contexte de sécurité de l’administrateur. true | false. La valeur par défaut est false. MachineKeySet = true
NotBefore Spécifie une date ou une date et une heure avant lesquelles la demande ne peut pas être émise. NotBefore peut être utilisé avec ValidityPeriod et ValidityPeriodUnits. Date ou date et heure NotBefore = 7/24/2012 10:31 AM

Conseil :NotBefore et NotAfter sont pour RequestType=cert uniquement. L’analyse de date tente de respecter les paramètres régionaux. L’utilisation de noms de mois permet de lever l’ambiguïté et doit fonctionner dans tous les paramètres régionaux.

NotAfter Spécifie une date ou une date et une heure avant lesquelles la demande ne peut pas être émise. Impossible d'utiliser NotAfter avec ValidityPeriod ou ValidityPeriodUnits. Date ou date et heure NotAfter = 9/23/2014 10:31 AM

Conseil :NotBefore et NotAfter sont pour RequestType=cert uniquement. L’analyse de date tente de respecter les paramètres régionaux. L’utilisation de noms de mois permet de lever l’ambiguïté et doit fonctionner dans tous les paramètres régionaux.

PrivateKeyArchive Le paramètre PrivateKeyArchive fonctionne uniquement si le RequestType correspondant est défini sur CMC, car seul le format de requête CMC (Certificate Management Messages over CMS) permet de transférer en toute sécurité la clé privée du demandeur vers l’autorité de certification pour l’archivage des clés. true | false PrivateKeyArchive = true
EncryptionAlgorithm Algorithme de chiffrement à utiliser. Les options possibles varient en fonction de la version du système d’exploitation et de l’ensemble des fournisseurs de chiffrement installés. Pour afficher la liste des algorithmes disponibles, exécutez la commande : certutil -oid 2 | findstr pwszCNGAlgid. Le fournisseur de solutions Cloud spécifié utilisé doit également prendre en charge l’algorithme de chiffrement symétrique et la longueur spécifiés. EncryptionAlgorithm = 3des
EncryptionLength Longueur de l’algorithme de chiffrement à utiliser. Toute longueur autorisée par l’élément EncryptionAlgorithm spécifié. EncryptionLength = 128
ProviderName Le nom du fournisseur est le nom complet du fournisseur de solutions Cloud. Si vous ne connaissez pas le nom du fournisseur de solutions Cloud que vous utilisez, exécutez certutil –csplist à partir d’une ligne de commande. La commande affiche les noms de tous les fournisseurs de solutions Cloud disponibles sur le système local ProviderName = Microsoft RSA SChannel Cryptographic Provider
ProviderType Le type de fournisseur est utilisé pour sélectionner des fournisseurs spécifiques en fonction de fonctionnalités d’algorithme spécifiques telles que RSA Full. Si vous ne connaissez pas le nom du fournisseur de solutions Cloud que vous utilisez, exécutez certutil –csplist à partir d’une invite de ligne de commande. La commande affiche le type de fournisseur de tous les fournisseurs de solutions Cloud disponibles sur le système local. ProviderType = 1
RenewalCert Si vous devez renouveler un certificat qui existe sur le système où la demande de certificat est générée, vous devez spécifier son hachage de certificat comme valeur pour cette clé. Le hachage de certificat de tout certificat qui est disponible sur l’ordinateur où la demande de certificat est créée. Si vous ne connaissez pas le hachage du certificat, utilisez le composant logiciel enfichable MMC Certificats et examinez le certificat qui doit être renouvelé. Ouvrez les propriétés du certificat et consultez l’attribut Thumbprint du certificat. Le renouvellement de certificat nécessite un PKCS#7 ou un format de demande CMC. RenewalCert = 4EDF274BD2919C6E9EC6A522F0F3B153E9B1582D
RequesterName Effectue la demande d’inscription pour le compte d’une autre demande d’utilisateur. La demande doit également être signée avec un certificat d’agent d’inscription, ou l’autorité de certification rejette la demande. Utilisez l’option -cert pour spécifier le certificat de l’agent d’inscription. Le nom du demandeur peut être spécifié pour les demandes de certificat si RequestType est défini sur PKCS#7 ou CMC. Si la valeur RequestType est définie sur PKCS#10, cette clé est ignorée. Requestername peut uniquement être défini dans le cadre de la demande. Vous ne pouvez pas manipuler Requestername dans une requête en attente. Domain\User Requestername = Contoso\BSmith
RequestType Détermine la norme utilisée pour générer et envoyer la demande de certificat.
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
Conseil : cette option indique un certificat auto-signé ou auto-émis. Il ne génère pas de demande, mais plutôt un nouveau certificat, puis installe le certificat. Auto-signé est la valeur par défaut. Spécifiez un certificat de signature à l’aide de l’option –cert pour créer un certificat auto-émis qui n’est pas auto-signé.
RequestType = CMC
SecurityDescriptor Contient les informations de sécurité associées aux objets sécurisables. Pour la plupart des objets sécurisables, vous pouvez spécifier le descripteur de sécurité d’un objet dans l’appel de fonction qui crée l’objet. Chaînes basées sur le langage de définition du descripteur de sécurité.

Conseil : cela s’applique uniquement aux clés de contexte de l’ordinateur qui ne sont pas des clés de carte à puce.

SecurityDescriptor = D:P(A;;GA;;;SY)(A;;GA;;;BA)
AlternateSignatureAlgorithm Spécifie et récupère une valeur booléenne qui indique si l’identificateur d’objet d’algorithme de signature (OID) pour une demande ou une signature de certificat PKCS#10 est discret ou combiné. true | false AlternateSignatureAlgorithm = false

Pour une signature RSA, false indique un Pkcs1 v1.5, tandis qu true indique une signature v2.1.

Silencieux Par défaut, cette option permet au fournisseur de solutions Cloud d’accéder au bureau interactif de l’utilisateur et de demander à l’utilisateur des informations telles qu’un code confidentiel de carte à puce. Si cette clé est définie sur TRUE, le fournisseur de solutions Cloud ne doit pas interagir avec le bureau et ne peut pas afficher l’interface utilisateur pour l’utilisateur. true | false Silent = true
SMIME Si ce paramètre a la valeur TRUE, une extension avec la valeur d’identificateur d’objet 1.2.840.113549.1.9.15 est ajoutée à la demande. Le nombre d’identificateurs d’objet dépend de la version du système d’exploitation installée et de la fonctionnalité de fournisseur de solutions Cloud, qui font référence aux algorithmes de chiffrement symétrique pouvant être utilisés par les applications S/MIME (Secure Multipurpose Internet Mail Extensions) comme Outlook. true | false SMIME = true
UseExistingKeySet Ce paramètre est utilisé pour spécifier qu’une paire de clés existante doit être utilisée lors de la création d’une demande de certificat. Si cette clé a la valeur TRUE, vous devez également spécifier une valeur pour la clé RenewalCert ou le nom KeyContainer. Vous ne devez pas définir la clé exportable, car vous ne pouvez pas modifier les propriétés d’une clé existante. Dans ce cas, aucune clé n’est générée lors de la génération de la demande de certificat. true | false UseExistingKeySet = true
KeyProtection Spécifie une valeur qui indique comment une clé privée est protégée avant utilisation.
  • 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 Spécifie une valeur booléenne qui indique si les extensions et attributs par défaut sont inclus dans la demande. Les valeurs par défaut sont représentées par leurs identificateurs d’objet (OID). true | false SuppressDefaults = true
FriendlyName Un nom convivial pour le nouveau certificat. Texte FriendlyName = Server1
ValidityPeriodUnits Spécifie de nombreuses unités à utiliser avec ValidityPeriod. Note : il est utilisé uniquement lorsque request type=cert. Numérique ValidityPeriodUnits = 3
ValidityPeriod ValidityPeriod doit être une période au pluriel anglais des États-Unis. Note : elle est utilisée uniquement lorsque la requête type=cert. Years | Months | Weeks | Days | Hours | Minutes | Seconds ValidityPeriod = Years

1 Paramètre à gauche du signe égal (=)

2 Paramètre à droite du signe égal (=)

[Extensions]

Cette section est facultative.

OID d’extension Définition Exemple
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
Critique 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)

Notes

SubjectNameFlags permet au fichier INF de spécifier les champs d’extension Subject et SubjectAltName qui doivent être renseignés automatiquement par certreq en fonction des propriétés de l’utilisateur ou de l’ordinateur actuel : nom DNS, UPN, etc. L’utilisation du modèle littéral signifie que les indicateurs de nom de modèle sont utilisés à la place. Cela permet d’utiliser un seul fichier INF dans plusieurs contextes pour générer des demandes avec des informations de sujet spécifiques au contexte.

X500NameFlags spécifie les indicateurs à passer directement à l’API CertStrToName lorsque la valeur Subject INF keys est convertie en nom unique encodé ASN.1.

Exemple

Pour créer un fichier de stratégie (.inf) dans le Bloc-notes et l’enregistrer sous 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

Sur l’ordinateur pour lequel vous demandez un certificat :

certreq –new requestconfig.inf certrequest.req

Pour utiliser la syntaxe de section [Chaînes] pour les OID et autres données difficiles à interpréter. Nouvel exemple de syntaxe {text} pour l’extension EKU, qui utilise une liste séparée par des virgules d’OID :

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

Pour spécifier un autre nom d’objet (SAN), ajoutez-le dans la section [Extensions] de votre INF. Par exemple :

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

Dans cet exemple, 2.5.29.17 est l’OID définissant le SAN. Pour spécifier plusieurs SAN, l’OID d’extension _continue_ est utilisé, ce qui vous permet de séparer et de spécifier chaque extension SAN.

certreq -accept

Le paramètre –accept lie la clé privée générée précédemment au certificat émis et supprime la demande de certificat en attente du système où le certificat est demandé (s’il existe une demande correspondante).

Pour accepter manuellement un certificat :

certreq -accept certnew.cer

Avertissement

L’utilisation du paramètre -accept avec les options -user et –machine indique si le certificat d’installation doit être installé dans le contexte de l’utilisateur ou de l’ordinateur. S’il existe une demande en suspens dans l’un ou l’autre des contextes qui correspond à la clé publique installée, ces options ne sont pas nécessaires. S’il n’y a pas de demande en suspens, l’une de ces demandes doit être spécifiée.

certreq -policy

Le fichier policy.inf est un fichier de configuration qui définit les contraintes appliquées à une certification d’autorité de certification, lorsqu’une subordination qualifiée est définie.

Pour générer une demande de certificat croisé :

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

L’utilisation certreq -policy sans autre paramètre ouvre une fenêtre de dialogue, ce qui vous permet de sélectionner le fichier demandé (.req, .cmc, .txt, .der, .cer ou .crt). Après avoir sélectionné le fichier demandé et cliqué sur Ouvrir, une autre boîte de dialogue s’ouvre, ce qui vous permet de sélectionner le fichier policy.inf.

Exemples

Recherchez un exemple de fichier policy.inf dans syntaxe CAPolicy.inf.

certreq -sign

Pour créer une demande de certificat, signez-la et envoyez-la :

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

Notes

  • L’utilisation de certreq -sign sans paramètre supplémentaire ouvre une fenêtre de dialogue permettant de sélectionner le fichier demandé (req, cmc, txt, der, cer or crt).

  • La signature de la demande de subordination qualifiée peut nécessiter des identifiants d’administrateur d’entreprise. Il s’agit d’une bonne pratique pour l’émission de certificats de signature pour la subordination qualifiée.

  • Le certificat utilisé pour signer la demande de subordination qualifiée utilise le modèle de subordination qualifié. Les administrateurs d’entreprise doivent signer la demande ou accorder des autorisations utilisateur aux personnes qui signent le certificat.

  • Vous devrez peut-être demander à un personnel supplémentaire de signer la demande CMC après vous. Cela dépend du niveau d’assurance associé à la subordination qualifiée.

  • Si l’autorité de certification parente de l’autorité de certification subordonnée qualifiée que vous installez est hors connexion, vous devez obtenir le certificat d’autorité de certification pour l’autorité de certification subordonnée qualifiée auprès du parent hors connexion. Si l’autorité de certification parente est en ligne, spécifiez le certificat d’autorité de certification pour l’autorité de certification subordonnée qualifiée pendant l’assistant Installation des services de certificats.

certreq -enroll

Vous pouvez utiliser ce commentaire pour inscrire ou renouveler vos certificats.

Exemples

Pour inscrire un certificat, à l’aide du modèle WebServer et en sélectionnant le serveur de stratégie à l’aide d’U/I :

certreq -enroll –machine –policyserver * WebServer

Pour renouveler un certificat à l’aide d’un numéro de série :

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

Vous pouvez uniquement renouveler des certificats valides. Les certificats expirés ne peuvent pas être renouvelés et doivent être remplacés par un nouveau certificat.

Options

Options Description
-any Force ICertRequest::Submit pour déterminer le type d’encodage.
-attrib <attributestring> Spécifie les paires de chaînes Name et Value, séparées par un signe deux-points.

Séparez les paires de chaînes Name et Value à l’aide \n de (par exemple, Name1:value1\nName2:value2).

-binary Met en forme les fichiers de sortie sous forme binaire au lieu d’être codés en base64.
-policyserver <policyserver> ldap : <path>
Insérez l’URI ou l’ID unique d’un ordinateur exécutant le service web stratégie d’inscription de certificat.

Pour spécifier que vous souhaitez utiliser un fichier de requête en naviguant, utilisez simplement un signe moins (-) pour <policyserver>.

-config <ConfigString> Traite l'opération à l'aide de l'autorité de certification spécifiée, qui est CAHostName\CAName. Pour une connexion https:\\, spécifiez l’URI du serveur d’inscription. Pour l’autorité de certification du magasin d’ordinateurs local, utilisez un signe moins (-).
-anonymous Utilisez des identifiants anonymes pour les services web d’inscription de certificats.
-kerberos Utilisez des identifiants Kerberos (domaine) pour les services web d’inscription de certificats.
-clientcertificate <ClientCertId> Vous pouvez remplacer <ClientCertId> par une empreinte numérique de certificat, un CN, une référence EKU, un modèle, un e-mail, un UPN ou la nouvelle syntaxe name=value.
-username <username> Utilisé avec les services Web Inscription de certificats. Vous pouvez remplacer par <username> la valeur nom SAM ou domaine\utilisateur. Cette option est à utiliser avec l’option -p.
-p <password> Utilisé avec les services Web Inscription de certificats. Remplacez <password> par le mot de passe de l’utilisateur réel. Cette option est à utiliser avec l’option -username.
-user Configure le contexte -user d’une nouvelle demande de certificat ou spécifie le contexte d’une acceptation de certificat. Il s’agit du contexte par défaut, si aucun n’est spécifié dans l’INF ou le modèle.
-machine Configure le contexte d’une nouvelle demande de certificat ou spécifie le contexte d’une acceptation de certificat pour le contexte d’ordinateur. Pour les nouvelles demandes, elle doit être cohérente avec la clé INF MachineKeyset et le contexte du modèle. Si cette option n’est pas spécifiée et que le modèle ne définit pas de contexte, la valeur par défaut est le contexte utilisateur.
-crl Inclut des listes de révocation de certificats (CRL) dans la sortie vers le fichier PKCS #7 encodé en base64 spécifié par certchainfileout ou dans le fichier encodé en base64 spécifié par requestfileout.
-rpc Indique aux services de certificats Active Directory (AD CS) d’utiliser une connexion de serveur d’appel de procédure distante (RPC) au lieu de DISTRIBUTED COM.
-adminforcemachine Utilisez le service de clé ou l’emprunt d’identité pour envoyer la demande à partir du contexte système local. Nécessite que l’utilisateur appelant cette option soit membre des administrateurs locaux.
-renewonbehalfof Soumettez un renouvellement au nom du sujet identifié dans le certificat de signature. Cela définit CR_IN_ROBO lors de l’appel de la méthode ICertRequest::Submit
-f Forcer le remplacement des fichiers existants. Cela contourne également la stratégie et les modèles de mise en cache.
-q Utiliser le mode silencieux ; supprimer toutes les invites interactives.
-unicode Écrit la sortie Unicode lorsque la sortie standard est redirigée ou redirigée vers une autre commande, ce qui est utile lorsqu’elle est appelée à partir de scripts Windows PowerShell.
-unicodetext Envoie la sortie Unicode lors de l’écriture d’objets blob de données encodés en base64 dans des fichiers.

Formats

Formats Description
requestfilein Nom du fichier d’entrée codé en base64 ou binaire : demande de certificat PKCS #10, demande de certificat CMS, demande de renouvellement de certificat PKCS #7, certificat X.509 à certifier croisée ou demande de certificat au format de balise KeyGen.
requestfileout Nom du fichier de sortie encodé en base64.
certfileout Nom de fichier X-509 codé en base64.
PKCS10fileout À utiliser avec le paramètre certreq -policy uniquement. Nom du fichier de sortie PKCS10 codé en base64.
certchainfileout Nom de fichier PKCS #7 encodé en base64.
fullresponsefileout Nom du fichier de réponse complet encodé en base64.
policyfilein À utiliser avec le paramètre certreq -policy uniquement. Fichier INF contenant une représentation textuelle des extensions utilisées pour qualifier une demande.

Ressources supplémentaires

Les articles suivants contiennent des exemples d’utilisation de certreq :