certreq

Il comando certreq può essere usato per richiedere certificati a un'autorità di certificazione (CA), per recuperare una risposta a una richiesta precedente da una CA, per creare una nuova richiesta da un file .inf, per accettare e installare una risposta a una richiesta, per costruire una richiesta di certificazione incrociata o di subordinazione qualificata da un certificato o richiesta di CA esistente e per firmare una richiesta di certificazione incrociata o di subordinazione qualificata.

Importante

Le versioni precedenti del comando certreq potrebbero non fornire tutte le opzioni descritte qui. Per visualizzare le opzioni supportate in base a versioni specifiche di certreq, eseguire l'opzione della Guida della riga di comando, certreq -v -?.

Il comando certreq non supporta la creazione di una nuova richiesta di certificato basata su un modello di attestazione chiave quando si trova in un ambiente CEP/CES.

Avviso

Il contenuto di questo argomento si basa sulle impostazioni predefinite per Windows Server; Ad esempio, impostando la lunghezza della chiave su 2048, selezionando il Provider di archiviazione chiavi del software Microsoft come CSP e usando Secure Hash Algorithm 1 (SHA1). Valutare queste selezioni in base ai requisiti dei criteri di sicurezza dell'azienda.

Sintassi

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]

Parametri

Parametro Descrizione
-submit Invia una richiesta a un'autorità di certificazione.
-retrieve <requestid> Recupera una risposta a una richiesta precedente da un'autorità di certificazione.
-new Crea una nuova richiesta da un file inf.
-accept Accetta e installa una risposta a una richiesta di certificato.
-policy Imposta i criteri per una richiesta
-sign Firma una richiesta di certificazione incrociata o di subordinazione qualificata.
-enroll Esegue la registrazione o il rinnovo di un certificato.
-? Visualizza un elenco di sintassi, opzioni e descrizioni di certreq.
<parameter> -? Visualizza la Guida per il parametro specificato.
-v -? Visualizza un elenco dettagliato della sintassi, delle opzioni e delle descrizioni di certreq.

Esempi

certreq -submit

Per inviare una richiesta di certificato di base:

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

Osservazioni:

  • Questo è il parametro certreq.exe predefinito. Se non viene specificata alcuna opzione al prompt della riga di comando, certreq.exe tenta di inviare una richiesta di certificato a un'autorità di certificazione. È necessario specificare un file di richiesta certificato quando si usa l'opzione –submit . Se questo parametro viene omesso, viene visualizzata una finestra comune File Open, che consente di selezionare il file di richiesta certificato appropriato.

  • Per richiedere un certificato specificando l'attributo SAN, si veda la sezione Come usare l'utilità certreq.exe per creare e inviare una richiesta di certificato dell'articolo di Microsoft Knowledge Base 931351 Come aggiungere un nome alternativo soggetto a un certificato LDAP sicuro.

certreq -retrieve

Per recuperare l'ID certificato 20 e creare un file di certificato (.cer), denominato MyCertificate:

certreq -retrieve 20 MyCertificate.cer

Osservazioni:

  • Usare certreq -retrieve requestid per recuperare il certificato dopo che l'autorità di certificazione l'ha emessa. Il valore PKC requestid può essere decimale o esadecimale con prefisso 0x e può essere un numero di serie del certificato senza prefisso 0x. È anche possibile usarlo per recuperare qualsiasi certificato emesso dall'autorità di certificazione, inclusi i certificati revocati o scaduti, senza considerare se la richiesta del certificato è mai stata nello stato in sospeso.

  • Se si invia una richiesta all'autorità di certificazione, il modulo criteri dell'autorità di certificazione potrebbe lasciare la richiesta in sospeso e restituire il requestid al chiamante certreq per la visualizzazione. Infine, l'amministratore dell'autorità di certificazione rilascia il certificato o nega la richiesta.

certreq -new

Per creare una nuova richiesta:

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

Di seguito sono riportate alcune delle possibili sezioni che potrebbero essere aggiunte al file INF:

[newrequest]

Questa area del file INF è obbligatoria per tutti i nuovi modelli di richiesta di certificato e deve includere almeno un parametro con un valore .

Chiave1 Descrizione Valore2 Esempio
Oggetto Diverse app si basano sulle informazioni sull'oggetto in un certificato. È consigliabile specificare un valore per questa chiave. Se l'oggetto non è impostato qui, è consigliabile includere un nome soggetto come parte dell'estensione del certificato del nome alternativo del soggetto. Valori di stringa del nome distinto relativo Subject = CN=computer1.contoso.com Subject=CN=John Smith,CN=Users,DC=Contoso,DC=com
Exportable Se è impostata su TRUE, la chiave privata può essere esportata con il certificato. Per garantire un livello elevato di sicurezza, le chiavi private non devono essere esportabili; Tuttavia, in alcuni casi, potrebbe essere necessario se più computer o utenti devono condividere la stessa chiave privata. true | false Exportable = TRUE. Le chiavi CNG possono distinguere tra questo ed esportabile in testo non crittografato. Le chiavi CAPI1 non possono.
ExportableEncrypted Specifica se la chiave privata deve essere impostata per essere esportabile. true | false ExportableEncrypted = true

Suggerimento: non tutte le dimensioni e gli algoritmi di chiave pubblica funzionano con tutti gli algoritmi hash. Il CSP specificato deve supportare anche l'algoritmo hash specificato. Per visualizzare l'elenco degli algoritmi hash supportati, è possibile eseguire il comando : certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo

HashAlgorithm Algoritmo hash da usare per questa richiesta. Sha256, sha384, sha512, sha1, md5, md4, md2 HashAlgorithm = sha1. Per visualizzare l'elenco degli algoritmi hash supportati, usare: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo
KeyAlgorithm Algoritmo usato dal provider di servizi per generare una coppia di chiavi pubblica e privata. RSA, DH, DSA, ECDH_P256, ECDH_P521, ECDSA_P256, ECDSA_P384, ECDSA_P521 KeyAlgorithm = RSA
KeyContainer Non è consigliabile impostare questo parametro per le nuove richieste in cui viene generato il nuovo materiale della chiave. Il contenitore di chiavi viene generato e gestito automaticamente dal sistema.

Per le richieste in cui deve essere usato il materiale della chiave esistente, questo valore può essere impostato sul nome contenitore della chiave esistente. Usare il certutil –key comando per visualizzare l'elenco dei contenitori di chiavi disponibili per il contesto del computer. Usare il certutil –key –user comando per il contesto dell'utente corrente.

Valore stringa casuale

Suggerimento: usare virgolette doppie intorno a qualsiasi valore della chiave INF con spazi vuoti o caratteri speciali per evitare potenziali problemi di analisi INF.

KeyContainer = {C347BD28-7F69-4090-AA16-BC58CF4D749C}
KeyLength Definisce la lunghezza della chiave pubblica e privata. La lunghezza della chiave ha un impatto sul livello di sicurezza del certificato. Una maggiore lunghezza della chiave in genere fornisce un livello di sicurezza superiore; Tuttavia, alcune applicazioni potrebbero avere limitazioni relative alla lunghezza della chiave. Qualsiasi lunghezza di chiave valida che viene supportata dal provider del servizio di crittografia. KeyLength = 2048
KeySpec Determina se la chiave può essere utilizzata per le firme, per Exchange (crittografia) o per entrambi. AT_NONE, AT_SIGNATURE, AT_KEYEXCHANGE KeySpec = AT_KEYEXCHANGE
KeyUsage Definisce la chiave del certificato per cui dovrebbe essere utilizzata.
  • 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

Suggerimento: più valori usano un separatore di simboli pipe (|). Assicurarsi di usare virgolette doppie quando si usano più valori per evitare problemi di analisi INF. I valori visualizzati sono valori esadecimali (decimali) per ogni definizione di bit. È anche possibile usare la sintassi precedente: un singolo valore esadecimale con più bit impostati, anziché la rappresentazione simbolica. Ad esempio, KeyUsage = 0xa0.

KeyUsageProperty Recupera un valore che identifica lo scopo specifico per il quale è possibile usare una chiave privata.
  • 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 Questa chiave è importante quando è necessario creare certificati di proprietà del computer e non di un utente. Il materiale della chiave generato viene mantenuto nel contesto sicuro dell'entità di sicurezza (account utente o computer) che ha creato la richiesta. Quando un amministratore crea una richiesta di certificato per conto di un computer, il materiale della chiave deve essere creato nel contesto di sicurezza del computer e non nel contesto di sicurezza dell'amministratore. In caso contrario, significa che il computer non è riuscito ad accedere alla chiave privata perché si trova nel contesto di sicurezza dell'amministratore. true | false. L’impostazione predefinita è false. MachineKeySet = true
NotBefore Specifica una data o una data e un'ora prima della quale non è possibile eseguire la richiesta. NotBefore può essere usato con ValidityPeriod e ValidityPeriodUnits. Solo data oppure data e ora NotBefore = 7/24/2012 10:31 AM

Suggerimento:NotBefore e NotAfter sono solo per RequestType=cert . L'analisi della data tenta di essere sensibile alle impostazioni locali. L'uso dei nomi dei mesi disambigua e dovrebbe funzionare in tutte le impostazioni locali.

NotAfter Specifica una data o una data e un'ora dopo la quale non è possibile eseguire la richiesta. NotAfter non può essere usato con ValidityPeriod o ValidityPeriodUnits. Solo data oppure data e ora NotAfter = 9/23/2014 10:31 AM

Suggerimento:NotBefore e NotAfter sono solo per RequestType=cert . L'analisi della data tenta di essere sensibile alle impostazioni locali. L'uso dei nomi dei mesi disambigua e dovrebbe funzionare in tutte le impostazioni locali.

PrivateKeyArchive L'impostazione PrivateKeyArchive funziona solo se il valore RequestType corrispondente è impostato su CMC perché solo il formato di richiesta CMS (Certificate Management Messages over CMC) consente di trasferire in modo sicuro la chiave privata del richiedente alla CA per l'archiviazione delle chiavi. true | false PrivateKeyArchive = true
EncryptionAlgorithm Algoritmo di crittografia da utilizzare. Le opzioni possibili variano a seconda della versione del sistema operativo e dell'insieme dei provider di crittografia installati. Per visualizzare l'elenco degli algoritmi disponibili, eseguire il comando : certutil -oid 2 | findstr pwszCNGAlgid. Il provider dei CSP specificati e utilizzati deve supportare anche l'algoritmo di crittografia simmetrica e la lunghezza specificati. EncryptionAlgorithm = 3des
EncryptionLength Lunghezza dell'algoritmo di crittografia da utilizzare. Qualsiasi lunghezza consentita dall'oggetto EncryptionAlgorithm specificato. EncryptionLength = 128
ProviderName Il nome del provider è il nome visualizzato del provider CSP. Se non si conosce il nome del provider CSP in uso, procedere all'esecuzione certutil –csplist da una riga di comando. Il comando visualizza i nomi di tutti i CSP disponibili nel sistema locale ProviderName = Microsoft RSA SChannel Cryptographic Provider
ProviderType Il tipo di provider viene usato per selezionare provider specifici in base a funzionalità di algoritmo specifiche, ad esempio RSA Full. Se non si conosce il tipo di provider CSP in uso, eseguire certutil –csplist da un prompt della riga di comando. Il comando visualizza il tipo di provider di tutti i CSP disponibili nel sistema locale. ProviderType = 1
RenewalCert Se è necessario rinnovare un certificato esistente nel sistema in cui viene generata la richiesta di certificato, è necessario specificarne l'hash del certificato come valore per questa chiave. l'hash di qualsiasi certificato disponibile nel computer in cui viene creata la richiesta di certificato. Se non si conosce l'hash del certificato, usare lo snap-in MMC Certificati ed esaminare il certificato che dovrebbe essere rinnovato. Aprire le proprietà del certificato e visualizzare Thumbprint l'attributo del certificato. Il rinnovo del certificato richiede sia un formato di richiesta PKCS#7 che un CMC. RenewalCert = 4EDF274BD2919C6E9EC6A522F0F3B153E9B1582D
RequesterName Effettua la richiesta di registrazione per conto di un'altra richiesta utente. La richiesta deve anche essere firmata con un certificato dell'agente di registrazione oppure la CA rifiuterà la richiesta. Usare l'opzione -cert per specificare il certificato dell'agente di registrazione. Il nome del richiedente può essere specificato per le richieste di certificato se RequestType è impostato su PKCS#7 o CMC. Se RequestType è impostata su PKCS#10, questa chiave verrà ignorata. Può Requestername essere impostato solo come parte della richiesta. Non è possibile modificare l'oggetto Requestername in una richiesta in sospeso. Domain\User Requestername = Contoso\BSmith
RequestType Determina lo standard utilizzato per generare e inviare la richiesta di certificato.
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
Suggerimento: questa opzione indica un certificato autofirmato o auto-emesso. Non genera una richiesta, ma piuttosto un nuovo certificato e quindi installa il certificato. Per impostazione predefinita è autofirmato. Specificare un certificato di firma usando l'opzione –cert per creare un certificato auto-emesso che non è autofirmato.
RequestType = CMC
SecurityDescriptor Contiene le informazioni di sicurezza associate agli oggetti a protezione diretta. Per la maggior parte degli oggetti a protezione diretta, è possibile specificare il descrittore di sicurezza di un oggetto nella chiamata di funzione che crea l'oggetto. Stringhe basate sul linguaggio di definizione del descrittore di sicurezza.

Suggerimento: questa opzione è rilevante solo per le chiavi non smart card del contesto del computer.

SecurityDescriptor = D:P(A;;GA;;;SY)(A;;GA;;;BA)
AlternateSignatureAlgorithm Specifica e recupera un valore booleano che indica se l'identificatore dell'oggetto dell'algoritmo di firma (OID) per una richiesta o una firma del certificato PKCS#10 è discreta o combinata. true | false AlternateSignatureAlgorithm = false

Per una firma RSA, false indica un Pkcs1 v1.5, mentre true indica una v2.1 firma.

Automatico Per impostazione predefinita, questa opzione consente al CSP di accedere al desktop utente interattivo e richiedere informazioni, ad esempio un PIN di smart card dall'utente. Se questa chiave è impostata su TRUE, il CSP non deve interagire con il desktop e non potrà visualizzare alcuna interfaccia utente all'utente. true | false Silent = true
SMIME Se questo parametro è impostato su TRUE, alla richiesta viene aggiunta un'estensione con il valore dell'identificatore di oggetto 1.2.840.113549.1.9.15. Il numero degli identificatori di oggetto dipende dalla versione del sistema operativo installata e dalla funzionalità CSP, che fa riferimento ad algoritmi di crittografia simmetrica che possono essere usati dalle applicazioni Secure Multipurpose Internet Mail Extensions (S/MIME), ad esempio Outlook. true | false SMIME = true
UseExistingKeySet Questo parametro viene usato per specificare che una coppia di chiavi esistente dovrebbe essere usata nella compilazione di una richiesta di certificato. Se questa chiave è impostata su TRUE, è necessario specificare anche un valore per la chiave RenewalCert o il nome KeyContainer. Non è necessario impostare la chiave esportabile perché non è possibile modificare le proprietà di una chiave esistente. In questo caso, non viene generato alcun materiale della chiave quando viene compilata la richiesta di certificato. true | false UseExistingKeySet = true
KeyProtection Specifica un valore che indica la modalità di protezione di una chiave privata prima dell'uso.
  • 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 Specifica un valore booleano che indica se le estensioni e gli attributi predefiniti sono inclusi nella richiesta. Le impostazioni predefinite sono rappresentate dai relativi identificatori di oggetto (OID). true | false SuppressDefaults = true
FriendlyName Un nome descrittivo per il nuovo certificato. Testo FriendlyName = Server1
ValidityPeriodUnits Specifica molte unità da utilizzare con ValidityPeriod. Nota: viene usato solo quando il request type=cert Numerico ValidityPeriodUnits = 3
ValidityPeriod ValidityPeriod deve essere un periodo di tempo plurale inglese americano. Nota: viene usato solo quando il tipo di richiesta=cert. Years | Months | Weeks | Days | Hours | Minutes | Seconds ValidityPeriod = Years

1Parametro a sinistra del segno di uguale (=)

2Parametro a destra del segno di uguale (=)

[Extensions]

Questa sezione è facoltativa.

Estensione OID Definizione Esempio
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
Critico 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 annidato
  • 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)

Nota

SubjectNameFlags consente al file INF di specificare quali campi di estensione Subject e SubjectAltName devono essere popolati automaticamente da certreq in base alle proprietà dell'utente attuale o del computer corrente: nome DNS, UPN e così via. L'uso del modello letterale indica che vengano invece usati i flag del nome modello. Ciò consente l'uso di un singolo file INF in più contesti per generare richieste con informazioni specifiche sull'oggetto del contesto.

X500NameFlags specifica i flag da passare direttamente all'API CertStrToName quando il Subject INF keys valore viene convertito in un nome distinto con codifica ASN.1.

Esempio

Per creare un file di criteri (con estensione .inf) in Blocco note e salvarlo come 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

Nel computer per cui si richiede un certificato:

certreq –new requestconfig.inf certrequest.req

Per usare la sintassi della sezione [Strings] per gli OID e altri elementi difficili da interpretare. Il nuovo esempio di sintassi {text} per l'estensione EKU, che usa un elenco delimitato da virgole di 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%

Per specificare un nome alternativo soggetto (SAN), aggiungerlo nella sezione [Extensions] dell'INF. Ad esempio:

[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 questo esempio, 2.5.29.17 è l'OID che definisce il SAN. Per specificare più SAN, viene usato l'OID dell'estensione _continue_ , che consente di separare e specificare ogni estensione SAN.

certreq -accept

Il parametro –accept collega la chiave privata generata in precedenza con il certificato rilasciato e rimuove la richiesta di certificato in sospeso dal sistema in cui viene richiesto il certificato (se è presente una richiesta corrispondente).

Per accettare manualmente un certificato:

certreq -accept certnew.cer

Avviso

L'uso del -accept parametro con le opzioni -user e –machine indica se il certificato di installazione debba essere installato nel contesto utente o computer . Se è presente una richiesta in sospeso in entrambi i contesti che corrisponde alla chiave pubblica installata, queste opzioni non sono necessarie. Se non è presente alcuna richiesta in sospeso, è necessario specificarne una.

certreq -policy

policy.inf è un file di configurazione che definisce i vincoli applicati a una certificazione CA nel momento in cui viene definita una subordinazione qualificata.

Per compilare una richiesta tra certificati incrociati:

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

L'uso di certreq -policy senza altri parametri apre una finestra di dialogo, consentendo di selezionare il file richiesto (.req, .cmc, .txt, .der, .cer o .crt). Dopo aver selezionato il file richiesto e fare clic su Apri, viene visualizzata un'altra finestra di dialogo, che consente di selezionare il file policy.inf.

Esempi

Trovare un esempio del file policy.inf nella sintassi CAPolicy.inf.

certreq -sign

Per creare una nuova richiesta di certificato, firmarla e inviarla:

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

Osservazioni:

  • Utilizzando certreq -sign senza altri parametri si apre una finestra di dialogo, in modo da poter selezionare il file richiesto (req, cmc, txt, der, cer or crt).

  • La firma della richiesta di subordinazione qualificata può richiedere credenziali come Amministratore aziendale. Si tratta di una procedura consigliata per il rilascio di certificati di firma per la subordinazione qualificata.

  • Il certificato usato per firmare la richiesta di subordinazione qualificata usa il modello di subordinazione qualificata. Gli amministratori aziendali devono firmare la richiesta o concedere le autorizzazioni utente ai singoli utenti che firmano il certificato.

  • Potrebbe essere necessario che il personale aggiuntivo firmi la richiesta CMC dopo l'utente. Questo dipende dal livello di garanzia associato alla subordinazione qualificata.

  • Se la CA padre della CA subordinata e qualificata che si sta installando è offline, è necessario ottenere il certificato CA per la CA subordinata e qualificata dall'elemento padre offline. Se la CA padre è online, specificare il certificato CA per la CA subordinata e qualificata durante la procedura guidata di Installazione di servizi qualificati .

certreq -enroll

È possibile usare questo commento per registrare o rinnovare i certificati.

Esempi

Per registrare un certificato, usando il modello WebServer e selezionando il server dei criteri usando U/I:

certreq -enroll –machine –policyserver * WebServer

Per rinnovare un certificato usando un numero di serie:

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

È possibile rinnovare solo i certificati validi. I certificati scaduti non possono essere rinnovati e devono essere sostituiti con un nuovo certificato.

Opzioni

Opzioni Descrizione
-any Force ICertRequest::Submit per determinare il tipo di codifica.
-attrib <attributestring> Specifica le coppie di stringhe Name e Value , separate da due punti.

Separare le coppie di stringhe Name e Value usando \n (per esempio, Name1:value1\nName2:value2).

-binary Formatta i file di output come binari anziché con codifica Base64.
-policyserver <policyserver> ldap: <path>
Inserire l'URI o l'ID univoco per un computer che esegue il servizio web Criteri di registrazione certificati.

Per specificare che si vuole usare un file di richiesta tramite l'esplorazione, usare solo un segno meno (-) per <policyserver>.

-config <ConfigString> Elabora l'operazione usando la CA specificata nella stringa di configurazione, ovvero CAHostName\CAName. Per una connessione https:\\ specificare l'URI del server di registrazione. Per la CA dell'archivio del computer locale, usare un segno meno (-).
-anonymous Usare credenziali anonime per i servizi web di registrazione certificati.
-kerberos Usare le credenziali Kerberos (dominio) per i servizi Web di registrazione certificati.
-clientcertificate <ClientCertId> È possibile sostituire <ClientCertId> con un'identificazione personale del certificato, CN, EKU, modello, posta elettronica, UPN o la nuova name=value sintassi.
-username <username> Utilizzato con il servizio Web di registrazione certificati È possibile sostituire <username> con il nome SAM o il valore domain\user . Questa opzione è per l'uso con l'opzione -p .
-p <password> Utilizzato con il servizio Web di registrazione certificati Sostituire <password> con la password dell'utente effettivo. Questa opzione è per l'uso con l'opzione -username .
-utente Configura il -user contesto per una nuova richiesta di certificato o specifica il contesto per l'accettazione di un certificato. Si tratta del contesto predefinito, se non ne è specificato nessuno nell'INF o nel modello.
-machine Configura una nuova richiesta di certificato o specifica il contesto per l'accettazione di un certificato per il contesto del computer. Per le nuove richieste, deve essere coerente con la chiave INF MachineKeyset e il contesto del modello. Se questa opzione non è specificata e il modello non imposta un contesto, l'impostazione predefinita è il contesto utente.
-crl Include elenchi di revoche di certificati (CRL) nell'output nel file PKCS #7 con codifica Base64 specificato da certchainfileout o nel file con codifica base64 specificato da requestfileout.
-rpc Indica a Servizi certificati Active Directory (AD CS) di utilizzare una connessione server RPC (Remote Procedure Call) invece di Distributed COM.
-adminforcemachine Usare il servizio chiavi o la rappresentazione per inviare la richiesta dal contesto del sistema locale. Richiede che l'utente che richiama questa opzione sia membro di Amministratori locali.
-renewonbehalfof Inviare un rinnovo per conto dell'oggetto identificato nel certificato di firma. Questo imposta CR_IN_ROBO quando si richiama il metodo ICertRequest::Submit
-f Forzare la sovrascrittura dei file esistenti. In questo modo vengono ignorati anche i modelli e i criteri di memorizzazione nella cache.
-q Usare la modalità invisibile ed eliminare tutte le richieste interattive.
-unicode Scrive l'output Unicode quando l'output standard viene reindirizzato o inviato tramite pipe a un altro comando, che consente di richiamare dagli script di Windows PowerShell.
-unicodetext Invia l'output Unicode durante la scrittura dei blob di dati con codifica Base64 ai file.

Formati

Formati Descrizione
requestfilein Nome file di input binario o con codifica Base64: richiesta di certificato PKCS #10, richiesta di certificato CMS, richiesta di rinnovo del certificato PKCS #7, certificato X.509 da sottoporre a certificazione incrociata o richiesta di certificato in formato tag KeyGen.
requestfileout Nome del file di output con codifica Base64.
certfileout Nome file X-509 con codifica Base64.
PKCS10fileout Per l'uso solo con il parametro certreq -policy . Nome del file di output PKCS10 con codifica Base64.
certchainfileout Nome file PKCS #7 con codifica Base64.
fullresponsefileout Nome del file di risposta completo con codifica Base64.
policyfilein Per l'uso solo con il parametro certreq -policy . File INF contenente una rappresentazione testuale delle estensioni usate per qualificare una richiesta.

Risorse aggiuntive

Gli articoli seguenti contengono esempi di utilizzo di certreq: