certreq

El comando certreq se puede usar para solicitar certificados de una entidad de certificación (CA), recuperar una respuesta a una solicitud anterior de una CA, crear una nueva solicitud a partir de un archivo .inf, aceptar e instalar una respuesta a una solicitud, crear una solicitud de certificación cruzada o de subordinación completa a partir de una solicitud o un certificado de CA existente e iniciar una solicitud de certificación cruzada o de subordinación completa.

Importante

Es posible que las versiones anteriores del comando certreq no proporcionen todas las opciones descritas aquí. Para ver las opciones admitidas en función de versiones específicas de certreq, ejecute la opción de ayuda de la línea de comandos, certreq -v -?.

El comando certreq no admite la creación de una nueva solicitud de certificado basada en una plantilla de atestación de claves cuando se encuentra en un entorno de CEP/CES.

Advertencia

El contenido de este tema se basa en la configuración predeterminada de Windows Server; por ejemplo, si se selecciona la longitud de la clave en 2048, se selecciona el proveedor de almacenamiento de claves de software de Microsoft como CSP y se usa el algoritmo hash seguro 1 (SHA1). Evalúe estas selecciones en función de los requisitos de la directiva de seguridad de su empresa.

Sintaxis

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 Descripción
-submit Envía una solicitud a una entidad de certificación.
-retrieve <requestid> Recupera una respuesta a una solicitud anterior de una entidad de certificación.
-new Crea una nueva solicitud a partir de un archivo .inf.
-accept Acepta e instala una respuesta a una solicitud de certificado.
-policy Establece la directiva para una solicitud.
-sign Firma una solicitud de subordinación completa o certificación cruzada.
-enroll Se inscribe o renueva un certificado.
-? Muestra una lista de sintaxis, opciones y descripciones de certreq.
<parameter> -? Muestra ayuda para el parámetro especificado.
-v -? Muestra una lista detallada de la sintaxis, las opciones y las descripciones de certreq.

Ejemplos

certreq -submit

Para enviar una solicitud de certificado básica:

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

Comentarios

  • Este es el parámetro certreq.exe predeterminado. Si no se especifica ninguna opción en el símbolo de la línea de comandos, certreq.exe intenta enviar una solicitud de certificado a una entidad de certificación. Debe especificar un archivo de solicitud de certificado al usar la opción –submit. Si se omite este parámetro, aparece una ventana común Abrir archivo, lo que le permite seleccionar el archivo de solicitud de certificado adecuado.

  • Para solicitar un certificado especificando el atributo SAN, consulte la sección Cómo usar la utilidad certreq.exe para crear y enviar una solicitud de certificado del archivo de Microsoft Knowledge Base 931351 Cómo agregar un nombre alternativo del firmante a un certificado LDAP seguro.

certreq -retrieve

Para recuperar el identificador de certificado 20 y para crear un archivo de certificado (.cer), denominado MyCertificate:

certreq -retrieve 20 MyCertificate.cer

Comentarios

  • Use certreq -retrieve requestid para recuperar el certificado después de que la entidad de certificación la haya emitido. El requestid PKC puede ser un decimal o hexadecimal con prefijo 0x y puede ser un número de serie de certificado sin prefijo 0x. También puede usarlo para recuperar cualquier certificado que haya sido emitido por la entidad de certificación, incluidos los certificados revocados o expirados, sin tener en cuenta si la solicitud del certificado estaba pendiente.

  • Si envía una solicitud a la entidad de certificación, el módulo de directivas de la entidad de certificación podría dejar la solicitud en un estado pendiente y devolver el requestid al autor de la llamada certreq para su presentación. Finalmente, el administrador de la entidad de certificación emite el certificado o deniega la solicitud.

certreq -new

Para crear una nueva solicitud:

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

A continuación, se muestran algunas de las posibles secciones que se pueden agregar al archivo INF:

[newrequest]

Esta área del archivo INF es obligatoria para cualquier nueva plantilla de solicitud de certificado y debe incluir al menos un parámetro con un valor.

Clave1 Descripción Valor2 Ejemplo
Asunto Hay varias aplicaciones que se basan en la información del firmante de un certificado. Se recomienda especificar un valor para esta clave. Si no se establece aquí el firmante, se recomienda incluir un nombre de firmante como parte de la extensión del certificado del nombre alternativo del firmante. Valores de cadena del nombre distintivo relativo Firmante = CN=computer1.contoso.com Firmante=CN=John Smith,CN=Users,DC=Contoso,DC=com
Exportable Si se establece en TRUE, la clave privada se puede exportar con el certificado. Para garantizar un alto nivel de seguridad, no deben exportarse las claves privadas; sin embargo, en algunos casos, podría ser necesario si varios equipos o usuarios deben compartir la misma clave privada. true | false Exportable = TRUE. Las claves CNG pueden distinguir entre esto y el texto sin formato exportable. Las claves CAPI1 no pueden.
ExportableEncrypted Especifica si se debe establecer la clave privada para que se pueda exportar. true | false ExportableEncrypted = true

Consejo: No todos los tamaños y algoritmos de clave pública funcionan con todos los algoritmos hash. El CSP especificado también debe admitir el algoritmo hash especificado. Para ver la lista de algoritmos hash admitidos, puede ejecutar el comando: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo

HashAlgorithm Algoritmo hash que se va a usar para esta solicitud. Sha256, sha384, sha512, sha1, md5, md4, md2 HashAlgorithm = sha1. Para ver la lista de algoritmos hash admitidos, use: certutil -oid 1 | findstr pwszCNGAlgid | findstr /v CryptOIDInfo
KeyAlgorithm Algoritmo que usará el proveedor de servicios para generar un par de claves pública y privada. RSA, DH, DSA, ECDH_P256, ECDH_P521, ECDSA_P256, ECDSA_P384, ECDSA_P521 KeyAlgorithm = RSA
KeyContainer No se recomienda establecer este parámetro para las nuevas solicitudes en las que se genera el nuevo material de clave. El sistema genera y mantiene automáticamente el contenedor de claves.

Para las solicitudes en las que se debe usar el material de clave existente, este valor se puede establecer en el nombre del contenedor de claves de la clave existente. Use el comando certutil –key para mostrar la lista de contenedores de claves disponibles para el contexto de la máquina. Use el comando certutil –key –user para el contexto del usuario actual.

Valor de cadena aleatorio

Consejo: Use comillas dobles alrededor de cualquier valor de clave INF que tenga espacios en blanco o caracteres especiales para evitar posibles problemas de análisis de INF.

KeyContainer = {C347BD28-7F69-4090-AA16-BC58CF4D749C}
KeyLength Define la longitud de la clave pública y privada. La longitud de la clave tiene un impacto en el nivel de seguridad del certificado. Una mayor longitud de clave normalmente proporciona un nivel de seguridad más alto; sin embargo, algunas aplicaciones pueden tener limitaciones con respecto a la longitud de la clave. Cualquier longitud de clave válida compatible con el proveedor de servicios criptográficos. KeyLength = 2048
KeySpec Determina si la clave se puede usar para firmas, para Exchange (cifrado) o para ambas. AT_NONE, AT_SIGNATURE, AT_KEYEXCHANGE KeySpec = AT_KEYEXCHANGE
KeyUsage Define para qué se debe usar la clave de certificado.
  • 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

Consejo: Si se escriben varios valores, se usa una pleca (|) como símbolo separador. Asegúrese de usar comillas dobles al usar varios valores para evitar problemas de análisis INF. Los valores que se muestran son valores hexadecimales (decimales) para cada definición de bits. También se puede usar la sintaxis anterior: un único valor hexadecimal con varios bits establecidos, en lugar de la representación simbólica. Por ejemplo, KeyUsage = 0xa0.

KeyUsageProperty Recupera un valor que identifica el propósito específico para el que se puede usar una clave privada.
  • 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 Esta clave es importante cuando necesita crear certificados que pertenecen a la máquina y no a un usuario. El material clave que se genera se mantiene en el contexto de seguridad de la entidad de seguridad (cuenta de usuario o equipo) que ha creado la solicitud. Cuando un administrador crea una solicitud de certificado en nombre de un equipo, el material de clave debe crearse en el contexto de seguridad de la máquina y no en el contexto de seguridad del administrador. De lo contrario, la máquina no podrá acceder a su clave privada, ya que estaría en el contexto de seguridad del administrador. true | false. El valor predeterminado es false. MachineKeySet = true
NotBefore Especifica una fecha o una fecha y hora antes de la cual no se puede emitir la solicitud. NotBefore se puede usar con ValidityPeriod y ValidityPeriodUnits. Fecha o fecha y hora NotBefore = 7/24/2012 10:31 AM

Consejo:NotBefore y NotAfter son solo para RequestType=cert. El análisis de fechas intenta distinguir la configuración regional. Usar el nombre de los meses servirá para eliminar la ambigüedad y debería funcionar en cada configuración regional.

NotAfter Especifica una fecha o una fecha y hora después de las cuales no se puede emitir la solicitud. NotAfter no se puede usar con ValidityPeriod o ValidityPeriodUnits. Fecha o fecha y hora NotAfter = 9/23/2014 10:31 AM

Consejo:NotBefore y NotAfter son solo para RequestType=cert. El análisis de fechas intenta distinguir la configuración regional. Usar el nombre de los meses servirá para eliminar la ambigüedad y debería funcionar en cada configuración regional.

PrivateKeyArchive La configuración PrivateKeyArchive solo funciona si el RequestType correspondiente está establecido en CMC porque solo el formato de solicitud de administración de certificados a través de CMS (CMC) permite transferir de forma segura la clave privada del solicitante a la CA para el archivo de claves. true | false PrivateKeyArchive = true
EncryptionAlgorithm El algoritmo de cifrado que se va a usar. Las opciones posibles varían en función de la versión del sistema operativo y el conjunto de proveedores criptográficos instalados. Para ver la lista de algoritmos disponibles, ejecute el comando: certutil -oid 2 | findstr pwszCNGAlgid. El CSP especificado que se ha usado también debe ser compatible con el algoritmo de cifrado simétrico y la longitud especificados. EncryptionAlgorithm = 3des
EncryptionLength Longitud del algoritmo de cifrado que se va a usar. Cualquier longitud permitida por el EncryptionAlgorithm especificado. EncryptionLength = 128
ProviderName El nombre del proveedor es el nombre para mostrar del CSP. Si no conoce el nombre de proveedor del CSP que está usando, ejecute certutil –csplist desde una línea de comandos. El comando muestra los nombres de todos los CSP disponibles en el sistema local ProviderName = Microsoft RSA SChannel Cryptographic Provider
ProviderType El tipo de proveedor se usa para seleccionar proveedores específicos en función de la funcionalidad de algoritmo específica, como RSA Full. Si no conoce el tipo de proveedor del CSP que está usando, ejecute certutil –csplist desde un símbolo del sistema. El comando muestra el tipo de proveedor de todos los CSP disponibles en el sistema local. ProviderType = 1
RenewalCert Si necesita renovar un certificado que exista en el sistema donde se genera la solicitud de certificado, debe especificar su hash de certificado como el valor de esta clave. Hash de certificado de cualquier certificado que esté disponible en el equipo donde se crea la solicitud de certificado. Si no conoce el hash de certificado, use el complemento MMC de certificados y examine el certificado que se debe renovar. Abra las propiedades del certificado y vea el atributo Thumbprint del certificado. La renovación del certificado requiere un formato de solicitud PKCS#7 o CMC. RenewalCert = 4EDF274BD2919C6E9EC6A522F0F3B153E9B1582D
RequesterName Realiza la solicitud para inscribirse en nombre de otra solicitud de usuario. La solicitud también debe estar firmada con un certificado del agente de inscripción o, de lo contrario, la entidad de certificación rechaza la solicitud. Use la opción -cert para especificar el certificado del agente de inscripción. El nombre del solicitante se puede especificar para las solicitudes de certificado si se establece RequestType en PKCS#7 o CMC. Si RequestType se establece en PKCS#10, esta clave se omite. El Requestername solo se puede establecer como parte de la solicitud. No puede manipular el Requestername en una solicitud pendiente. Domain\User Requestername = Contoso\BSmith
RequestType Determina el estándar que se usa para generar y enviar la solicitud de certificado.
  • PKCS10 -- 1
  • PKCS7 -- 2
  • CMC -- 3
  • Cert -- 4
  • SCEP -- fd00 (64768)
Consejo: Esta opción indica un certificado autofirmado o emitido automáticamente. No genera una solicitud, sino un nuevo certificado y, a continuación, instala el certificado. El valor predeterminado es un certificado autofirmado. Especifique un certificado de firma mediante la opción –cert para crear un certificado autoemitido que no esté autofirmado.
RequestType = CMC
SecurityDescriptor Contiene la información de seguridad asociada a objetos protegibles. Para la mayoría de los objetos protegibles, puede especificar el descriptor de seguridad de un objeto en la llamada de función que crea el objeto. Cadenas basadas en el lenguaje de definición del descriptor de seguridad.

Consejo: Esto solo es relevante para las claves de tarjeta no inteligentes del contexto de la máquina.

SecurityDescriptor = D:P(A;;GA;;;SY)(A;;GA;;;BA)
AlternateSignatureAlgorithm Especifica y recupera un valor booleano que indica si el identificador de objeto de algoritmo de firma (OID) de una solicitud PKCS#10 o firma de certificado es discreto o combinado. true | false AlternateSignatureAlgorithm = false

Para una firma RSA, false indica un Pkcs1 v1.5, mientras que true indica una firma v2.1.

Silencioso De forma predeterminada, esta opción permite que el CSP acceda al escritorio de usuario interactivo y solicite información como un PIN de tarjeta inteligente del usuario. Si esta clave se establece en TRUE, el CSP no debe interactuar con el escritorio y se bloqueará para no mostrar ninguna interfaz de usuario al usuario. true | false Silent = true
SMIME Si este parámetro se establece en TRUE, se agrega una extensión con el valor de identificador de objeto 1.2.840.113549.1.9.15 a la solicitud. El número de identificadores de objeto depende de la versión del sistema operativo instalada y de la capacidad de CSP, que hacen referencia a algoritmos de cifrado simétricos que pueden usar las aplicaciones Secure Multipurpose Internet Mail Extensions (S/MIME), como Outlook. true | false SMIME = true
UseExistingKeySet Este parámetro se usa para especificar que se debe usar un par de claves existente en la creación de una solicitud de certificado. Si esta clave se establece en TRUE, también debe especificar un valor para la clave RenewalCert o el nombre KeyContainer. No debe establecer la clave Exportable porque no puede cambiar las propiedades de una clave existente. En este caso, no se genera ningún material de clave cuando se crea la solicitud de certificado. true | false UseExistingKeySet = true
KeyProtection Especifica un valor que indica cómo se protege una clave privada antes de su 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 un valor booleano que indica si las extensiones y atributos predeterminados se incluyen en la solicitud. Los valores predeterminados se representan mediante sus identificadores de objeto (OID). true | false SuppressDefaults = true
FriendlyName Nombre descriptivo del nuevo certificado. Texto FriendlyName = Server1
ValidityPeriodUnits Especifica numerosas unidades que se van a usar con ValidityPeriod. Nota: Esto solo se usa cuando request type=cert. Numeric ValidityPeriodUnits = 3
ValidityPeriod ValidityPeriod debe ser un período de tiempo plural en inglés de EE. UU. Nota: Solo se usa cuando la solicitud type=cert. Years | Months | Weeks | Days | Hours | Minutes | Seconds ValidityPeriod = Years

1Parámetro a la izquierda del signo igual (=)

2Parámetro a la derecha del signo igual (=)

[Extensions]

Esta sección es opcional.

OID de extensión Definición Ejemplo
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)

Nota

SubjectNameFlags permite que el archivo INF especifique qué campos de extensión Subject y SubjectAltName deben rellenar automáticamente certreq en función del usuario actual o de las propiedades actuales de la máquina: nombre DNS, UPN, etc. Si se usa la plantilla literal, esto implica que se usarán las marcas de nombre de plantilla en su lugar. Esto permite usar un único archivo INF en varios contextos para generar solicitudes con información de asunto específica del contexto.

X500NameFlags especifica las marcas que se van a pasar directamente a la API CertStrToName cuando el valor Subject INF keys se convierte en un nombre distintivo codificado ASN.1.

Ejemplo

Para crear un archivo de directiva (.inf) en el Bloc de notas de Windows y guardarlo 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

En el equipo para el que está solicitando un certificado:

certreq –new requestconfig.inf certrequest.req

Para usar la sintaxis de la sección [Strings] para los OID y otros datos difíciles de interpretar. El nuevo ejemplo de sintaxis {text} para la extensión EKU, que usa una lista separada por comas de 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%

Para especificar un nombre alternativo del firmante (SAN), agréguelo en la sección [Extensions] del archivo INF. Por ejemplo:

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

En este ejemplo, 2.5.29.17 es el OID que define la SAN. Para especificar varias SAN, se usa el OID de extensión _continue_, que permite separar y especificar cada extensión de SAN.

certreq -accept

El parámetro –accept vincula la clave privada generada anteriormente con el certificado emitido y quita la solicitud de certificado pendiente del sistema donde se solicita el certificado (si hay una solicitud que coincida).

Para aceptar manualmente un certificado:

certreq -accept certnew.cer

Advertencia

El uso del parámetro -accept con las opciones -user y –machine indica si el certificado de instalación debe instalarse en el contexto del usuario o de la máquina. Si hay una solicitud pendiente en cualquier contexto que coincida con la clave pública que se va a instalar, estas opciones no son necesarias. Si no hay ninguna solicitud pendiente, se debe especificar una de ellas.

certreq -policy

El archivo policy.inf es un archivo de configuración que define las restricciones aplicadas a una certificación de CA cuando se define una subordinación completa.

Para crear una solicitud de certificado cruzado:

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

Si se usa certreq -policy sin ningún otro parámetro, se abre una ventana de diálogo que permite seleccionar el archivo solicitado (.req, .cmc, .txt, .der, .cer o .crt). Después de seleccionar el archivo solicitado y hacer clic en Abrir, se abre otra ventana de diálogo, lo que le permite seleccionar el archivo policy.inf.

Ejemplos

Busque un ejemplo del archivo policy.inf en la sintaxis CAPolicy.inf.

certreq -sign

Para crear una nueva solicitud de certificado, fírmela y envíela:

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

Comentarios

  • Si se usa certreq -sign sin ningún otro parámetro, se abre una ventana de diálogo que permite seleccionar el archivo solicitado (.req, .cmc, .txt, .der, .cer o .crt).

  • La firma de la solicitud de la subordinación completa puede requerir las credenciales del administrador de la empresa. Se trata de un procedimiento recomendado para emitir certificados de firma para la subordinación completa.

  • El certificado que se usa para firmar la solicitud de subordinación completa utiliza la plantilla de subordinación completa. Los administradores de empresa tienen que firmar la solicitud o conceder permisos de usuario a los usuarios individuales que firman el certificado.

  • Es posible que tras firmarla usted, la solicitud de CMC la tenga que firmar personal adicional. Esto depende del nivel de garantía asociado a la subordinación completa.

  • Si la CA primaria de la CA subordinada completa que va a instalar está sin conexión, debe obtener el certificado de CA para la CA subordinada completa del elemento primario sin conexión. Si la CA primaria está en línea, especifique el certificado de CA para la CA subordinada completa durante el asistente para la instalación de servicios de certificados.

certreq -enroll

Puede usar este comentario para inscribir o renovar los certificados.

Ejemplos

Para inscribir un certificado mediante la plantilla WebServer y seleccionando el servidor de directivas con U/I:

certreq -enroll –machine –policyserver * WebServer

Para renovar un certificado mediante un número de serie:

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

Solo puede renovar certificados válidos. Los certificados caducados no se pueden renovar; deben reemplazarse por un nuevo certificado.

Opciones

Opciones Descripción
-any Force ICertRequest::Submit para determinar el tipo de codificación.
-attrib <attributestring> Especifica los pares de cadena nombre y valor, separados por dos puntos.

Separe los pares de cadena nombre y valor mediante \n (por ejemplo, Name1:value1\nName2:value2).

-binary Da formato a los archivos de salida como binarios en lugar de codificados en Base64.
-policyserver <policyserver> ldap: <path>
Inserte el URI o el identificador único de un equipo que ejecute el servicio web de directiva de inscripción de certificados.

Para especificar que desea usar un archivo de solicitud mediante exploración, basta con que use un signo menos (-) para <policyserver>.

-config <ConfigString> Procesa la operación utilizando la CA especificada en la cadena de configuración, es decir, CAHostName\CAName. Para una conexión https:\\\, especifique el URI del servidor de inscripción. Para la CA del almacén de máquinas local, use un signo menos (-).
-anonymous Use credenciales anónimas para los servicios web de inscripción de certificados.
-kerberos Use las credenciales de Kerberos (dominio) para los servicios web de inscripción de certificados.
-clientcertificate <ClientCertId> Puede reemplazar el <ClientCertId> con una huella digital de certificado, un CN, un EKU, una plantilla, un correo electrónico, un UPN o la nueva sintaxis name=value.
-username <username> Se usa con servicios web de inscripción de certificados. Puede sustituir <username> por el nombre SAM o el valor domain\user. Esta opción se usa con la opción -p.
-p <password> Se usa con servicios web de inscripción de certificados. Sustituya <password> por la contraseña del usuario real. Esta opción se usa con la opción -username.
-user Configura el contexto -user de una nueva solicitud de certificado o especifica el contexto de una aceptación de certificado. Este es el contexto predeterminado si no se especifica ninguno el INF o en la plantilla.
-machine Configura una nueva solicitud de certificado o especifica el contexto de una aceptación de certificado para el contexto de la máquina. Para las nuevas solicitudes, debe ser coherente con la clave INF MachineKeyset y el contexto de la plantilla. Si no se especifica esta opción y la plantilla no establece un contexto, el valor predeterminado es el contexto del usuario.
-crl Incluye listas de revocación de certificados (CRL) en la salida al archivo PKCS #7 codificado en Base64 especificado por certchainfileout o al archivo codificado en Base64 especificado por requestfileout.
-rpc Indica a los Servicios de certificados de Active Directory (AD CS) que usen una conexión de servidor de llamada a procedimiento remoto (RPC) en lugar de COM distribuido.
-adminforcemachine Use el servicio de claves o la suplantación para enviar la solicitud desde el contexto del sistema local. Requiere que el usuario que invoca esta opción sea miembro de los administradores locales.
-renewonbehalfof Envíe una renovación en nombre del firmante identificado en el certificado de firma. Esto establece CR_IN_ROBO al llamar al método ICertRequest::Submit
-f Forzar la sobrescritura de los archivos existentes. Esto también omite las plantillas de almacenamiento en caché y la directiva.
-q Use modo silencioso; suprima todos los avisos interactivos.
-unicode Escribe la salida Unicode cuando la salida estándar se redirige o canaliza a otro comando, lo que ayuda cuando se invoca desde scripts de Windows PowerShell.
-unicodetext Envía una salida Unicode al escribir blobs de datos codificados en Base64 en archivos.

Formatos

Formatos Descripción
requestfilein Nombre de archivo de entrada binario o codificado en Base64: solicitud de certificado PKCS #10, solicitud de certificado CMS, solicitud de renovación de certificados PKCS #7, certificado X.509 que se va a certificar de forma cruzada o solicitud de certificado de formato de etiqueta KeyGen.
requestfileout Nombre del archivo de salida codificado en Base64.
certfileout Nombre del archivo X-509 codificado en Base64.
PKCS10fileout Para su uso exclusivamente con el parámetro certreq -policy. Nombre de archivo de salida PKCS10 codificado en Base64.
certchainfileout Nombre de archivo PKCS #7 codificado en Base64.
fullresponsefileout Nombre de archivo de respuesta completa codificado en Base64.
policyfilein Para su uso exclusivamente con el parámetro certreq -policy. Archivo INF que contiene una representación textual de las extensiones usadas para calificar una solicitud.

Recursos adicionales

Los siguientes artículos contienen ejemplos de uso de certreq: