certutil
Caution
Certutil
isn't recommended to be used in any production code and doesn't provide any guarantees of live site support or application compatibilities. It's a tool utilized by developers and IT administrators to view certificate content information on devices.
Certutil.exe is a command-line program installed as part of Certificate Services. You can use certutil.exe to display certification authority (CA) configuration information, configure Certificate Services, and back up and restore CA components. The program also verifies certificates, key pairs, and certificate chains.
If certutil
is run on a certification authority without other parameters, it displays the current certification authority configuration. If certutil
is run on a non-certification authority without other parameters, the command defaults to running the certutil -dump
command. Not all versions of certutil provide all of the parameters and options that this document describes. You can see the choices that your version of certutil provides by running certutil -?
or certutil <parameter> -?
.
Tip
To see complete help for all certutil verbs and options, including ones that are hidden from the -?
argument, run certutil -v -uSAGE
. The uSAGE
switch is case-sensitive.
Parameters
-dump
Dumps the configuration information or files.
certutil [options] [-dump]
certutil [options] [-dump] File
Options:
[-f] [-user] [-Silent] [-split] [-p Password] [-t Timeout]
-dumpPFX
Dumps the PFX structure.
certutil [options] [-dumpPFX] File
Options:
[-f] [-Silent] [-split] [-p Password] [-csp Provider]
-asn
Parses and displays the contents of a file using Abstract Syntax Notation (ASN.1) syntax. File types include .CER, .DER and PKCS #7 formatted files.
certutil [options] -asn File [type]
[type]
: numeric CRYPT_STRING_* decoding type
-decodehex
Decodes a hexadecimal-encoded file.
certutil [options] -decodehex InFile OutFile [type]
[type]
: numeric CRYPT_STRING_* decoding type
Options:
[-f]
-encodehex
Encodes a file in hexadecimal.
certutil [options] -encodehex InFile OutFile [type]
[type]
: numeric CRYPT_STRING_* encoding type
Options:
[-f] [-nocr] [-nocrlf] [-UnicodeText]
-decode
Decodes a Base64-encoded file.
certutil [options] -decode InFile OutFile
Options:
[-f]
-encode
Encodes a file to Base64.
certutil [options] -encode InFile OutFile
Options:
[-f] [-unicodetext]
-deny
Denies a pending request.
certutil [options] -deny RequestId
Options:
[-config Machine\CAName]
-resubmit
Resubmits a pending request.
certutil [options] -resubmit RequestId
Options:
[-config Machine\CAName]
-setattributes
Sets attributes for a pending certificate request.
certutil [options] -setattributes RequestId AttributeString
Where:
- RequestId is the numeric Request ID for the pending request.
- AttributeString is the request attribute name and value pairs.
Options:
[-config Machine\CAName]
Remarks
- Names and values must be colon separated, while multiple names and value pairs must be newline separated. For example:
CertificateTemplate:User\nEMail:User@Domain.com
where the\n
sequence is converted to a newline separator.
-setextension
Set an extension for a pending certificate request.
certutil [options] -setextension RequestId ExtensionName Flags {Long | Date | String | @InFile}
Where:
- requestID is the numeric Request ID for the pending request.
- ExtensionName is the ObjectId string for the extension.
- Flags sets the priority of the extension.
0
is recommended, while1
sets the extension to critical,2
disables the extension, and3
does both.
Options:
[-config Machine\CAName]
Remarks
- If the last parameter is numeric, it's taken as a Long.
- If the last parameter can be parsed as a date, it's taken as a Date.
- If the last parameter starts with
\@
, the rest of the token is taken as the filename with binary data or an ascii-text hex dump. - If the last parameter is anything else, it's taken as a String.
-revoke
Revokes a certificate.
certutil [options] -revoke SerialNumber [Reason]
Where:
- SerialNumber is a comma-separated list of certificate serial numbers to revoke.
- Reason is the numeric or symbolic representation of the revocation reason, including:
- 0. CRL_REASON_UNSPECIFIED - Unspecified (default)
- 1. CRL_REASON_KEY_COMPROMISE - Key compromise
- 2. CRL_REASON_CA_COMPROMISE - Certificate Authority compromise
- 3. CRL_REASON_AFFILIATION_CHANGED - Affiliation changed
- 4. CRL_REASON_SUPERSEDED - Superseded
- 5. CRL_REASON_CESSATION_OF_OPERATION - Cessation of operation
- 6. CRL_REASON_CERTIFICATE_HOLD - Certificate hold
- 8. CRL_REASON_REMOVE_FROM_CRL - Remove from CRL
- 9: CRL_REASON_PRIVILEGE_WITHDRAWN - Privilege withdrawn
- 10: CRL_REASON_AA_COMPROMISE - AA compromise
- -1. Unrevoke - Unrevokes
Options:
[-config Machine\CAName]
-isvalid
Displays the disposition of the current certificate.
certutil [options] -isvalid SerialNumber | CertHash
Options:
[-config Machine\CAName]
-getconfig
Gets the default configuration string.
certutil [options] -getconfig
Options:
[-idispatch] [-config Machine\CAName]
-getconfig2
Gets the default configuration string via ICertGetConfig.
certutil [options] -getconfig2
Options:
[-idispatch]
-getconfig3
Gets configuration via ICertConfig.
certutil [options] -getconfig3
Options:
[-idispatch]
-ping
Attempts to contact the Active Directory Certificate Services Request interface.
certutil [options] -ping [MaxSecondsToWait | CAMachineList]
Where:
- CAMachineList is a comma-separated list of CA machine names. For a single machine, use a terminating comma. This option also displays the site cost for each CA machine.
Options:
[-config Machine\CAName] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName UserName] [-p Password]
-pingadmin
Attempts to contact the Active Directory Certificate Services Admin interface.
certutil [options] -pingadmin
Options:
[-config Machine\CAName]
-CAInfo
Displays information about the certification authority.
certutil [options] -CAInfo [InfoName [Index | ErrorCode]]
Where:
- InfoName indicates the CA property to display, based on the following infoname argument syntax:
- * - Displays all properties
- ads - Advanced Server
- aia [Index] - AIA URLs
- cdp [Index] - CDP URLs
- cert [Index] - CA cert
- certchain [Index] - CA cert chain
- certcount - CA cert count
- certcrlchain [Index] - CA cert chain with CRLs
- certstate [Index] - CA cert
- certstatuscode [Index] - CA cert verify status
- certversion [Index] - CA cert version
- CRL [Index] - Base CRL
- crlstate [Index] - CRL
- crlstatus [Index] - CRL Publish Status
- cross- [Index] - Backward cross cert
- cross+ [Index] - Forward cross cert
- crossstate- [Index] - Backward cross cert
- crossstate+ [Index] - Forward cross cert
- deltacrl [Index] - Delta CRL
- deltacrlstatus [Index] - Delta CRL Publish Status
- dns - DNS Name
- dsname - Sanitized CA short name (DS name)
- error1 ErrorCode - Error message text
- error2 ErrorCode - Error message text and error code
- exit [Index] - Exit module description
- exitcount - Exit module count
- file - File version
- info - CA info
- kra [Index] - KRA cert
- kracount - KRA cert count
- krastate [Index] - KRA cert
- kraused - KRA cert used count
- localename - CA locale name
- name - CA name
- ocsp [Index] - OCSP URLs
- parent - Parent CA
- policy - Policy module description
- product - Product version
- propidmax - Maximum CA PropId
- role - Role Separation
- sanitizedname - Sanitized CA name
- sharedfolder - Shared folder
- subjecttemplateoids - Subject Template OIDs
- templates - Templates
- type - CA type
- xchg [Index] - CA exchange cert
- xchgchain [Index] - CA exchange cert chain
- xchgcount - CA exchange cert count
- xchgcrlchain [Index] - CA exchange cert chain with CRLs
- index is the optional zero-based property index.
- errorcode is the numeric error code.
Options:
[-f] [-split] [-config Machine\CAName]
-CAPropInfo
Displays CA Property Type information.
certutil [options] -CAInfo [InfoName [Index | ErrorCode]]
Options:
[-idispatch] [-v1] [-admin] [-config Machine\CAName]
-ca.cert
Retrieves the certificate for the certification authority.
certutil [options] -ca.cert OutCACertFile [Index]
Where:
- OutCACertFile is the output file.
- Index is the CA certificate renewal index (defaults to most recent).
Options:
[-f] [-split] [-config Machine\CAName]
-ca.chain
Retrieves the certificate chain for the certification authority.
certutil [options] -ca.chain OutCACertChainFile [Index]
Where:
- OutCACertChainFile is the output file.
- Index is the CA certificate renewal index (defaults to most recent).
Options:
[-f] [-split] [-config Machine\CAName]
-GetCRL
Gets a certificate revocation list (CRL).
certutil [options] -GetCRL OutFile [Index] [delta]
Where:
- Index is the CRL index or key index (defaults to CRL for most recent key).
- delta is the delta CRL (default is base CRL).
Options:
[-f] [-split] [-config Machine\CAName]
-CRL
Publishes new certificate revocation lists (CRLs) or delta CRLs.
certutil [options] -CRL [dd:hh | republish] [delta]
Where:
- dd:hh is the new CRL validity period in days and hours.
- republish republishes the most recent CRLs.
- delta publishes the delta CRLs only (default is base and delta CRLs).
Options:
[-split] [-config Machine\CAName]
-shutdown
Shuts down the Active Directory Certificate Services.
certutil [options] -shutdown
Options:
[-config Machine\CAName]
-installCert
Installs a certification authority certificate.
certutil [options] -installCert [CACertFile]
Options:
[-f] [-silent] [-config Machine\CAName]
-renewCert
Renews a certification authority certificate.
certutil [options] -renewCert [ReuseKeys] [Machine\ParentCAName]
Options:
[-f] [-silent] [-config Machine\CAName]
- Use
-f
to ignore an outstanding renewal request, and to generate a new request.
-schema
Dumps the schema for the certificate.
certutil [options] -schema [Ext | Attrib | CRL]
Where:
- The command defaults to the Request and Certificate table.
- Ext is the extension table.
- Attribute is the attribute table.
- CRL is the CRL table.
Options:
[-split] [-config Machine\CAName]
-view
Dumps the certificate view.
certutil [options] -view [Queue | Log | LogFail | Revoked | Ext | Attrib | CRL] [csv]
Where:
- Queue dumps a specific request queue.
- Log dumps the issued or revoked certificates, plus any failed requests.
- LogFail dumps the failed requests.
- Revoked dumps the revoked certificates.
- Ext dumps the extension table.
- Attrib dumps the attribute table.
- CRL dumps the CRL table.
- csv provides the output using comma-separated values.
Options:
[-silent] [-split] [-config Machine\CAName] [-restrict RestrictionList] [-out ColumnList]
Remarks
- To display the StatusCode column for all entries, type
-out StatusCode
- To display all columns for the last entry, type:
-restrict RequestId==$
- To display the RequestId and Disposition for three requests, type:
-restrict requestID>=37,requestID<40 -out requestID,disposition
- To display Row IDs Row IDs and CRL numbers for all Base CRLs, type:
-restrict crlminbase=0 -out crlrowID,crlnumber crl
- To display Base CRL number 3, type:
-v -restrict crlminbase=0,crlnumber=3 -out crlrawcrl crl
- To display the entire CRL table, type:
CRL
- Use
Date[+|-dd:hh]
for date restrictions. - Use
now+dd:hh
for a date relative to the current time. - Templates contain Extended Key Usages (EKUs), which are object identifiers (OIDs) that describe how the certificate is used. Certificates don't always include template common names or display names, but they always contain the template EKUs. You can extract the EKUs for a specific certificate template from Active Directory and then restrict views based on that extension.
-db
Dumps the raw database.
certutil [options] -db
Options:
[-config Machine\CAName] [-restrict RestrictionList] [-out ColumnList]
-deleterow
Deletes a row from the server database.
certutil [options] -deleterow RowId | Date [Request | Cert | Ext | Attrib | CRL]
Where:
- Request deletes the failed and pending requests, based on submission date.
- Cert deletes the expired and revoked certificates, based on expiration date.
- Ext deletes the extension table.
- Attrib deletes the attribute table.
- CRL deletes the CRL table.
Options:
[-f] [-config Machine\CAName]
Examples
- To delete failed and pending requests submitted by January 22, 2001, type:
1/22/2001 request
- To delete all certificates that expired by January 22, 2001, type:
1/22/2001 cert
- To delete the certificate row, attributes, and extensions for RequestID 37, type:
37
- To delete CRLs that expired by January 22, 2001, type:
1/22/2001 crl
Note
Date expects the format mm/dd/yyyy
rather then dd/mm/yyyy
, for example 1/22/2001
rather than 22/1/2001
for January 22, 2001. If your server isn't configured with US regional settings, using the Date argument might produce unexpected results.
-backup
Backs up the Active Directory Certificate Services.
certutil [options] -backup BackupDirectory [Incremental] [KeepLog]
Where:
- BackupDirectory is the directory to store the backed up data.
- Incremental performs an incremental backup only (default is full backup).
- KeepLog preserves the database log files (default is to truncate log files).
Options:
[-f] [-config Machine\CAName] [-p Password] [-ProtectTo SAMNameAndSIDList]
-backupDB
Backs up the Active Directory Certificate Services database.
certutil [options] -backupdb BackupDirectory [Incremental] [KeepLog]
Where:
- BackupDirectory is the directory to store the backed up database files.
- Incremental performs an incremental backup only (default is full backup).
- KeepLog preserves the database log files (default is to truncate log files).
Options:
[-f] [-config Machine\CAName]
-backupkey
Backs up the Active Directory Certificate Services certificate and private key.
certutil [options] -backupkey BackupDirectory
Where:
- BackupDirectory is the directory to store the backed up PFX file.
Options:
[-f] [-config Machine\CAName] [-p password] [-ProtectTo SAMNameAndSIDList] [-t Timeout]
-restore
Restores the Active Directory Certificate Services.
certutil [options] -restore BackupDirectory
Where:
- BackupDirectory is the directory containing the data to be restored.
Options:
[-f] [-config Machine\CAName] [-p password]
-restoredb
Restores the Active Directory Certificate Services database.
certutil [options] -restoredb BackupDirectory
Where:
- BackupDirectory is the directory containing the database files to be restored.
Options:
[-f] [-config Machine\CAName]
-restorekey
Restores the Active Directory Certificate Services certificate and private key.
certutil [options] -restorekey BackupDirectory | PFXFile
Where:
- BackupDirectory is the directory containing PFX file to be restored.
- PFXFile is the PFX file to be restored.
Options:
[-f] [-config Machine\CAName] [-p password]
-exportPFX
Exports the certificates and private keys. For more information, see the -store
parameter in this article.
certutil [options] -exportPFX [CertificateStoreName] CertId PFXFile [Modifiers]
Where:
- CertificateStoreName is the name of the certificate store.
- CertId is the certificate or CRL match token.
- PFXFile is the PFX file to be exported.
- Modifiers are the comma-separated list, which can include one or more of the following:
- CryptoAlgorithm= specifies the cryptographic algorithm to use for encrypting the PFX file, such as
TripleDES-Sha1
orAes256-Sha256
. - EncryptCert - Encrypts the private key associated with the certificate with a password.
- ExportParameters -Exports the private key parameters in addition to the certificate and private key.
- ExtendedProperties - Includes all extended properties associated with the certificate in the output file.
- NoEncryptCert - Exports the private key without encrypting it.
- NoChain - Doesn't import the certificate chain.
- NoRoot - Doesn't import the root certificate.
- CryptoAlgorithm= specifies the cryptographic algorithm to use for encrypting the PFX file, such as
-importPFX
Imports the certificates and private keys. For more information, see the -store
parameter in this article.
certutil [options] -importPFX [CertificateStoreName] PFXFile [Modifiers]
Where:
- CertificateStoreName is the name of the certificate store.
- PFXFile is the PFX file to be imported.
- Modifiers are the comma-separated list, which can include one or more of the following:
- AT_KEYEXCHANGE - Changes the keyspec to key exchange.
- AT_SIGNATURE - Changes the keyspec to signature.
- ExportEncrypted - Exports the private key associated with the certificate with password encryption.
- FriendlyName= - Specifies a friendly name for the imported certificate.
- KeyDescription= - Specifies a description for the private key associated with the imported certificate.
- KeyFriendlyName= - Specifies a friendly name for the private key associated with the imported certificate.
- NoCert - Doesn't import the certificate.
- NoChain - Doesn't import the certificate chain.
- NoExport - Makes the private key non-exportable.
- NoProtect - Doesn't password protect keys by using a password.
- NoRoot - Doesn't import the root certificate.
- Pkcs8 - Uses PKCS8 format for the private key in the PFX file.
- Protect - Protects keys by using a password.
- ProtectHigh - Specifies that a high-security password must be associated with the private key.
- VSM - Stores the private key associated with the imported certificate in the Virtual Smart Card (VSC) container.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-p Password] [-csp Provider]
Remarks
- Defaults to personal machine store.
-dynamicfilelist
Displays a dynamic file list.
certutil [options] -dynamicfilelist
Options:
[-config Machine\CAName]
-databaselocations
Displays database locations.
certutil [options] -databaselocations
Options:
[-config Machine\CAName]
-hashfile
Generates and displays a cryptographic hash over a file.
certutil [options] -hashfile InFile [HashAlgorithm]
-store
Dumps the certificate store.
certutil [options] -store [CertificateStoreName [CertId [OutputFile]]]
Where:
CertificateStoreName is the certificate store name. For example:
My, CA (default), Root,
ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?one?objectClass=certificationAuthority (View Root Certificates)
ldap:///CN=CAName,CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?base?objectClass=certificationAuthority (Modify Root Certificates)
ldap:///CN=CAName,CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint (View CRLs)
ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?base?objectClass=certificationAuthority (Enterprise CA Certificates)
ldap: (AD computer object certificates)
-user ldap: (AD user object certificates)
CertId is the certificate or CRL match token. This ID can be a:
- Serial number
- SHA-1 certificate
- CRL, CTL or public key hash
- Numeric cert index (0, 1, and so on)
- Numeric CRL index (.0, .1, and so on)
- Numeric CTL index (..0, ..1, and so on)
- Public key
- Signature or extension ObjectId
- Certificate subject Common Name
- E-mail address
- UPN or DNS name
- Key container name or CSP name
- Template name or ObjectId
- EKU or Application Policies ObjectId
- CRL issuer Common Name.
Many of these identifiers might result in multiple matches.
- OutputFile is the file used to save the matching certificates.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-split] [-dc DCName]
- The
-user
option accesses a user store instead of a machine store. - The
-enterprise
option accesses a machine enterprise store. - The
-service
option accesses a machine service store. - The
-grouppolicy
option accesses a machine group policy store.
For example:
-enterprise NTAuth
-enterprise Root 37
-user My 26e0aaaf000000000004
CA .11
Note
Performance issues are observed when using the -store
parameter given these two aspects:
- When the number of certificates in the store exceeds 10.
- When a CertId is specified, it's used to match all the listed types for every certificate. For example, if a serial number is provided, it will also attempt to match all other listed types.
If you are concerned about performance issues, PowerShell commands are recommended where it will only match the specified certificate type.
-enumstore
Enumerates the certificate stores.
certutil [options] -enumstore [\\MachineName]
Where:
- MachineName is the remote machine name.
Options:
[-enterprise] [-user] [-grouppolicy]
-addstore
Adds a certificate to the store. For more information, see the -store
parameter in this article.
certutil [options] -addstore CertificateStoreName InFile
Where:
- CertificateStoreName is the certificate store name.
- InFile is the certificate or CRL file you want to add to the store.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-dc DCName]
-delstore
Deletes a certificate from the store. For more information, see the -store
parameter in this article.
certutil [options] -delstore CertificateStoreName certID
Where:
- CertificateStoreName is the certificate store name.
- CertId is the certificate or CRL match token.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-dc DCName]
-verifystore
Verifies a certificate in the store. For more information, see the -store
parameter in this article.
certutil [options] -verifystore CertificateStoreName [CertId]
Where:
- CertificateStoreName is the certificate store name.
- CertId is the certificate or CRL match token.
Options:
[-Enterprise] [-user] [-GroupPolicy] [-Silent] [-split] [-dc DCName] [-t Timeout]
-repairstore
Repairs a key association or update certificate properties or the key security descriptor. For more information, see the -store
parameter in this article.
certutil [options] -repairstore CertificateStoreName CertIdList [PropertyInfFile | SDDLSecurityDescriptor]
Where:
CertificateStoreName is the certificate store name.
CertIdList is the comma-separated list of certificate or CRL match tokens. For more information, see the
-store
CertId description in this article.PropertyInfFile is the INF file containing external properties, including:
[Properties] 19 = Empty ; Add archived property, OR: 19 = ; Remove archived property 11 = {text}Friendly Name ; Add friendly name property 127 = {hex} ; Add custom hexadecimal property _continue_ = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f _continue_ = 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 2 = {text} ; Add Key Provider Information property _continue_ = Container=Container Name& _continue_ = Provider=Microsoft Strong Cryptographic Provider& _continue_ = ProviderType=1& _continue_ = Flags=0& _continue_ = KeySpec=2 9 = {text} ; Add Enhanced Key Usage property _continue_ = 1.3.6.1.5.5.7.3.2, _continue_ = 1.3.6.1.5.5.7.3.1,
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-split] [-csp Provider]
-viewstore
Dumps the certificates store. For more information, see the -store
parameter in this article.
certutil [options] -viewstore [CertificateStoreName [CertId [OutputFile]]]
Where:
CertificateStoreName is the certificate store name. For example:
My, CA (default), Root,
ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?one?objectClass=certificationAuthority (View Root Certificates)
ldap:///CN=CAName,CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?base?objectClass=certificationAuthority (Modify Root Certificates)
ldap:///CN=CAName,CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint (View CRLs)
ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?base?objectClass=certificationAuthority (Enterprise CA Certificates)
ldap: (AD computer object certificates)
-user ldap: (AD user object certificates)
CertId is the certificate or CRL match token. This can be a:
- Serial number
- SHA-1 certificate
- CRL, CTL or public key hash
- Numeric cert index (0, 1, and so on)
- Numeric CRL index (.0, .1, and so on)
- Numeric CTL index (..0, ..1, and so on)
- Public key
- Signature or extension ObjectId
- Certificate subject Common Name
- E-mail address
- UPN or DNS name
- Key container name or CSP name
- Template name or ObjectId
- EKU or Application Policies ObjectId
- CRL issuer Common Name.
Many of these may result in multiple matches.
- OutputFile is the file used to save the matching certificates.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-dc DCName]
- The
-user
option accesses a user store instead of a machine store. - The
-enterprise
option accesses a machine enterprise store. - The
-service
option accesses a machine service store. - The
-grouppolicy
option accesses a machine group policy store.
For example:
-enterprise NTAuth
-enterprise Root 37
-user My 26e0aaaf000000000004
CA .11
-viewdelstore
Deletes a certificate from the store.
certutil [options] -viewdelstore [CertificateStoreName [CertId [OutputFile]]]
Where:
CertificateStoreName is the certificate store name. For example:
My, CA (default), Root,
ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?one?objectClass=certificationAuthority (View Root Certificates)
ldap:///CN=CAName,CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?base?objectClass=certificationAuthority (Modify Root Certificates)
ldap:///CN=CAName,CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint (View CRLs)
ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=cpandl,DC=com?cACertificate?base?objectClass=certificationAuthority (Enterprise CA Certificates)
ldap: (AD computer object certificates)
-user ldap: (AD user object certificates)
CertId is the certificate or CRL match token. This can be a:
- Serial number
- SHA-1 certificate
- CRL, CTL or public key hash
- Numeric cert index (0, 1, and so on)
- Numeric CRL index (.0, .1, and so on)
- Numeric CTL index (..0, ..1, and so on)
- Public key
- Signature or extension ObjectId
- Certificate subject Common Name
- E-mail address
- UPN or DNS name
- Key container name or CSP name
- Template name or ObjectId
- EKU or Application Policies ObjectId
- CRL issuer Common Name. Many of these may result in multiple matches.
OutputFile is the file used to save the matching certificates.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-dc DCName]
- The
-user
option accesses a user store instead of a machine store. - The
-enterprise
option accesses a machine enterprise store. - The
-service
option accesses a machine service store. - The
-grouppolicy
option accesses a machine group policy store.
For example:
-enterprise NTAuth
-enterprise Root 37
-user My 26e0aaaf000000000004
CA .11
-UI
Invokes the certutil interface.
certutil [options] -UI File [import]
-TPMInfo
Displays Trusted Platform Module Information.
certutil [options] -TPMInfo
Options:
[-f] [-Silent] [-split]
-attest
Specifies that the certificate request file should be attested.
certutil [options] -attest RequestFile
Options:
[-user] [-Silent] [-split]
-getcert
Selects a certificate from a selection UI.
certutil [options] [ObjectId | ERA | KRA [CommonName]]
Options:
[-Silent] [-split]
-ds
Displays directory service (DS) distinguished names (DNs).
certutil [options] -ds [CommonName]
Options:
[-f] [-user] [-split] [-dc DCName]
-dsDel
Deletes DS DNs.
certutil [options] -dsDel [CommonName]
Options:
[-user] [-split] [-dc DCName]
-dsPublish
Publishes a certificate or certificate revocation list (CRL) to Active Directory.
certutil [options] -dspublish CertFile [NTAuthCA | RootCA | SubCA | CrossCA | KRA | User | Machine]
certutil [options] -dspublish CRLfile [DSCDPContainer [DSCDPCN]]
Where:
- CertFile is the name of the certificate file to publish.
- NTAuthCA publishes the certificate to the DS Enterprise store.
- RootCA publishes the certificate to the DS Trusted Root store.
- SubCA publishes the CA certificate to the DS CA object.
- CrossCA publishes the cross-certificate to the DS CA object.
- KRA publishes the certificate to the DS Key Recovery Agent object.
- User publishes the certificate to the User DS object.
- Machine publishes the certificate to the Machine DS object.
- CRLfile is the name of the CRL file to publish.
- DSCDPContainer is the DS CDP container CN, usually the CA machine name.
- DSCDPCN is the DS CDP object CN based on the sanitized CA short name and key index.
Options:
[-f] [-user] [-dc DCName]
- Use
-f
to create a new DS object.
-dsCert
Displays DS certificates.
certutil [options] -dsCert [FullDSDN] | [CertId [OutFile]]
Options:
[-Enterprise] [-user] [-config Machine\CAName] [-dc DCName]
-dsCRL
Displays DS CRLs.
certutil [options] -dsCRL [FullDSDN] | [CRLIndex [OutFile]]
Options:
[-idispatch] [-Enterprise] [-user] [-config Machine\CAName] [-dc DCName]
-dsDeltaCRL
Displays DS delta CRLs.
certutil [options] -dsDeltaCRL [FullDSDN] | [CRLIndex [OutFile]]
Options:
[-Enterprise] [-user] [-config Machine\CAName] [-dc DCName]
-dsTemplate
Displays DS template attributes.
certutil [options] -dsTemplate [Template]
Options:
[Silent] [-dc DCName]
-dsAddTemplate
Adds DS templates.
certutil [options] -dsAddTemplate TemplateInfFile
Options:
[-dc DCName]
-ADTemplate
Displays Active Directory templates.
certutil [options] -ADTemplate [Template]
Options:
[-f] [-user] [-ut] [-mt] [-dc DCName]
-Template
Displays the certificate enrollment policy templates.
Options:
certutil [options] -Template [Template]
Options:
[-f] [-user] [-Silent] [-PolicyServer URLOrId] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName UserName] [-p Password]
-TemplateCAs
Displays the certification authorities (CAs) for a certificate template.
certutil [options] -TemplateCAs Template
Options:
[-f] [-user] [-dc DCName]
-CATemplates
Displays templates for the Certificate Authority.
certutil [options] -CATemplates [Template]
Options:
[-f] [-user] [-ut] [-mt] [-config Machine\CAName] [-dc DCName]
-SetCATemplates
Sets the certificate templates that the Certificate Authority can issue.
certutil [options] -SetCATemplates [+ | -] TemplateList
Where:
- The
+
sign adds certificate templates to the CA's available template list. - The
-
sign removes certificate templates from the CA's available template list.
-SetCASites
Manages site names, including setting, verifying, and deleting Certificate Authority site names.
certutil [options] -SetCASites [set] [SiteName]
certutil [options] -SetCASites verify [SiteName]
certutil [options] -SetCASites delete
Where:
- SiteName is allowed only when targeting a single Certificate Authority.
Options:
[-f] [-config Machine\CAName] [-dc DCName]
Remarks
- The
-config
option targets a single Certificate Authority (default is all CAs). - The
-f
option can be used to override validation errors for the specified SiteName or to delete all CA site names.
Note
For more information about configuring CAs for Active Directory Domain Services (AD DS) site awareness, see AD DS Site Awareness for AD CS and PKI clients.
-enrollmentServerURL
Displays, adds, or deletes enrollment server URLs associated with a CA.
certutil [options] -enrollmentServerURL [URL AuthenticationType [Priority] [Modifiers]]
certutil [options] -enrollmentserverURL URL delete
Where:
- AuthenticationType specifies one of the following client authentication methods while adding a URL:
- Kerberos - Use Kerberos SSL credentials.
- UserName - Use a named account for SSL credentials.
- ClientCertificate - Use X.509 Certificate SSL credentials.
- Anonymous - Use anonymous SSL credentials.
- delete deletes the specified URL associated with the CA.
- Priority defaults to
1
if not specified when adding a URL. - Modifiers is a comma-separated list, which includes one or more of the following:
- AllowRenewalsOnly only renewal requests can be submitted to this CA via this URL.
- AllowKeyBasedRenewal allows use of a certificate that has no associated account in the AD. This applies only with ClientCertificate and AllowRenewalsOnly mode.
Options:
[-config Machine\CAName] [-dc DCName]
-ADCA
Displays the Active Directory Certificate Authorities.
certutil [options] -ADCA [CAName]
Options:
[-f] [-split] [-dc DCName]
-CA
Displays the enrollment policy Certificate Authorities.
certutil [options] -CA [CAName | TemplateName]
Options:
[-f] [-user] [-Silent] [-split] [-PolicyServer URLOrId] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName UserName] [-p Password]
-Policy
Displays the enrollment policy.
certutil [options] -Policy
Options:
[-f] [-user] [-Silent] [-split] [-PolicyServer URLOrId] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName UserName] [-p Password]
-PolicyCache
Displays or deletes enrollment policy cache entries.
certutil [options] -PolicyCache [delete]
Where:
- delete deletes the policy server cache entries.
- -f deletes all cache entries
Options:
[-f] [-user] [-policyserver URLorID]
-CredStore
Displays, adds, or deletes Credential Store entries.
certutil [options] -CredStore [URL]
certutil [options] -CredStore URL add
certutil [options] -CredStore URL delete
Where:
- URL is the target URL. You can also use
*
to match all entries orhttps://machine*
to match a URL prefix. - add adds a credential store entry. Using this option also requires the use of SSL credentials.
- delete deletes credential store entries.
- -f overwrites a single entry or deletes multiple entries.
Options:
[-f] [-user] [-Silent] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName UserName] [-p Password]
-InstallDefaultTemplates
Installs the default certificate templates.
certutil [options] -InstallDefaultTemplates
Options:
[-dc DCName]
-URL
Verifies certificate or CRL URLs.
certutil [options] -URL InFile | URL
Options:
[-f] [-split]
-URLCache
Displays or deletes URL cache entries.
certutil [options] -URLcache [URL | CRL | * [delete]]
Where:
- URL is the cached URL.
- CRL runs on all cached CRL URLs only.
- * operates on all cached URLs.
- delete deletes relevant URLs from the current user's local cache.
- -f forces fetching a specific URL and updating the cache.
Options:
[-f] [-split]
-pulse
Pulses an autoenrollment event or NGC task.
certutil [options] -pulse [TaskName [SRKThumbprint]]
Where:
- TaskName is the task to trigger.
- Pregen is the NGC Key pregen task.
- AIKEnroll is the NGC AIK certificate enrollment task. (Defaults to the autoenrollment event).
- SRKThumbprint is the thumbprint of the Storage Root Key
- Modifiers:
- Pregen
- PregenDelay
- AIKEnroll
- CryptoPolicy
- NgcPregenKey
- DIMSRoam
Options:
[-user]
-MachineInfo
Displays information about the Active Directory machine object.
certutil [options] -MachineInfo DomainName\MachineName$
-DCInfo
Displays information about the domain controller. The default displays DC certificates without verification.
certutil [options] -DCInfo [Domain] [Verify | DeleteBad | DeleteAll]
Modifiers:
- Verify
- DeleteBad
- DeleteAll
Options:
[-f] [-user] [-urlfetch] [-dc DCName] [-t Timeout]
Tip
The ability to specify an Active Directory Domain Services (AD DS) domain [Domain] and to specify a domain controller (-dc) was added in Windows Server 2012. To successfully run the command, you must use an account that is a member of Domain Admins or Enterprise Admins. The behavior modifications of this command are as follows:
- If a domain is not specified and a specific domain controller is not specified, this option returns a list of domain controllers to process from the default domain controller.
- If a domain is not specified, but a domain controller is specified, a report of the certificates on the specified domain controller is generated.
- If a domain is specified, but a domain controller is not specified, a list of domain controllers is generated along with reports on the certificates for each domain controller in the list.
- If the domain and domain controller are specified, a list of domain controllers is generated from the targeted domain controller. A report of the certificates for each domain controller in the list is also generated.
For example, assume there is a domain named CPANDL with a domain controller named CPANDL-DC1. You can run the following command to a retrieve a list of domain controllers and their certificates from CPANDL-DC1: certutil -dc cpandl-dc1 -DCInfo cpandl
.
-EntInfo
Displays information about an enterprise Certificate Authority.
certutil [options] -EntInfo DomainName\MachineName$
Options:
[-f] [-user]
-TCAInfo
Displays information about the Certificate Authority.
certutil [options] -TCAInfo [DomainDN | -]
Options:
[-f] [-Enterprise] [-user] [-urlfetch] [-dc DCName] [-t Timeout]
-SCInfo
Displays information about the smart card.
certutil [options] -scinfo [ReaderName [CRYPT_DELETEKEYSET]]
Where:
- CRYPT_DELETEKEYSET deletes all keys on the smart card.
Options:
[-Silent] [-split] [-urlfetch] [-t Timeout]
-SCRoots
Manages smart card root certificates.
certutil [options] -SCRoots update [+][InputRootFile] [ReaderName]
certutil [options] -SCRoots save @OutputRootFile [ReaderName]
certutil [options] -SCRoots view [InputRootFile | ReaderName]
certutil [options] -SCRoots delete [ReaderName]
Options:
[-f] [-split] [-p Password]
-key
Lists the keys stored in a key container.
certutil [options] -key [KeyContainerName | -]
Where:
- KeyContainerName is the key container name for the key to verify. This option defaults to machine keys. To switch to user keys, use
-user
. - Using the
-
sign refers to using the default key container.
Options:
[-user] [-Silent] [-split] [-csp Provider] [-Location AlternateStorageLocation]
-delkey
Deletes the named key container.
certutil [options] -delkey KeyContainerName
Options:
[-user] [-Silent] [-split] [-csp Provider] [-Location AlternateStorageLocation]
-DeleteHelloContainer
Deletes the Windows Hello container, removing all associated credentials that are stored on the device, including any WebAuthn and FIDO credentials.
Users need to sign out after using this option for it to complete.
certutil [options] -DeleteHelloContainer
-verifykeys
Verifies a public or private key set.
certutil [options] -verifykeys [KeyContainerName CACertFile]
Where:
- KeyContainerName is the key container name for the key to verify. This option defaults to machine keys. To switch to user keys, use
-user
. - CACertFile signs or encrypts certificate files.
Options:
[-f] [-user] [-Silent] [-config Machine\CAName]
Remarks
- If no arguments are specified, each signing CA certificate is verified against its private key.
- This operation can only be performed against a local CA or local keys.
-verify
Verifies a certificate, certificate revocation list (CRL), or certificate chain.
certutil [options] -verify CertFile [ApplicationPolicyList | - [IssuancePolicyList]] [Modifiers]
certutil [options] -verify CertFile [CACertFile [CrossedCACertFile]]
certutil [options] -verify CRLFile CACertFile [IssuedCertFile]
certutil [options] -verify CRLFile CACertFile [DeltaCRLFile]
Where:
- CertFile is the name of the certificate to verify.
- ApplicationPolicyList is the optional comma-separated list of required Application Policy ObjectIds.
- IssuancePolicyList is the optional comma-separated list of required Issuance Policy ObjectIds.
- CACertFile is the optional issuing CA certificate to verify against.
- CrossedCACertFile is the optional certificate cross-certified by CertFile.
- CRLFile is the CRL file used to verify the CACertFile.
- IssuedCertFile is the optional issued certificate covered by the CRLfile.
- DeltaCRLFile is the optional delta CRL file.
- Modifiers:
- Strong - Strong signature verification
- MSRoot - Must chain to a Microsoft root
- MSTestRoot - Must chain to a Microsoft test root
- AppRoot - Must chain to a Microsoft application root
- EV - Enforce Extended Validation Policy
Options:
[-f] [-Enterprise] [-user] [-Silent] [-split] [-urlfetch] [-t Timeout] [-sslpolicy ServerName]
Remarks
- Using ApplicationPolicyList restricts chain building to only chains valid for the specified Application Policies.
- Using IssuancePolicyList restricts chain building to only chains valid for the specified Issuance Policies.
- Using CACertFile verifies the fields in the file against CertFile or CRLfile.
- If CACertFile isn't specified, the full chain is built and verified against CertFile.
- If CACertFile and CrossedCACertFile are both specified, the fields in both files are verified against CertFile.
- Using IssuedCertFile verifies the fields in the file against CRLfile.
- Using DeltaCRLFile verifies the fields in the file against CertFile.
-verifyCTL
Verifies the AuthRoot or Disallowed Certificates CTL.
certutil [options] -verifyCTL CTLobject [CertDir] [CertFile]
Where:
CTLObject identifies the CTL to verify, including:
- AuthRootWU reads the AuthRoot CAB and matching certificates from the URL cache. Use
-f
to download from Windows Update instead. - DisallowedWU reads the Disallowed Certificates CAB and disallowed certificate store file from the URL cache. Use
-f
to download from Windows Update instead.- PinRulesWU reads the PinRules CAB from the URL cache. Use
-f
to download from Windows Update instead.
- PinRulesWU reads the PinRules CAB from the URL cache. Use
- AuthRoot reads the registry-cached AuthRoot CTL. Use with
-f
and an untrusted CertFile to force the registry cached AuthRoot and Disallowed Certificate CTLs to update. - Disallowed reads the registry-cached Disallowed Certificates CTL. Use with
-f
and an untrusted CertFile to force the registry cached AuthRoot and Disallowed Certificate CTLs to update.- PinRules reads the registry cached PinRules CTL. Using
-f
has the same behavior as with PinRulesWU.
- PinRules reads the registry cached PinRules CTL. Using
- CTLFileName specifies the file or http path to the CTL or CAB file.
- AuthRootWU reads the AuthRoot CAB and matching certificates from the URL cache. Use
CertDir specifies the folder containing certificates matching the CTL entries. Defaults to the same folder or website as the CTLobject. Using an http folder path requires a path separator at the end. If you don't specify AuthRoot or Disallowed, multiple locations are searched for matching certificates, including local certificate stores, crypt32.dll resources and the local URL cache. Use
-f
to download from Windows Update, as needed.CertFile specifies the certificate(s) to verify. Certificates are matched against CTL entries, displaying the results. This option suppresses most of the default output.
Options:
[-f] [-user] [-split]
-syncWithWU
Syncs certificates with Windows Update.
certutil [options] -syncWithWU DestinationDir
Where:
- DestinationDir is the specified directory.
- f forces an overwrite.
- Unicode writes redirected output in Unicode.
- gmt displays times as GMT.
- seconds displays times with seconds and milliseconds.
- v is a verbose operation.
- PIN is the Smart Card PIN.
- WELL_KNOWN_SID_TYPE is a numeric SID:
- 22 - Local System
- 23 - Local Service
- 24 - Network Service
Remarks
The following files are downloaded by using the automatic update mechanism:
- authrootstl.cab contains the CTLs of non-Microsoft root certificates.
- disallowedcertstl.cab contains the CTLs of untrusted certificates.
- disallowedcert.sst contains the serialized certificate store, including the untrusted certificates.
- thumbprint.crt contains the non-Microsoft root certificates.
For example, certutil -syncWithWU \\server1\PKI\CTLs
.
If you use a nonexistent local path or folder as the destination folder, you see the error:
The system can't find the file specified. 0x80070002 (WIN32: 2 ERROR_FILE_NOT_FOUND)
If you use a nonexistent or unavailable network location as the destination folder, you see the error:
The network name can't be found. 0x80070043 (WIN32: 67 ERROR_BAD_NET_NAME)
If your server can't connect over TCP port 80 to Microsoft Automatic Update servers, you receive the following error:
A connection with the server couldn't be established 0x80072efd (INet: 12029 ERROR_INTERNET_CANNOT_CONNECT)
If your server is unable to reach the Microsoft Automatic Update servers with the DNS name
ctldl.windowsupdate.com
, you receive the following error:The server name or address couldn't be resolved 0x80072ee7 (INet: 12007 ERROR_INTERNET_NAME_NOT_RESOLVED).
If you don't use the
-f
switch, and any of the CTL files already exist in the directory, you receive a file exists error:certutil: -syncWithWU command FAILED: 0x800700b7 (WIN32/HTTP: 183 ERROR_ALREADY_EXISTS) Certutil: Can't create a file when that file already exists.
If there's a change in the trusted root certificates, you see:
Warning! Encountered the following no longer trusted roots: <folder path>\<thumbprint>.crt. Use "-f" option to force the delete of the above ".crt" files. Was "authrootstl.cab" updated? If yes, consider deferring the delete until all clients have been updated.
Options:
[-f] [-Unicode] [-gmt] [-seconds] [-v] [-privatekey] [-pin PIN] [-sid WELL_KNOWN_SID_TYPE]
-generateSSTFromWU
Generates a store file that is synced with Windows Update.
certutil [options] -generateSSTFromWU SSTFile
Where:
- SSTFile is the
.sst
file to be generated that contains the Third Party Roots downloaded from Windows Update.
Options:
[-f] [-split]
-generatePinRulesCTL
Generates a Certificate Trust List (CTL) file that contains a list of pinning rules.
certutil [options] -generatePinRulesCTL XMLFile CTLFile [SSTFile [QueryFilesPrefix]]
Where:
- XMLFile is the input XML file to be parsed.
- CTLFile is the output CTL file to be generated.
- SSTFile is the optional .sst file to be created that contains all of the certificates used for pinning.
- QueryFilesPrefix are optional Domains.csv and Keys.csv files to be created for database query.
- The QueryFilesPrefix string is prepended to each created file.
- The Domains.csv file contains rule name, domain rows.
- The Keys.csv file contains rule name, key SHA256 thumbprint rows.
Options:
[-f]
-downloadOcsp
Downloads the OCSP responses and writes to the directory.
certutil [options] -downloadOcsp CertificateDir OcspDir [ThreadCount] [Modifiers]
Where:
- CertificateDir is the directory of a certificate, store and PFX files.
- OcspDir is the directory to write OCSP responses.
- ThreadCount is the optional maximum number of threads for concurrent downloading. Default is 10.
- Modifiers are comma separated list of one or more of the following:
- DownloadOnce - Downloads once and exits.
- ReadOcsp - Reads from OcspDir instead of writing.
-generateHpkpHeader
Generates the HPKP header using certificates in a specified file or directory.
certutil [options] -generateHpkpHeader CertFileOrDir MaxAge [ReportUri] [Modifiers]
Where:
- CertFileOrDir is the file or directory of certificates, which is the source of pin-sha256.
- MaxAge is the max-age value in seconds.
- ReportUri is the optional report-uri.
- Modifiers are comma separated list of one or more of the following:
- includeSubDomains - Appends the includeSubDomains.
-flushCache
Flushes the specified caches in selected process, such as, lsass.exe.
certutil [options] -flushCache ProcessId CacheMask [Modifiers]
Where:
ProcessId is the numeric ID of a process to flush. Set to 0 to flush all processes where flush is enabled.
CacheMask is the bit mask of caches to be flushed either numeric or the following bits:
- 0: ShowOnly
- 0x01: CERT_WNF_FLUSH_CACHE_REVOCATION
- 0x02: CERT_WNF_FLUSH_CACHE_OFFLINE_URL
- 0x04: CERT_WNF_FLUSH_CACHE_MACHINE_CHAIN_ENGINE
- 0x08: CERT_WNF_FLUSH_CACHE_USER_CHAIN_ENGINES
- 0x10: CERT_WNF_FLUSH_CACHE_SERIAL_CHAIN_CERTS
- 0x20: CERT_WNF_FLUSH_CACHE_SSL_TIME_CERTS
- 0x40: CERT_WNF_FLUSH_CACHE_OCSP_STAPLING
Modifiers are comma separated list of one or more of the following:
- Show - Shows the caches being flushed. Certutil must be explicitly terminated.
-addEccCurve
Adds an ECC Curve.
certutil [options] -addEccCurve [CurveClass:]CurveName CurveParameters [CurveOID] [CurveType]
Where:
CurveClass is the ECC Curve Class type:
- WEIERSTRASS (Default)
- MONTGOMERY
- TWISTED_EDWARDS
CurveName is the ECC Curve name.
CurveParameters are one of the following:
- A certificate filename containing ASN encoded parameters.
- A file containing ASN encoded parameters.
CurveOID is the ECC Curve OID and is one of the following:
- A certificate filename containing an ASN encoded OID.
- An explicit ECC Curve OID.
CurveType is the Schannel ECC NamedCurve point (numeric).
Options:
[-f]
-deleteEccCurve
Deletes the ECC Curve.
certutil [options] -deleteEccCurve CurveName | CurveOID
Where:
- CurveName is the ECC Curve name.
- CurveOID is the ECC Curve OID.
Options:
[-f]
-displayEccCurve
Displays the ECC Curve.
certutil [options] -displayEccCurve [CurveName | CurveOID]
Where:
- CurveName is the ECC Curve name.
- CurveOID is the ECC Curve OID.
Options:
[-f]
-csplist
Lists the cryptographic service providers (CSPs) installed on this machine for cryptographic operations.
certutil [options] -csplist [Algorithm]
Options:
[-user] [-Silent] [-csp Provider]
-csptest
Tests the CSPs installed on this machine.
certutil [options] -csptest [Algorithm]
Options:
[-user] [-Silent] [-csp Provider]
-CNGConfig
Displays CNG cryptographic configuration on this machine.
certutil [options] -CNGConfig
Options:
[-Silent]
-sign
Re-signs a certificate revocation list (CRL) or certificate.
certutil [options] -sign InFileList | SerialNumber | CRL OutFileList [StartDate [+ | -dd:hh] + | -dd:hh] [+SerialNumberList | -SerialNumberList | -ObjectIdList | @ExtensionFile]
certutil [options] -sign InFileList | SerialNumber | CRL OutFileList [#HashAlgorithm] [+AlternateSignatureAlgorithm | -AlternateSignatureAlgorithm]
certutil [options] -sign InFileList OutFileList [Subject:CN=...] [Issuer:hex data]
Where:
InFileList is the comma-separated list of certificate or CRL files to modify and re-sign.
SerialNumber is the serial number of the certificate to create. The validity period and other options can't be present.
CRL creates an empty CRL. The validity period and other options can't be present.
OutFileList is the comma-separated list of modified certificate or CRL output files. The number of files must match infilelist.
StartDate+dd:hh is the new validity period for the certificate or CRL files, including:
- optional date plus
- optional days and hours validity period
If multiple fields are used, use a (+) or (-) separator. Use
now[+dd:hh]
to start at the current time. Usenow-dd:hh+dd:hh
to start at a fixed offset from the current time and a fixed validity period. Usenever
to have no expiration date (for CRLs only).
SerialNumberList is the comma-separated serial number list of the files to add or remove.
ObjectIdList is the comma-separated extension ObjectId list of the files to remove.
@ExtensionFile is the INF file that contains the extensions to update or remove. For example:
[Extensions] 2.5.29.31 = ; Remove CRL Distribution Points extension 2.5.29.15 = {hex} ; Update Key Usage extension _continue_=03 02 01 86
HashAlgorithm is the name of the hash algorithm. This must only be the text preceded by the
#
sign.AlternateSignatureAlgorithm is the alternate signature algorithm specifier.
Options:
[-nullsign] [-f] [-user] [-Silent] [-Cert CertId] [-csp Provider]
Remarks
- Using the minus sign (-) removes serial numbers and extensions.
- Using the plus sign (+) adds serial numbers to a CRL.
- You can use a list to remove both serial numbers and ObjectIds from a CRL at the same time.
- Using the minus sign before AlternateSignatureAlgorithm allows you to use the legacy signature format.
- Using the plus sign allows you to use the alternate signature format.
- If you don't specify AlternateSignatureAlgorithm, the signature format in the certificate or CRL is used.
-vroot
Creates or deletes web virtual roots and file shares.
certutil [options] -vroot [delete]
-vocsproot
Creates or deletes web virtual roots for an OCSP web proxy.
certutil [options] -vocsproot [delete]
-addEnrollmentServer
Adds an Enrollment Server application and application pool if necessary for the specified Certificate Authority. This command doesn't install binaries or packages.
certutil [options] -addEnrollmentServer Kerberos | UserName | ClientCertificate [AllowRenewalsOnly] [AllowKeyBasedRenewal]
Where:
addEnrollmentServer requires you to use an authentication method for the client connection to the Certificate Enrollment Server, including:
- Kerberos uses Kerberos SSL credentials.
- UserName uses named account for SSL credentials.
- ClientCertificate uses X.509 Certificate SSL credentials.
Modifiers:
- AllowRenewalsOnly allows only renewal request submissions to the Certificate Authority through the URL.
- AllowKeyBasedRenewal allows use of a certificate with no associated account in Active Directory. This applies when used with ClientCertificate and AllowRenewalsOnly mode.
Options:
[-config Machine\CAName]
-deleteEnrollmentServer
Deletes an Enrollment Server application and application pool if necessary for the specified Certificate Authority. This command doesn't install binaries or packages.
certutil [options] -deleteEnrollmentServer Kerberos | UserName | ClientCertificate
Where:
- deleteEnrollmentServer requires you to use an authentication method for the client connection to the Certificate Enrollment Server, including:
- Kerberos uses Kerberos SSL credentials.
- UserName uses named account for SSL credentials.
- ClientCertificate uses X.509 Certificate SSL credentials.
Options:
[-config Machine\CAName]
-addPolicyServer
Add a Policy Server application and application pool, if necessary. This command doesn't install binaries or packages.
certutil [options] -addPolicyServer Kerberos | UserName | ClientCertificate [KeyBasedRenewal]
Where:
- addPolicyServer requires you to use an authentication method for the client connection to the Certificate Policy Server, including:
- Kerberos uses Kerberos SSL credentials.
- UserName uses named account for SSL credentials.
- ClientCertificate uses X.509 Certificate SSL credentials.
- KeyBasedRenewal allows use of policies returned to the client containing keybasedrenewal templates. This option applies only for UserName and ClientCertificate authentication.
-deletePolicyServer
Deletes a Policy Server application and application pool, if necessary. This command doesn't remove binaries or packages.
certutil [options] -deletePolicyServer Kerberos | UserName | ClientCertificate [KeyBasedRenewal]
Where:
- deletePolicyServer requires you to use an authentication method for the client connection to the Certificate Policy Server, including:
- Kerberos uses Kerberos SSL credentials.
- UserName uses named account for SSL credentials.
- ClientCertificate uses X.509 Certificate SSL credentials.
- KeyBasedRenewal allows use of a KeyBasedRenewal policy server.
-Class
Displays COM registry information.
certutil [options] -Class [ClassId | ProgId | DllName | *]
Options:
[-f]
-7f
Checks certificate for 0x7f length encodings.
certutil [options] -7f CertFile
-oid
Displays the object identifier or sets a display name.
certutil [options] -oid ObjectId [DisplayName | delete [LanguageId [type]]]
certutil [options] -oid GroupId
certutil [options] -oid AlgId | AlgorithmName [GroupId]
Where:
- ObjectId is the ID to be displayed or to add to the display name.
- GroupId is the GroupID number (decimal) that ObjectIds enumerate.
- AlgId is the hexadecimal ID that objectID looks up.
- AlgorithmName is the algorithm name that objectID looks up.
- DisplayName displays the name to store in DS.
- Delete deletes the display name.
- LanguageId is the language ID value (defaults to current: 1033).
- Type is the type of DS object to create, including:
1
- Template (default)2
- Issuance Policy3
- Application Policy
-f
creates a DS object.
Options:
[-f]
-error
Displays the message text associated with an error code.
certutil [options] -error ErrorCode
-getsmtpinfo
Gets Simple Mail Transfer Protocol (SMTP) information.
certutil [options] -getsmtpinfo
-setsmtpinfo
Sets SMTP information.
certutil [options] -setsmtpinfo LogonName
Options:
[-config Machine\CAName] [-p Password]
-getreg
Displays a registry value.
certutil [options] -getreg [{ca | restore | policy | exit | template | enroll | chain | PolicyServers}\[ProgId\]] [RegistryValueName]
Where:
- ca uses a Certificate Authority's registry key.
- restore uses Certificate Authority's restore registry key.
- policy uses the policy module's registry key.
- exit uses the first exit module's registry key.
- template uses the template registry key (use
-user
for user templates). - enroll uses the enrollment registry key (use
-user
for user context). - chain uses the chain configuration registry key.
- PolicyServers uses the Policy Servers registry key.
- ProgId uses the policy or exit module's ProgID (registry subkey name).
- RegistryValueName uses the registry value name (use
Name*
to prefix match). - value uses the new numeric, string or date registry value or filename. If a numeric value starts with
+
or-
, the bits specified in the new value are set or cleared in the existing registry value.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-config Machine\CAName]
Remarks
- If a string value starts with
+
or-
, and the existing value is aREG_MULTI_SZ
value, the string is added to or removed from the existing registry value. To force creation of aREG_MULTI_SZ
value, add\n
to the end of the string value. - If the value starts with
\@
, the rest of the value is the name of the file containing the hexadecimal text representation of a binary value. - If it doesn't refer to a valid file, it's instead parsed as
[Date][+|-][dd:hh]
which is an optional date plus or minus optional days and hours. - If both are specified, use a plus sign (+) or minus sign (-) separator. Use
now+dd:hh
for a date relative to the current time. - Use
i64
as a suffix to create a REG_QWORD value. - Use
chain\chaincacheresyncfiletime @now
to effectively flush cached CRLs. - Registry aliases:
- Config
- CA
- Policy - PolicyModules
- Exit - ExitModules
- Restore - RestoreInProgress
- Template - Software\Microsoft\Cryptography\CertificateTemplateCache
- Enroll - Software\Microsoft\Cryptography\AutoEnrollment (Software\Policies\Microsoft\Cryptography\AutoEnrollment)
- MSCEP - Software\Microsoft\Cryptography\MSCEP
- Chain - Software\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config
- PolicyServers - Software\Microsoft\Cryptography\PolicyServers (Software\Policies\Microsoft\Cryptography\PolicyServers)
- Crypt32 - System\CurrentControlSet\Services\crypt32
- NGC - System\CurrentControlSet\Control\Cryptography\Ngc
- AutoUpdate - Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate
- Passport - Software\Policies\Microsoft\PassportForWork
- MDM - Software\Microsoft\Policies\PassportForWork
-setreg
Sets a registry value.
certutil [options] -setreg [{ca | restore | policy | exit | template | enroll | chain | PolicyServers}\[ProgId\]] RegistryValueName Value
Where:
- ca uses a Certificate Authority's registry key.
- restore uses Certificate Authority's restore registry key.
- policy uses the policy module's registry key.
- exit uses the first exit module's registry key.
- template uses the template registry key (use
-user
for user templates). - enroll uses the enrollment registry key (use
-user
for user context). - chain uses the chain configuration registry key.
- PolicyServers uses the Policy Servers registry key.
- ProgId uses the policy or exit module's ProgID (registry subkey name).
- RegistryValueName uses the registry value name (use
Name*
to prefix match). - Value uses the new numeric, string or date registry value or filename. If a numeric value starts with
+
or-
, the bits specified in the new value are set or cleared in the existing registry value.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-config Machine\CAName]
Remarks
- If a string value starts with
+
or-
, and the existing value is aREG_MULTI_SZ
value, the string is added to or removed from the existing registry value. To force creation of aREG_MULTI_SZ
value, add\n
to the end of the string value. - If the value starts with
\@
, the rest of the value is the name of the file containing the hexadecimal text representation of a binary value. - If it doesn't refer to a valid file, it's instead parsed as
[Date][+|-][dd:hh]
which is an optional date plus or minus optional days and hours. - If both are specified, use a plus sign (+) or minus sign (-) separator. Use
now+dd:hh
for a date relative to the current time. - Use
i64
as a suffix to create a REG_QWORD value. - Use
chain\chaincacheresyncfiletime @now
to effectively flush cached CRLs.
-delreg
Deletes a registry value.
certutil [options] -delreg [{ca | restore | policy | exit | template | enroll |chain | PolicyServers}\[ProgId\]][RegistryValueName]
Where:
- ca uses a Certificate Authority's registry key.
- restore uses Certificate Authority's restore registry key.
- policy uses the policy module's registry key.
- exit uses the first exit module's registry key.
- template uses the template registry key (use
-user
for user templates). - enroll uses the enrollment registry key (use
-user
for user context). - chain uses the chain configuration registry key.
- PolicyServers uses the Policy Servers registry key.
- ProgId uses the policy or exit module's ProgID (registry subkey name).
- RegistryValueName uses the registry value name (use
Name*
to prefix match). - Value uses the new numeric, string or date registry value or filename. If a numeric value starts with
+
or-
, the bits specified in the new value are set or cleared in the existing registry value.
Options:
[-f] [-Enterprise] [-user] [-GroupPolicy] [-config Machine\CAName]
Remarks
- If a string value starts with
+
or-
, and the existing value is aREG_MULTI_SZ
value, the string is added to or removed from the existing registry value. To force creation of aREG_MULTI_SZ
value, add\n
to the end of the string value. - If the value starts with
\@
, the rest of the value is the name of the file containing the hexadecimal text representation of a binary value. - If it doesn't refer to a valid file, it's instead parsed as
[Date][+|-][dd:hh]
which is an optional date plus or minus optional days and hours. - If both are specified, use a plus sign (+) or minus sign (-) separator. Use
now+dd:hh
for a date relative to the current time. - Use
i64
as a suffix to create a REG_QWORD value. - Use
chain\chaincacheresyncfiletime @now
to effectively flush cached CRLs. - Registry aliases:
- Config
- CA
- Policy - PolicyModules
- Exit - ExitModules
- Restore - RestoreInProgress
- Template - Software\Microsoft\Cryptography\CertificateTemplateCache
- Enroll - Software\Microsoft\Cryptography\AutoEnrollment (Software\Policies\Microsoft\Cryptography\AutoEnrollment)
- MSCEP - Software\Microsoft\Cryptography\MSCEP
- Chain - Software\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config
- PolicyServers - Software\Microsoft\Cryptography\PolicyServers (Software\Policies\Microsoft\Cryptography\PolicyServers)
- Crypt32 - System\CurrentControlSet\Services\crypt32
- NGC - System\CurrentControlSet\Control\Cryptography\Ngc
- AutoUpdate - Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate
- Passport - Software\Policies\Microsoft\PassportForWork
- MDM - Software\Microsoft\Policies\PassportForWork
-importKMS
Imports user keys and certificates into the server database for key archival.
certutil [options] -importKMS UserKeyAndCertFile [CertId]
Where:
- UserKeyAndCertFile is a data file with user private keys and certificates that are to be archived. This file can be:
- An Exchange Key Management Server (KMS) export file.
- A PFX file.
- CertId is a KMS export file decryption certificate match token. For more information, see the
-store
parameter in this article. -f
imports certificates not issued by the Certificate Authority.
Options:
[-f] [-Silent] [-split] [-config Machine\CAName] [-p Password] [-symkeyalg SymmetricKeyAlgorithm[,KeyLength]]
-ImportCert
Imports a certificate file into the database.
certutil [options] -ImportCert Certfile [ExistingRow]
Where:
- ExistingRow imports the certificate in place of a pending request for the same key.
-f
imports certificates not issued by the Certificate Authority.
Options:
[-f] [-config Machine\CAName]
Remarks
The Certificate Authority may also need to be configured to support foreign certificates by running certutil -setreg ca\KRAFlags +KRAF_ENABLEFOREIGN
.
-GetKey
Retrieves an archived private key recovery blob, generates a recovery script, or recovers archived keys.
certutil [options] -GetKey SearchToken [RecoveryBlobOutFile]
certutil [options] -GetKey SearchToken script OutputScriptFile
certutil [options] -GetKey SearchToken retrieve | recover OutputFileBaseName
Where:
- script generates a script to retrieve and recover keys (default behavior if multiple matching recovery candidates are found, or if the output file isn't specified).
- retrieve retrieves one or more Key Recovery Blobs (default behavior if exactly one matching recovery candidate is found, and if the output file is specified). Using this option truncates any extension and appends the certificate-specific string and the
.rec
extension for each key recovery blob. Each file contains a certificate chain and an associated private key, still encrypted to one or more Key Recovery Agent certificates. - recover retrieves and recovers private keys in one step (requires Key Recovery Agent certificates and private keys). Using this option truncates any extension and appends the
.p12
extension. Each file contains the recovered certificate chains and associated private keys, stored as a PFX file. - SearchToken selects the keys and certificates to be recovered, including:
- Certificate Common Name
- Certificate Serial Number
- Certificate SHA-1 hash (thumbprint)
- Certificate KeyId SHA-1 hash (Subject Key Identifier)
- Requester Name (domain\user)
- UPN (user@domain)
- RecoveryBlobOutFile outputs a file with a certificate chain and an associated private key, still encrypted to one or more Key Recovery Agent certificates.
- OutputScriptFile outputs a file with a batch script to retrieve and recover private keys.
- OutputFileBaseName outputs a file base name.
Options:
[-f] [-UnicodeText] [-Silent] [-config Machine\CAName] [-p Password] [-ProtectTo SAMNameAndSIDList] [-csp Provider]
Remarks
- For retrieve, any extension is truncated and a certificate-specific string and the
.rec
extensions are appended for each key recovery blob. Each file contains a certificate chain and an associated private key, still encrypted to one or more Key Recovery Agent certificates. - For recover, any extension is truncated and the
.p12
extension is appended. Contains the recovered certificate chains and associated private keys, stored as a PFX file.
-RecoverKey
Recovers an archived private key.
certutil [options] -RecoverKey RecoveryBlobInFile [PFXOutFile [RecipientIndex]]
Options:
[-f] [-user] [-Silent] [-split] [-p Password] [-ProtectTo SAMNameAndSIDList] [-csp Provider] [-t Timeout]
-mergePFX
Merges PFX files.
certutil [options] -MergePFX PFXInFileList PFXOutFile [Modifiers]
Where:
- PFXInFileList is a comma-separated list of PFX input files.
- PFXOutFile is the name of the PFX output file.
- Modifiers are comma separated lists of one or more of the following:
- ExtendedProperties includes any extended properties.
- NoEncryptCert specifies to not encrypt the certificates.
- EncryptCert specifies to encrypt the certificates.
Options:
[-f] [-user] [-split] [-p password] [-ProtectTo SAMNameAndSIDList] [-csp Provider]
Remarks
- The password specified on the command line must be a comma-separated password list.
- If more than one password is specified, the last password is used for the output file. If only one password is provided or if the last password is
*
, the user is prompted for the output file password.
-convertEPF
Converts a PFX file into an EPF file.
certutil [options] -ConvertEPF PFXInFileList EPFOutFile [cast | cast-] [V3CACertId][,Salt]
Where:
- PFXInFileList is a comma-separated list of PFX input files.
- EPFOutFile is the name of the PFX output file.
- EPF is the name of the EPF output file.
- cast uses CAST 64 encryption.
- cast- uses CAST 64 encryption (export).
- V3CACertId is the V3 CA certificate match token. For more information, see the
-store
parameter in this article. - Salt is the EPF output file salt string.
Options:
[-f] [-Silent] [-split] [-dc DCName] [-p Password] [-csp Provider]
Remarks
- The password specified on the command line must be a comma-separated password list.
- If more than one password is specified, the last password is used for the output file. If only one password is provided or if the last password is
*
, the user is prompted for the output file password.
-add-chain
Adds a certificate chain.
certutil [options] -add-chain LogId certificate OutFile
Options:
[-f]
-add-pre-chain
Adds a pre-certificate chain.
certutil [options] -add-pre-chain LogId pre-certificate OutFile
Options:
[-f]
-get-sth
Gets a signed tree head.
certutil [options] -get-sth [LogId]
Options:
[-f]
-get-sth-consistency
Gets signed tree head changes.
certutil [options] -get-sth-consistency LogId TreeSize1 TreeSize2
Options:
[-f]
-get-proof-by-hash
Gets proof of a hash from a timestamp server.
certutil [options] -get-proof-by-hash LogId Hash [TreeSize]
Options:
[-f]
-get-entries
Retrieves entries from an event log.
certutil [options] -get-entries LogId FirstIndex LastIndex
Options:
[-f]
-get-roots
Retrieves the root certificates from the certificate store.
certutil [options] -get-roots LogId
Options:
[-f]
-get-entry-and-proof
Retrieves an event log entry and its cryptographic proof.
certutil [options] -get-entry-and-proof LogId Index [TreeSize]
Options:
[-f]
-VerifyCT
Verifies a certificate against the Certificate Transparency log.
certutil [options] -VerifyCT Certificate SCT [precert]
Options:
[-f]
-?
Displays the list of parameters.
certutil -?
certutil <name_of_parameter> -?
certutil -? -v
Where:
- -? displays the list of parameters
- -<name_of_parameter> -? displays help content for the specified parameter.
- -? -v displays a verbose list of parameters and options.
Options
This section defines all of the options you're able to specify, based on the command. Each parameter includes information about which options are valid for use.
Option | Description |
---|---|
-admin | Use ICertAdmin2 for CA properties. |
-anonymous | Use anonymous SSL credentials. |
-cert CertId | Signing certificate. |
-clientcertificate clientCertId | Use X.509 Certificate SSL credentials. For selection UI, use -clientcertificate . |
-config Machine\CAName | Certificate Authority and computer name string. |
-csp provider | Provider: KSP - Microsoft Software Key Storage Provider TPM - Microsoft Platform Crypto Provider NGC - Microsoft Passport Key Storage Provider SC - Microsoft Smart Card Key Storage Provider |
-dc DCName | Target a specific Domain Controller. |
-enterprise | Use the local machine enterprise registry certificate store. |
-f | Force overwrite. |
-generateSSTFromWU SSTFile | Generate SST by using the automatic update mechanism. |
-gmt | Display times using GMT. |
-GroupPolicy | Use the group policy certificate store. |
-idispatch | Use IDispatch instead of COM native methods. |
-kerberos | Use Kerberos SSL credentials. |
-location alternatestoragelocation | (-loc) AlternateStorageLocation. |
-mt | Display machine templates. |
-nocr | Encode text without CR characters. |
-nocrlf | Encode text without CR-LF characters. |
-nullsign | Use the hash of the data as a signature. |
-oldpfx | Use old PFX encryption. |
-out columnlist | Comma-separated column list. |
-p password | Password |
-pin PIN | Smart card PIN. |
-policyserver URLorID | Policy Server URL or ID. For selection U/I, use -policyserver . For all Policy Servers, use -policyserver * |
-privatekey | Display password and private key data. |
-protect | Protect keys with password. |
-protectto SAMnameandSIDlist | Comma-separated SAM name/SID list. |
-restrict restrictionlist | Comma-separated Restriction List. Each restriction consists of a column name, a relational operator, and a constant integer, string, or date. One column name may be preceded by a plus or minus sign to indicate the sort order. For example: requestID = 47 , +requestername >= a, requestername , or -requestername > DOMAIN, Disposition = 21 . |
-reverse | Reverse Log and Queue columns. |
-seconds | Display times using seconds and milliseconds. |
-service | Use service certificate store. |
-sid | Numeric SID: 22 - Local System 23 - Local Service 24 - Network Service |
-silent | Use the silent flag to acquire crypt context. |
-split | Split embedded ASN.1 elements, and save to files. |
-sslpolicy servername | SSL Policy matching ServerName. |
-symkeyalg symmetrickeyalgorithm[,keylength] | Name of the Symmetric Key Algorithm with optional key length. For example: AES,128 or 3DES . |
-syncWithWU DestinationDir | Sync with Windows Update. |
-t timeout | URL fetch timeout in milliseconds. |
-Unicode | Write redirected output in Unicode. |
-UnicodeText | Write output file in Unicode. |
-urlfetch | Retrieve and verify AIA Certs and CDP CRLs. |
-user | Use the HKEY_CURRENT_USER keys or certificate store. |
-username username | Use named account for SSL credentials. For selection UI, use -username . |
-ut | Display user templates. |
-v | Provide more detailed (verbose) information. |
-v1 | Use V1 interfaces. |
Hash algorithms: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512.
Related links
For more examples of how to use this command, see the following articles: