certreq

O comando certreq pode ser usado para solicitar certificados de uma autoridade de certificação (AC), para recuperar uma resposta a uma solicitação anterior de uma AC, para criar uma nova solicitação de um arquivo. inf, para aceitar e instalar uma resposta a uma solicitação, para criar uma solicitação de certificação cruzada ou de subordinação qualificada por meio de um Certificado de Autoridade de Certificação ou solicitação existente e para assinar uma solicitação de certificação cruzada ou de subordinação qualificada.

Importante

Versões anteriores do comando certreq podem não fornecer todas as opções descritas aqui. Para ver as opções com suporte com base em versões específicas do certreq, execute a opção de ajuda de linha de comando, certreq -v -?.

O comando certreq não dá suporte à criação de uma solicitação de certificado com base em um modelo de Atestado de Chave quando em um ambiente CEP/CES.

Aviso

O conteúdo deste tópico é baseado nas configurações padrão do Windows Server; por exemplo, na definição do comprimento da chave como 2048, na escolha do Provedor de Armazenamento de Chaves de Software da Microsoft como o CSP e no uso do Algoritmo de Hash Seguro 1 (SHA1). Avalie essas seleções em relação aos requisitos da política de segurança da sua empresa.

Sintaxe

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]

Parâmetros

Parâmetro Descrição
-submit Envia uma solicitação a uma autoridade de certificação.
-retrieve <requestid> Recupera uma resposta a uma solicitação anterior de uma autoridade de certificação.
-new Cria uma solicitação de um arquivo .inf.
-accept Aceita e instala uma resposta a uma solicitação de certificado.
-policy Define a política de uma solicitação.
-sign Assina uma solicitação de subordinação qualificada ou certificação cruzada.
-enroll Registra ou renova um certificado.
-? Exibe uma lista de sintaxe, opções e descrições certreq.
<parameter> -? Exibe ajuda para o parâmetro especificado.
-v -? Exibe uma lista detalhada da sintaxe, opções e descrições certreq.

Exemplos

certreq -submit

Para enviar uma solicitação de certificado básico:

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

Comentários

  • Esse é o parâmetro de certreq.exe padrão. Se nenhuma opção for especificada no prompt de linha de comando, certreq.exe tentará enviar uma solicitação de certificado a uma autoridade de certificação. Você precisa especificar um arquivo de solicitação de certificado ao usar a opção -submit. Se esse parâmetro for omitido, uma janela de Arquivo Aberto comum será exibida, permitindo que você selecione o arquivo de solicitação de certificado apropriado.

  • Para solicitar um certificado especificando o atributo SAN, consulte a seção Como usar o utilitário certreq.exe para criar e enviar uma seção de solicitação de certificado da Base de Dados de Conhecimento da Microsoft 931351 Como adicionar um Nome Alternativo da Entidade a um certificado LDAP seguro.

certreq -retrieve

Para recuperar o ID do certificado 20 e criar um arquivo de certificado (.cer) chamado MyCertificate:

certreq -retrieve 20 MyCertificate.cer

Comentários

  • Use certreq -retrieve requestid para recuperar o certificado depois que a autoridade de certificação o tiver emitido. O PKC requestid pode ser um decimal ou hex com prefixo 0x e pode ser um número de série de certificado sem prefixo 0x. Você também pode usá-lo para recuperar certificados que já tenham sido emitidos pela autoridade de certificação, incluindo certificados revogados ou expirados, sem considerar se a solicitação de certificado já esteve no estado pendente.

  • Se você enviar uma solicitação à autoridade de certificação, o módulo de política da autoridade de certificação poderá deixar a solicitação em um estado pendente e retornar a requestid ao chamador certreq para exibição. Eventualmente, o administrador da autoridade de certificação emite o certificado ou nega a solicitação.

certreq -new

Para criar uma solicitação:

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

Veja abaixo algumas das seções possíveis que podem ser adicionadas ao arquivo INF:

[newrequest]

Essa área do arquivo INF é obrigatória para qualquer novo modelo de solicitação de certificado e precisa incluir pelo menos um parâmetro com um valor.

Key1 Descrição Value2 Exemplo
Assunto Vários aplicativos dependem das informações do assunto em um certificado. Recomendamos especificar um valor para essa chave. Se o assunto não estiver definido aqui, recomendamos que você inclua um nome de entidade como parte da extensão de certificado de nome alternativo da entidade. Valores de cadeia de caracteres de Nome Diferenciado Relativo Subject = CN=computer1.contoso.com Subject=CN=John Smith,CN=Users,DC=Contoso,DC=com
Exportável Se definida como TRUE, a chave privada poderá ser exportada com o certificado. Para garantir um alto nível de segurança, as chaves privadas não devem ser exportáveis; no entanto, em alguns casos, poderá ser necessário se vários computadores ou usuários precisarem compartilhar a mesma chave privada. true | false Exportable = TRUE. As chaves CNG podem distinguir entre esse e o texto não criptografado exportável. As chaves CAPI1 não podem.
ExportableEncrypted Especifica se a chave privada deve ser definida como exportável. true | false ExportableEncrypted = true

Dica: nem todos os tamanhos e algoritmos de chave pública funcionam com todos os algoritmos de hash. O CSP especificado também precisa dar suporte ao algoritmo de hash especificado. Para ver a lista de algoritmos de hash com suporte, você pode executar o comando: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo

HashAlgorithm Algoritmo de hash a ser usado para essa solicitação. Sha256, sha384, sha512, sha1, md5, md4, md2 HashAlgorithm = sha1. Para ver a lista de algoritmos de hash com suporte, use: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo
KeyAlgorithm O algoritmo que é usado pelo provedor de serviços para gerar um par de chaves públicas e privadas. RSA, DH, DSA, ECDH_P256, ECDH_P521, ECDSA_P256, ECDSA_P384, ECDSA_P521 KeyAlgorithm = RSA
KeyContainer Não recomendamos definir esse parâmetro para novas solicitações nas quais o novo material de chave é gerado. O contêiner de chaves é gerado e mantido automaticamente pelo sistema.

No caso de solicitações em que o material de chave existente deve ser usado, esse valor pode ser definido como o nome chave-contêiner da chave existente. Use o comando certutil –key para exibir a lista de contêineres de chave disponíveis para o contexto do computador. Use o comando certutil –key –user para o contexto do usuário atual.

Valor de cadeia de caracteres aleatória

Dica: use aspas duplas em torno de todo valor de chave INF que tenha caracteres em branco ou especiais para evitar possíveis problemas de análise do INF.

KeyContainer = {C347BD28-7F69-4090-AA16-BC58CF4D749C}
KeyLength Define o comprimento da chave pública e privada. O tamanho da chave tem um impacto no nível de segurança do certificado. O tamanho maior da chave geralmente fornece um nível de segurança mais alto; no entanto, alguns aplicativos podem ter limitações em relação ao tamanho da chave. Qualquer tamanho de chave válido com suporte do provedor de serviços criptográficos. KeyLength = 2048
KeySpec Determina se a chave pode ser usada em assinaturas, no Exchange (criptografia) ou em ambos. AT_NONE, AT_SIGNATURE, AT_KEYEXCHANGE KeySpec = AT_KEYEXCHANGE
KeyUsage Define para que a chave de certificado deve ser usada.
  • 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

Dica: vários valores usam um separador de símbolo de barra vertical (|). Use aspas duplas ao usar vários valores para evitar problemas de análise do INF. Os valores mostrados são valores hexadecimais (decimais) para cada definição de bit. Sintaxes mais antigas também podem ser usadas: um único valor hexadecimal com vários bits definidos, em vez da representação simbólica. Por exemplo, KeyUsage = 0xa0.

KeyUsageProperty Recupera um valor que identifica a finalidade específica para a qual uma chave privada pode ser usada.
  • 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 Essa chave é importante quando você precisa criar certificados que pertencem ao computador e não a um usuário. O material de chave gerado é mantido no contexto de segurança da entidade de segurança (conta de usuário ou computador) que criou a solicitação. Quando um administrador cria uma solicitação de certificado em nome de um computador, o material da chave precisa ser criado no contexto de segurança do computador e não no contexto de segurança do administrador. Caso contrário, o computador não poderia acessar sua chave privada, pois estaria no contexto de segurança do administrador. true | false. O padrão é falso. MachineKeySet = true
NotBefore Especifica uma data ou data e hora antes das quais a solicitação não pode ser emitida. NotBefore pode ser usado com ValidityPeriod e ValidityPeriodUnits. Data ou data e hora NotBefore = 7/24/2012 10:31 AM

Dica:NotBefore e NotAfter são apenas para RequestType=cert. A análise de data tenta diferenciar localidades. O uso de nomes de mês será desambiguado e deverá funcionar em todas as localidades.

NotAfter Especifica uma data ou data e hora depois das quais a solicitação não pode ser emitida. NotAfter não pode ser usado com ValidityPeriod ou ValidityPeriodUnits. Data ou data e hora NotAfter = 9/23/2014 10:31 AM

Dica:NotBefore e NotAfter são apenas para RequestType=cert. A análise de data tenta diferenciar localidades. O uso de nomes de mês será desambiguado e deverá funcionar em todas as localidades.

PrivateKeyArchive A configuração PrivateKeyArchive só funcionará se o RequestType correspondente estiver definido como CMC porque apenas o formato de solicitação de CMC (Mensagens de Gerenciamento de Certificado) por CMS permite transferir com segurança a chave privada do solicitante para a AC para fins de arquivamento de chave. true | false PrivateKeyArchive = true
EncryptionAlgorithm O algoritmo de criptografia a ser usado. As opções possíveis variam, dependendo da versão do sistema operacional e do conjunto de provedores criptográficos instalados. Para ver a lista de algoritmos disponíveis, execute o comando: certutil -oid 2 | findstr pwszCNGAlgid. O CSP especificado usado também precisa dar suporte ao algoritmo e ao tamanho de criptografia simétrica especificados. EncryptionAlgorithm = 3des
EncryptionLength Tamanho do algoritmo de criptografia a ser usado. Qualquer tamanho permitido pelo EncryptionAlgorithm especificado. EncryptionLength = 128
ProviderName O nome do provedor é o nome de exibição do CSP. Se você não souber o nome do provedor do CSP que está usando, execute certutil –csplist em uma linha de comando. O comando exibe os nomes de todos os CSPs disponíveis no sistema local ProviderName = Microsoft RSA SChannel Cryptographic Provider
ProviderType O tipo de provedor é usado para selecionar provedores específicos com base na funcionalidade de algoritmo específica, como RSA Full. Se você não souber o tipo de provedor do CSP que está usando, execute certutil –csplist em um prompt de linha de comando. O comando exibe o tipo de provedor de todos os CSPs disponíveis no sistema local. ProviderType = 1
RenewalCert Se você precisar renovar um certificado que existe no sistema em que a solicitação de certificado é gerada, especifique seu hash de certificado como o valor dessa chave. O hash de certificado de qualquer certificado disponível no computador em que a solicitação de certificado é criada. Se você não souber o hash do certificado, use o Snap-In MMC de Certificados e examine o certificado que deve ser renovado. Abra as propriedades do certificado e veja o atributo Thumbprint do certificado. A renovação de certificado requer um formato de solicitação PKCS#7 ou CMC. RenewalCert = 4EDF274BD2919C6E9EC6A522F0F3B153E9B1582D
RequesterName Faz a solicitação de inscrição em nome de outra solicitação de usuário. A solicitação também deve ser assinada com um certificado de Agente de Registro ou a AC rejeita a solicitação. Use a opção -cert para especificar o certificado do agente de registro. O nome do solicitante poderá ser especificado para solicitações de certificado se o RequestType estiver definido como PKCS#7 ou CMC. Se o RequestType estiver definido como PKCS#10, essa chave é ignorada. O Requestername só pode ser definido como parte da solicitação. Não é possível manipular o Requestername em uma solicitação pendente. Domain\User Requestername = Contoso\BSmith
RequestType Determina o padrão usado para gerar e enviar a solicitação de certificado.
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
Dica: essa opção indica um certificado autoassinado ou autoemitido. Ele não gera uma solicitação, mas sim um novo certificado, e o instala. Autoassinado é o padrão. Especifique um certificado de assinatura usando a opção –cert para criar um certificado autoemitido que não é autoassinado.
RequestType = CMC
SecurityDescriptor Contém as informações de segurança associadas a objetos protegíveis. Para a maioria dos objetos protegíveis, você pode especificar o descritor de segurança de um objeto na chamada de função que cria o objeto. Cadeias de caracteres baseadas na linguagem de definição do descritor de segurança.

Dica: isso é relevante apenas para chaves de cartão não inteligentes de contexto do computador.

SecurityDescriptor = D:P(A;;GA;;;SY)(A;;GA;;;BA)
AlternateSignatureAlgorithm Especifica e recupera um valor booliano que indica se o OID (identificador de objeto do algoritmo de assinatura) para uma solicitação PKCS#10 ou assinatura de certificado é distinto ou combinado. true | false AlternateSignatureAlgorithm = false

Para uma assinatura RSA, false indica um Pkcs1 v1.5; já true indica uma assinatura v2.1.

Silencioso Por padrão, essa opção permite que o CSP acesse a área de trabalho interativa do usuário e solicite informações como um PIN de cartão inteligente do usuário. Se essa chave for definida como TRUE, o CSP não poderá interagir com a área de trabalho e será impedido de exibir qualquer interface do usuário para o usuário. true | false Silent = true
SMIME Se esse parâmetro for definido como TRUE, uma extensão com o valor do identificador de objeto 1.2.840.113549.1.9.15 será adicionada à solicitação. O número de identificadores de objeto depende da versão do sistema operacional instalada e da funcionalidade do CSP, que se referem a algoritmos de criptografia simétrica que podem ser usados por aplicativos S/MIME (Secure Multipurpose Internet Mail Extensions), como o Outlook. true | false SMIME = true
UseExistingKeySet Esse parâmetro é usado para especificar que um par de chaves existente deve ser usado na criação de uma solicitação de certificado. Se essa chave estiver definida como TRUE, você também precisará especificar um valor para a chave RenewalCert ou o nome KeyContainer. Você não pode definir a chave Exportável porque não pode alterar as propriedades de uma chave existente. Nesse caso, nenhum material de chave é gerado quando a solicitação de certificado é criada. true | false UseExistingKeySet = true
KeyProtection Especifica um valor que indica como uma chave privada é protegida antes do 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 Especifica um valor booliano que indica se as extensões e os atributos padrão estão incluídos na solicitação. Os padrões são representados por seus identificadores de objeto (OIDs). true | false SuppressDefaults = true
FriendlyName Um nome amigável para o novo certificado. Texto FriendlyName = Server1
ValidityPeriodUnits Especifica muitas unidades que devem ser usadas com ValidityPeriod. Observação: isso é usado somente quando o request type=cert. Numérico ValidityPeriodUnits = 3
ValidityPeriod ValidityPeriod deve ser um período de tempo plural em inglês dos EUA. Observação: isso é usado somente quando a solicitação type=cert. Years | Months | Weeks | Days | Hours | Minutes | Seconds ValidityPeriod = Years

1Parâmetro à esquerda do sinal de igual (=)

2Parâmetro à direita do sinal de igual (=)

[Extensões]

Esta seção é opcional.

OID de extensão Definição Exemplo
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
Crítico 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)

Observação

SubjectNameFlags permite que o arquivo INF especifique quais campos de extensão Subject e SubjectAltName devem ser preenchidos automaticamente pelo certreq com base nas propriedades atuais do usuário ou do computador atual: nome DNS, UPN e assim por diante. O uso do modelo literal significa que os sinalizadores de nome do modelo são usados. Isso permite que um único arquivo INF seja usado em vários contextos para gerar solicitações com informações de assunto específicas do contexto.

X500NameFlags especifica os sinalizadores a serem transmitidos diretamente à API CertStrToName quando o valor Subject INF keys é convertido em um NomeDiferenciado codificado em ASN.1.

Exemplo

Para criar um arquivo de política (.inf) no Bloco de Notas e salvá-lo como 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

No computador para o qual você está solicitando um certificado:

certreq –new requestconfig.inf certrequest.req

Para usar a sintaxe da seção [Strings] para OIDs e outros dados difíceis de interpretar. O novo exemplo de sintaxe {text} para a extensão de EKU, que usa uma lista separada por vírgulas de OIDs:

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

Para especificar um nome alternativo da entidade (SAN), adicione-o na seção [Extensões] do seu INF. Por exemplo:

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

Nesse exemplo, 2.5.29.17 é o OID que define o SAN. Para especificar vários SANs, a extensão OID _continue_ é usada, que permite separar e especificar cada extensão de SAN.

certreq -accept

O parâmetro –accept vincula a chave privada gerada anteriormente ao certificado emitido e remove a solicitação de certificado pendente do sistema em que o certificado é solicitado (se houver uma solicitação correspondente).

Para aceitar manualmente um certificado:

certreq -accept certnew.cer

Aviso

O uso do parâmetro -accept com as opções -user e –machine indica se o certificado de instalação deve ser instalado no contexto do usuário ou do computador. Se houver uma solicitação pendente em algum contexto que corresponda à chave pública que está sendo instalada, essas opções não serão necessárias. Se não houver nenhuma solicitação pendente, uma delas precisará ser especificada.

certreq -policy

O arquivo policy.inf é um arquivo de configuração que define as restrições aplicadas a uma certificação de AC quando uma subordinação qualificada é definida.

Para criar uma solicitação de certificado cruzado:

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

O uso de certreq -policy sem nenhum outro parâmetro abre uma janela de diálogo, permitindo que você selecione o arquivo solicitado (.req, .cmc, .txt, .der, .cer ou .crt). Depois de selecionar o arquivo solicitado e clicar em Abrir, outra janela de diálogo será aberta, permitindo que você selecione o arquivo policy.inf.

Exemplos

Encontre um exemplo do arquivo policy.inf na sintaxe CAPolicy.inf.

certreq -sign

Para criar, assinar e enviar uma solicitação de certificado:

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

Comentários

  • O uso de certreq -sign sem nenhum outro parâmetro abre uma janela de diálogo, para que você possa selecionar o arquivo solicitado (.req, .cmc, .txt, .der, .cer ou .crt).

  • A assinatura da solicitação de subordinação qualificada pode exigir credenciais de Administrador Corporativo. Essa é uma prática recomendada para emitir certificados de autenticação de subordinação qualificada.

  • O certificado usado para assinar a solicitação de subordinação qualificada usa o modelo de subordinação qualificada. Os Administradores da Empresa devem assinar a solicitação ou conceder permissões de usuário aos indivíduos que assinarem o certificado.

  • Talvez seja necessário que outras pessoas assinem a solicitação do CMC depois de você. Isso depende do nível de garantia associado à subordinação qualificada.

  • Se a AC pai da AC subordinada qualificada que você está instalando estiver offline, você precisará obter o certificado de Autoridade de Certificação para a AC subordinada qualificada do pai offline. Se a AC pai estiver online, especifique o certificado de AC para a AC subordinada qualificada durante o assistente de Instalação dos Serviços de Certificados.

certreq -enroll

Você pode usar esse comentário para registrar ou renovar seus certificados.

Exemplos

Para registrar um certificado, usando o modelo WebServer e selecionando o servidor de política com U/I:

certreq -enroll –machine –policyserver * WebServer

Para renovar um certificado usando um número de série:

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

Você só pode renovar certificados válidos. Os certificados expirados não podem ser renovados e precisam ser substituídos por um novo certificado.

Opções

Opções Descrição
-any Force ICertRequest::Submit para determinar o tipo de codificação.
-attrib <attributestring> Especifica os pares de cadeia de caracteres Nome e Valor, separados por dois pontos.

Separe os pares de cadeia de caracteres Name e Value usando \n (por exemplo, Name1:value1\nName2:value2).

-binary Formata arquivos de saída como binários em vez de codificados em base64.
-policyserver <policyserver> ldap: <path>
Insira o URI ou o ID exclusivo de um computador que executa o serviço Web da Política de Registro de Certificado.

Para especificar que você gostaria de usar um arquivo de solicitação pela navegação, basta usar um sinal de subtração (-) para <policyserver>.

-config <ConfigString> Processa a operação usando a CA especificada na cadeia de caracteres de configuração (isto é, CAHostName\CAName. Para uma conexão https:\\, especifique o URI do servidor de registro. Para a AC do repositório do computador local, use um sinal de subtração (-).
-anonymous Use credenciais anônimas para serviços Web de Registro de Certificado.
-kerberos Use credenciais Kerberos (domínio) para serviços Web de Registro de Certificado.
-clientcertificate <ClientCertId> Você pode substituir o <ClientCertId> por uma impressão digital do certificado, CN, EKU, modelo, email, UPN ou pela nova sintaxe name=value.
-username <username> Usado com serviços Web de Registro de Certificado. Você pode substituir <username> pelo nome SAM ou pelo valor domain\user. Essa opção é usada com a opção -p.
-p <password> Usado com serviços Web de Registro de Certificado. Substitua <password> pela senha do usuário real. Essa opção é usada com a opção -username.
-user Configura o contexto -user para uma nova solicitação de certificado ou especifica o contexto para uma aceitação de certificado. Esse é o contexto padrão, se nenhum for especificado no INF ou modelo.
-machine Configura uma nova solicitação de certificado ou especifica o contexto para uma aceitação de certificado do contexto do computador. Para novas solicitações, ela precisa ser consistente com a chave INF MachineKeyset e o contexto do modelo. Se essa opção não for especificada e o modelo não definir um contexto, o padrão será o contexto do usuário.
-crl Inclui CRLs (listas de certificados revogados) na saída para o arquivo PKCS nº 7 codificado em base64 especificado por certchainfileout ou para o arquivo codificado em base64 especificado por requestfileout.
-rpc Instrui o AD CS (Serviços de Certificados do Active Directory) a usar uma conexão de servidor RPC (chamada de procedimento remoto) em vez de COM distribuído.
-adminforcemachine Use o Serviço de Chave ou representação para enviar a solicitação do contexto do Sistema Local. Exige que o usuário que invoca essa opção seja membro dos Administradores Locais.
-renewonbehalfof Envia uma renovação em nome da entidade identificada no certificado de autenticação. Isso define CR_IN_ROBO na hora de chamar o método ICertRequest::Submit
-f Força os arquivos existentes a serem substituídos. Também ignora modelos e políticas de cache.
-Q Usa o modo silencioso; suprime todos os prompts interativos.
-unicode Grava a saída Unicode quando a saída padrão é redirecionada ou canalizada para outro comando, o que ajuda quando invocado de scripts do Windows PowerShell.
-unicodetext Envia saída Unicode ao gravar blobs de dados codificados em texto base64 em arquivos.

Formatos

Formatos Descrição
requestfilein Nome do arquivo de entrada binário ou codificado em Base64: solicitação de certificado PKCS nº 10, solicitação de certificado CMS, solicitação de renovação de certificado PKCS #7, certificado X.509 a ser certificado cruzado ou solicitação de certificado de formato de marca KeyGen.
requestfileout Nome do arquivo de saída codificado em Base64.
certfileout Nome do arquivo X-509 codificado em Base64.
PKCS10fileout Para uso somente com o parâmetro certreq -policy. Nome do arquivo de saída PKCS10 codificado em Base64.
certchainfileout Nome do arquivo PKCS nº 7 codificado em Base64.
fullresponsefileout Nome do arquivo de resposta completo codificado em Base64.
policyfilein Para uso somente com o parâmetro certreq -policy. Arquivo INF que contém uma representação textual de extensões usadas para qualificar uma solicitação.

Recursos adicionais

Os seguintes artigos contêm exemplos de uso certreq: