在命令提示符下输入"certutil /?"来查看完整的命令参数列表和使用说明。certutil 是一个命令行工具,主要用于管理证书存储、证书请求、证书吊销列表等。PowerShell 通过 Get-ChildItem、Export-PfxCertificate 等命令也提供了类似的功能,甚至在某些情况下更加灵活。

certutil | Microsoft Learn

certutil 命令与 PowerShell 命令的对应表格化对比:

功能 certutil 命令 PowerShell 命令
查看证书 certutil -store My Get-ChildItem -Path Cert:\CurrentUser\My 或 Cert:\LocalMachine\My
导出证书 certutil -exportPFX -p <password> <cert> <file.pfx> Export-PfxCertificate -Cert <certificate> -FilePath <path> -Password <password>
导入证书 certutil -importPFX <file.pfx> Import-PfxCertificate -FilePath <path> -Password <password> -CertStoreLocation <location>
查看证书吊销列表 certutil -viewstore -revoke PowerShell 本身不支持此功能,但可以通过调用相应 API 或使用外部模块实现
显示证书 certutil -displaycert <cert> Get-Item -Path Cert:\CurrentUser\My\<cert>
删除证书 certutil -delstore My <cert> Remove-Item -Path Cert:\CurrentUser\My\<cert>
列出证书存储位置 certutil -store Get-ChildItem -Path Cert:\
更新证书存储 certutil -update 通过 PowerShell 管理工具(如 Update-Help 或手动更新)
查看证书链 certutil -verify PowerShell 自身没有直接命令,但可通过使用证书对象的 Verify() 方法来执行
生成自签名证书 无直接对应,通常手动生成 New-SelfSignedCertificate
生成证书请求 certutil -newreq <template> <cert.req> New-SelfSignedCertificate -DnsName <name> -CertStoreLocation <location> 或使用更复杂的 CSR 生成命令
显示证书信息 certutil -v -dump <cert> Get-Item -Path Cert:\CurrentUser\My\<cert> 然后查看属性
安装根证书 certutil -addstore Root <cert> Import-Certificate -FilePath <path> -CertStoreLocation Cert:\LocalMachine\Root

说明:

  • PowerShell 在处理证书时提供了更细粒度的控制,可以直接操作证书存储库,并通过丰富的命令和参数配置与证书管理相关的功能。
  • certutil 是一个命令行工具,主要用于管理证书存储、证书请求、证书吊销列表等。PowerShell 通过 Get-ChildItemExport-PfxCertificate 等命令也提供了类似的功能,甚至在某些情况下更加灵活。
  • 在 PowerShell 中,Cert:\ 是证书存储的路径,可以使用 PowerShell 提供的强大命令操作证书、导入导出、删除和查看证书。

New-SelfSignedCertificate 是 PowerShell 中用来创建自签名证书的命令。自签名证书是一种由自己生成和签署的证书,而不是由受信任的证书颁发机构(CA)签发的。通常用于开发、测试或者本地环境中,而不是在生产环境中。

语法:

powershell
New-SelfSignedCertificate -CertStoreLocation <StoreLocation> -DnsName <DNSName> -KeySpec <KeySpec> -KeyExportPolicy <ExportPolicy> -NotAfter <ValidityPeriod>

主要参数:

  1. -CertStoreLocation:指定证书存储位置。这个位置是存放证书的地方,比如:

    • Cert:\LocalMachine\My:用于本地计算机的个人证书库。
    • Cert:\CurrentUser\My:用于当前用户的个人证书库。
    • Cert:\LocalMachine\Root:根证书存储。
  2. -DnsName:指定证书的主题名称(通常是域名)。例如,你可能会使用它来生成一个 Web 服务器的证书,输入域名作为 DNS 名称。

  3. -KeySpec:指定证书的密钥用途。常见的值是:

    • KeyExchange:用于加密交换。
    • Signature:用于签名操作。
  4. -KeyExportPolicy:指定是否允许导出密钥。通常,Exportable 表示可以导出密钥,而 NonExportable 则不能导出。

  5. -NotAfter:指定证书的有效期,通常以日期表示。例如,-NotAfter (Get-Date).AddYears(1) 表示证书有效期为1年。

示例:

创建一个自签名证书并存储在本地计算机的个人证书库中:

powershell
New-SelfSignedCertificate -CertStoreLocation "Cert:\LocalMachine\My" -DnsName "www.example.com" -KeySpec KeyExchange -NotAfter (Get-Date).AddYears(1)

这将创建一个自签名证书,存储在 LocalMachine\My 证书库中,并且该证书的有效期为一年。

导出证书:

如果你希望导出证书(例如,导出为 .pfx 文件),可以使用以下命令:

powershell
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*www.example.com*" }
Export-PfxCertificate -Cert $cert -FilePath "C:\Path\To\ExportedCert.pfx" -Password (ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText)

为什么使用自签名证书?

  • 开发与测试:对于开发和测试环境,自签名证书是一个便捷且无需依赖外部证书颁发机构的解决方案。
  • 内网使用:在内网环境中,通常不需要 CA 认证的证书,可以通过自签名证书来提供安全通信。
  • 节省成本:通过自签名证书,可以避免购买和续订来自受信任证书机构的证书。

不过,在生产环境中,推荐使用由可信的证书颁发机构(CA)签发的证书,以确保通信的安全性和广泛的信任。


certutil 命令与 PowerShell 命令的对应表格化对比:

功能 certutil 命令 PowerShell 命令
查看证书 certutil -store My Get-ChildItem -Path Cert:\CurrentUser\My 或 Cert:\LocalMachine\My
导出证书 certutil -exportPFX -p <password> <cert> <file.pfx> Export-PfxCertificate -Cert <certificate> -FilePath <path> -Password <password>
导入证书 certutil -importPFX <file.pfx> Import-PfxCertificate -FilePath <path> -Password <password> -CertStoreLocation <location>
查看证书吊销列表 certutil -viewstore -revoke PowerShell 本身不支持此功能,但可以通过调用相应 API 或使用外部模块实现
显示证书 certutil -displaycert <cert> Get-Item -Path Cert:\CurrentUser\My\<cert>
删除证书 certutil -delstore My <cert> Remove-Item -Path Cert:\CurrentUser\My\<cert>
列出证书存储位置 certutil -store Get-ChildItem -Path Cert:\
更新证书存储 certutil -update 通过 PowerShell 管理工具(如 Update-Help 或手动更新)
查看证书链 certutil -verify PowerShell 自身没有直接命令,但可通过使用证书对象的 Verify() 方法来执行
生成自签名证书 无直接对应,通常手动生成 New-SelfSignedCertificate
生成证书请求 certutil -newreq <template> <cert.req> New-SelfSignedCertificate -DnsName <name> -CertStoreLocation <location> 或使用更复杂的 CSR 生成命令
显示证书信息 certutil -v -dump <cert> Get-Item -Path Cert:\CurrentUser\My\<cert> 然后查看属性
安装根证书 certutil -addstore Root <cert> Import-Certificate -FilePath <path> -CertStoreLocation Cert:\LocalMachine\Root

说明:

  • PowerShell 在处理证书时提供了更细粒度的控制,可以直接操作证书存储库,并通过丰富的命令和参数配置与证书管理相关的功能。
  • certutil 是一个命令行工具,主要用于管理证书存储、证书请求、证书吊销列表等。PowerShell 通过 Get-ChildItemExport-PfxCertificate 等命令也提供了类似的功能,甚至在某些情况下更加灵活。
  • 在 PowerShell 中,Cert:\ 是证书存储的路径,可以使用 PowerShell 提供的强大命令操作证书、导入导出、删除和查看证书。

C:\Users\Administrator>certutil -v -?

动词:
 certutil  -dump             -- 转储配置信息或文件
  certutil -dumpPFX          -- 转储 PFX 结构
 certutil  -asn              -- 分析 ASN.1 文件

 certutil  -decodehex        -- 解码十六进制编码的文件
 certutil  -decode           -- 解码 Base64 编码的文件
  certutil -encode           -- 将文件编码为 Base64

 certutil  -deny             -- 拒绝挂起的申请
  certutil -resubmit         -- 重新提交挂起的申请
 certutil  -setattributes    -- 为挂起申请设置属性
 certutil  -setextension     -- 为挂起申请设置扩展
 certutil  -revoke           -- 吊销证书
 certutil  -isvalid          -- 显示当前证书部署

 certutil  -getconfig        -- 获取默认配置字符串
 certutil  -ping             -- Ping Active Directory 证书服务申请接口
certutil   -pingadmin        -- Ping Active Directory 证书服务管理接口
certutil   -CAInfo           -- 显示 CA 信息
certutil   -ca.cert          -- 检索 CA 的证书
 certutil  -ca.chain         -- 检索 CA 的证书链
certutil   -GetCRL           -- 获取 CRL
certutil   -CRL              -- 发布新的 CRL [或仅增量 CRL]
 certutil  -shutdown         -- 关闭 Active Directory 证书服务

 certutil  -installCert      -- 安装证书颁发机构证书
 certutil  -renewCert        -- 续订证书颁发机构证书

certutil   -schema           -- 转储证书架构
certutil   -view             -- 转储证书视图
certutil   -db               -- 转储原始数据库
 certutil  -deleterow        -- 删除服务器数据库行

certutil   -backup           -- 备份 Active Directory 证书服务
certutil   -backupDB         -- 备份 Active Directory 证书服务数据库
certutil   -backupKey        -- 备份 Active Directory 证书服务证书和私钥
certutil   -restore          -- 还原 Active Directory 证书服务
certutil   -restoreDB        -- 还原 Active Directory 证书服务数据库
certutil   -restoreKey       -- 还原 Active Directory 证书服务证书和私钥
certutil   -importPFX        -- 导入证书和私钥
 certutil  -dynamicfilelist  -- 显示动态文件列表
 certutil  -databaselocations -- 显示数据库位置
 certutil  -hashfile         -- 通过文件生成并显示加密哈希

 certutil  -store            -- 转储证书存储
certutil   -enumstore        -- 枚举证书存储
certutil   -addstore         -- 将证书添加到存储
certutil   -delstore         -- 从存储删除证书
certutil   -verifystore      -- 验证存储中的证书
certutil   -repairstore      -- 修复密钥关联,或者更新证书属性或密钥安全描述符
certutil   -viewstore        -- 转储证书存储
certutil   -viewdelstore     -- 从存储删除证书
 certutil  -UI               -- 调用 CryptUI
 certutil  -attest           -- 验证密钥证明请求

 certutil  -dsPublish        -- 将证书或 CRL 发布到 Active Directory

 certutil  -ADTemplate       -- 显示 AD 模板
certutil   -Template         -- 显示注册策略模板
certutil   -TemplateCAs      -- 显示模板的 CA
certutil   -CATemplates      -- 显示 CA 的模板
certutil   -SetCASites       -- 管理 CA 的站点名称
certutil   -enrollmentServerURL -- 显示、添加或删除与 CA 关联的注册服务器 URL
certutil   -ADCA             -- 显示 AD CA
certutil   -CA               -- 显示注册策略 CA
certutil   -Policy           -- 显示注册策略
certutil   -PolicyCache      -- 显示或删除注册策略缓存项目
 certutil  -CredStore        -- 显示、添加或删除凭据存储项目
certutil   -InstallDefaultTemplates -- 安装默认的证书模板
certutil   -URLCache         -- 显示或删除 URL 缓存项目
 certutil  -pulse            -- 以脉冲方式执行自动注册事件或 NGC 任务
 certutil  -MachineInfo      -- 显示 Active Directory 计算机对象信息
certutil   -DCInfo           -- 显示域控制器信息
certutil   -EntInfo          -- 显示企业信息
 certutil  -TCAInfo          -- 显示 CA 信息
certutil  -SCInfo           -- 显示智能卡信息

certutil   -SCRoots          -- 管理智能卡根证书

certutil   -DeleteHelloContainer -- 删除 Hello 登录容器。
     ** 在使用此选项后, 用户需要注销才能完成。**
certutil   -verifykeys       -- 验证公/私钥集
certutil   -verify           -- 验证证书,CRL 或链
certutil   -verifyCTL        -- 验证 AuthRoot 或不允许的证书 CTL
certutil   -syncWithWU       -- 与 Windows 更新同步
 certutil  -generateSSTFromWU -- 通过 Windows 更新生成 SST
 certutil  -generatePinRulesCTL -- 生成捆绑规则 CTL
 certutil  -downloadOcsp     -- 下载 OCSP 响应并写入目录
 certutil  -generateHpkpHeader -- 使用指定文件或目录中的证书生成 HPKP 头
 certutil  -flushCache       -- 刷新选定进程(例如 lsass.exe)中的指定缓存
 certutil  -addEccCurve      -- 添加 ECC 曲线
 certutil  -deleteEccCurve   -- 删除 ECC 曲线
certutil   -displayEccCurve  -- 显示 ECC 曲线
certutil   -sign             -- 重新签名 CRL 或证书

 certutil  -vroot            -- 创建/删除 Web 虚拟根和文件共享
 certutil  -vocsproot        -- 创建/删除 OCSP Web Proxy 的 Web 虚拟根
 certutil  -addEnrollmentServer -- 添加注册服务器应用程序
 certutil  -deleteEnrollmentServer -- 删除注册服务器应用程序
 certutil  -addPolicyServer  -- 添加策略服务器应用程序
certutil   -deletePolicyServer -- 删除策略服务器应用程序
certutil   -oid              -- 显示 ObjectId 或设置显示名称
 certutil  -error            -- 显示错误代码消息文本
 certutil  -getreg           -- 显示注册表值
certutil   -setreg           -- 设置注册表值
certutil   -delreg           -- 删除注册表值

 certutil  -ImportKMS        -- 为密钥存档导入用户密钥和证书到服务器数据库
certutil   -ImportCert       -- 将证书文件导入数据库
certutil   -GetKey           -- 检索存档的私钥恢复 Blob,生成恢复脚本 或恢复存档的密钥
certutil   -RecoverKey       -- 恢复存档的私钥
certutil   -MergePFX         -- 合并 PFX 文件
certutil   -ConvertEPF       -- 将 PFX 文件转换为 EPF 文件

certutil   -add-chain        -- (-AddChain) 添加证书链
 certutil  -add-pre-chain    -- (-AddPrechain) 添加预植证书链
 certutil  -get-sth          -- (-GetSTH) 获取签名树头
 certutil  -get-sth-consistency -- (-GetSTHConsistency) 获取签名树头更改
 certutil  -get-proof-by-hash -- (-GetProofByHash) 获取哈希证明
 certutil  -get-entries      -- (-GetEntries) 获取项
 certutil  -get-roots        -- (-GetRoots) 获取根
certutil   -get-entry-and-proof -- (-GetEntryAndProof) 获取项和证明
certutil   -VerifyCT         -- 验证证书 SCT
certutil   -?                -- 显示该用法消息

用法:
  CertUtil [选项] [-dump]
  CertUtil [选项] [-dump] [文件]
  转储配置信息或文件
    [-f] [-user] [-Silent] [-split] [-p 密码] [-t 超时]

  CertUtil [选项] -dumpPFX 文件
  转储 PFX 结构
    [-f] [-Silent] [-split] [-p 密码] [-csp 提供程序]

  CertUtil [选项] -asn 文件[类型]
  分析 ASN.1 文件
    类型 -- 数值 CRYPT_STRING_* 解码类型

  CertUtil [选项] -decodehex InFile OutFile [type]
  解码十六进制编码的文件
    类型 -- 数值 CRYPT_STRING_* 编码类型
    [-f]

  CertUtil [选项] -decode InFile OutFile
  解码 Base64 编码的文件
    [-f]

  CertUtil [选项] -encode InFile OutFile
  将文件编码为 Base64
    [-f] [-UnicodeText]

  CertUtil [选项] -deny RequestId
  拒绝挂起的申请
    [-config Machine\CAName]

  CertUtil [选项] -resubmit RequestId
  重新提交挂起的申请
    [-config Machine\CAName]

  CertUtil [选项] -setattributes RequestId AttributeString
  为挂起申请设置属性
    RequestId -- 挂起申请的数字申请 Id
    AttributeString -- 申请属性名和值对
            名称和值用冒号分隔。
            多名称、值对在不同的行。
            示例: "CertificateTemplate:User\nEMail:User@Domain.com"
            每个 "\n" 序列被转换为新行分隔符。
    [-config Machine\CAName]

  CertUtil [选项] -setextension RequestId ExtensionName Flags {Long | Date | String | @InFile}
  为挂起申请设置扩展
    RequestId -- 挂起申请的数字申请 Id
    ExtensionName -- 扩展的 ObjectId 字符串
    Flags -- 0 为推荐的。1 标识扩展是关键的,
    2 禁用它,3 两者都执行。
    如果最后一个参数为数字,它将作为 Long 被接受。
    如果它可以被分析为日期,它将被作为日期接受。
    如果它以 '@' 开头,则此标识的其余部分为包含二进制数据或 ASCII 文本十六进制转储的文件名。
    其他情况都将作为 String 接受。
    [-config Machine\CAName]

  CertUtil [选项] -revoke SerialNumber [Reason]
  吊销证书
    SerialNumber -- 要吊销的证书序列号列表(以逗号分隔)
    Reason -- 吊销原因(数字或符号):
            0: CRL_REASON_UNSPECIFIED -- 未指定(默认)
            1: CRL_REASON_KEY_COMPROMISE -- 密钥泄漏
            2: CRL_REASON_CA_COMPROMISE -- CA 泄漏
            3: CRL_REASON_AFFILIATION_CHANGED -- 从属更改
            4: CRL_REASON_SUPERSEDED -- 被取代
            5: CRL_REASON_CESSATION_OF_OPERATION -- 操作停止
            6: CRL_REASON_CERTIFICATE_HOLD -- 证书挂起
            8: CRL_REASON_REMOVE_FROM_CRL -- 从 CRL 中删除
            9: CRL_REASON_PRIVILEGE_WITHDRAWN  -- 特权撤消
            10: CRL_REASON_AA_COMPROMISE -- AA 泄露
            -1: Unrevoke -- 取消吊销
    [-config Machine\CAName]

  CertUtil [选项] -isvalid SerialNumber | CertHash
  显示当前证书部署
    [-config Machine\CAName]

  CertUtil [选项] -getconfig
  获取默认配置字符串
    [-config Machine\CAName]

  CertUtil [选项] -ping [MaxSecondsToWait | CAMachineList]
  Ping Active Directory 证书服务申请接口
    CAMachineList -- 以逗号分隔的 CA 计算机名称列表
            对于单个计算机,请使用结束逗号
            显示每个 CA 计算机的站点开销
    [-config Machine\CAName] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName 用户名] [-p 密码]
    修饰符:
      SCEP
      CES
      CEP

  CertUtil [选项] -pingadmin
  Ping Active Directory 证书服务管理接口
    [-config Machine\CAName]

  CertUtil [选项] -CAInfo [InfoName [Index | ErrorCode]]
  显示 CA 信息
    InfoName -- 表示要显示的 CA 属性(参见下面)
            为所有属性使用 "*"
    Index -- 从零开始的属性索引(可选)
    ErrorCode -- 错误代码(数字)
    [-f] [-split] [-config Machine\CAName]

    InfoName 参数语法:
        file -- 文件版本
        product -- 产品版本
        exitcount -- 退出模块计数
        exit [Index] -- 退出模块描述
        policy -- 策略模块描述
        name -- CA 名称
        sanitizedname -- 整理过的 CA 名称
        dsname -- 净化的 CA 短名称(DS 名称)
        sharedfolder -- 共享文件夹
        error1 错误代码 -- 错误消息文本
        error2 错误代码 -- 错误消息文本和错误代码
        type -- CA 类型
        info -- CA 信息
        parent -- 父 CA
        certcount -- CA 证书计数
        xchgcount -- CA 交换证书计数
        kracount -- KRA 证书计数
        kraused -- KRA 证书使用计数
        propidmax -- 最大 CA PropId
        certstate [Index] -- CA 证书
        certversion [Index] -- CA 证书版本
        certstatuscode [Index] -- CA 证书验证状态
        crlstate [Index] -- CRL
        krastate [Index] -- KRA 证书
        crossstate+ [Index] -- 前向交叉证书
        crossstate- [Index] -- 后向交叉证书
        cert [Index] -- CA 证书
        certchain [Index] -- CA 证书链
        certcrlchain [Index] -- 有 CRL 的 CA 证书链
        xchg [Index] -- CA 交换证书
        xchgchain [Index] -- CA 交换证书链
        xchgcrlchain [Index] -- 有 CRL 的 CA 交换证书链
        kra [Index] -- KRA 证书
        cross+ [Index] -- 前向交叉证书
        cross- [Index] -- 后向交叉证书
        CRL [Index] -- 基 CRL
        deltacrl [Index] -- 增量 CRL
        crlstatus [Index] -- CRL 发布状态
        deltacrlstatus [Index] -- 增量 CRL 发布状态
        dns -- DNS 名称
        role -- 角色分离
        ads -- Advanced Server
        templates -- 模板
        ocsp [Index] -- OCSP URL
        aia [Index] -- AIA URL
        cdp [Index] -- CDP URL
        localename -- CA 区域名称
        subjecttemplateoids -- 使用者模板 OID

  CertUtil [选项] -ca.cert OutCACertFile [Index]
  检索 CA 的证书
    OutCACertFile -- 输出文件
    Index -- CA 证书续订索引(默认为最新的)
    [-f] [-split] [-config Machine\CAName]

  CertUtil [选项] -ca.chain OutCACertChainFile [Index]
  检索 CA 的证书链
    OutCACertChainFile -- 输出文件
    Index -- CA 证书续订索引(默认为最新的)
    [-f] [-split] [-config Machine\CAName]

  CertUtil [选项] -GetCRL OutFile [Index] [delta]
  获取 CRL
    Index -- CRL 索引或密钥索引(对最新的密钥默认到 CRL)
    delta -- 增量 CRL(默认为基 CRL)
    [-f] [-split] [-config Machine\CAName]

  CertUtil [选项] -CRL [dd:hh | republish] [delta]
  发布新的 CRL [或仅增量 CRL]
    dd:hh -- 新 CRL 的有效期(以天和小时计)
    republish -- 重新发布最新的 CRL
    delta -- 仅增量 CRL(默认为基和增量 CRL)
    [-split] [-config Machine\CAName]

  CertUtil [选项] -shutdown
  关闭 Active Directory 证书服务
    [-config Machine\CAName]

  CertUtil [选项] -installCert [CACertFile]
  安装证书颁发机构证书
    [-f] [-Silent] [-config Machine\CAName]

  CertUtil [选项] -renewCert [ReuseKeys] [Machine\ParentCAName]
  续订证书颁发机构证书
    使用 -f 来忽略未完成的续订申请,并且生成新的申请。
    [-f] [-Silent] [-config Machine\CAName]

  CertUtil [选项] -schema [Ext | Attrib | CRL]
  转储证书架构
    默认到申请和证书表
    Ext -- 扩展表
    Attrib -- 属性表
    CRL -- CRL 表
    [-split] [-config Machine\CAName]

  CertUtil [选项] -view [Queue | Log | LogFail | Revoked | Ext | Attrib | CRL] [csv]
  转储证书视图
    Queue -- 请求队列
    Log -- 已颁发或吊销的证书,以及失败的请求
    LogFail -- 失败的请求
    Revoked -- 已吊销的证书
    Ext -- 扩展表
    Attrib -- 属性表
    CRL -- CRL 表
    csv -- 以逗号分隔值输出

    显示所有项目的 StatusCode 栏:
        -out StatusCode
    显示最后项目的所有栏:
        -restrict "RequestId==$"
    显示三个请求的 RequestId 和部署:
        -restrict "RequestId>=37,RequestId<40" -out "RequestId,Disposition"

    显示所有基 CRL 的行 Id 和 CRL 数量:
        -restrict "CRLMinBase=0" -out "CRLRowId,CRLNumber" CRL
    显示基 CRL 编号 3:
        -v -restrict "CRLMinBase=0,CRLNumber=3" -out "CRLRawCRL" CRL
    显示整个 CRL 表:
        CRL
    将 "Date[+|-dd:hh]" 用于日期限制
    将 "now+dd:hh" 用于相对于当前时间的日期
    [-Silent] [-split] [-config Machine\CAName] [-restrict 限制列表] [-out 栏列表]

  CertUtil [选项] -db
  转储原始数据库
    [-config Machine\CAName] [-restrict 限制列表] [-out 栏列表]

  CertUtil [选项] -deleterow RowId | Date [Request | Cert | Ext | Attrib | CRL]
  删除服务器数据库行
    Request -- 失败并被挂起的申请(提交日期)
    Cert -- 过期并被吊销的证书(过期日期)
    Ext -- 扩展表
    Attrib -- 属性表
    CRL -- CRL 表(过期日期)

    删除提交时间为 1/22/2001 的失败并被挂起的申请:
        1/22/2001 Request
    删除在 1/22/2001 过期的所有证书:
        1/22/2001 Cert
    删除 RequestId 37 的证书行,属性和扩展:
        37
    删除在 1/22/2001 过期的 CRL:
        1/22/2001 CRL
    [-f] [-config Machine\CAName]

  CertUtil [选项] -backup BackupDirectory [Incremental] [KeepLog]
  备份 Active Directory 证书服务
    BackupDirectory -- 存储备份数据的目录
    Incremental -- 仅执行增量备份(默认为完整备份)
    KeepLog -- 保留数据库日志文件(默认为截断日志文件)
    [-f] [-config Machine\CAName] [-p 密码] [-ProtectTo SAMNameAndSIDList]

  CertUtil [选项] -backupDB BackupDirectory [Incremental] [KeepLog]
  备份 Active Directory 证书服务数据库
    BackupDirectory -- 存储备份数据库文件的目录
    Incremental -- 仅执行增量备份(默认为完整备份)
    KeepLog -- 保留数据库日志文件(默认为截断日志文件)
    [-f] [-config Machine\CAName]

  CertUtil [选项] -backupKey BackupDirectory
  备份 Active Directory 证书服务证书和私钥
    BackupDirectory -- 存储备份 PFX 文件的目录
    [-f] [-config Machine\CAName] [-p 密码] [-ProtectTo SAMNameAndSIDList] [-t 超时]

  CertUtil [选项] -restore BackupDirectory
  还原 Active Directory 证书服务
    BackupDirectory -- 包含要还原的数据的目录
    [-f] [-config Machine\CAName] [-p 密码]

  CertUtil [选项] -restoreDB BackupDirectory
  还原 Active Directory 证书服务数据库
    BackupDirectory -- 包含要还原的数据库文件的目录
    [-f] [-config Machine\CAName]

  CertUtil [选项] -restoreKey BackupDirectory | PFXFile
  还原 Active Directory 证书服务证书和私钥
    BackupDirectory -- 包含要还原的 PFX 文件的目录
    PFXFile -- 要还原的 PFX 文件
    [-f] [-config Machine\CAName] [-p 密码]

  CertUtil [选项] -importPFX [CertificateStoreName] PFXFile [Modifiers]
  导入证书和私钥
    CertificateStoreName -- 证书存储名称。请参见 -store。
    PFXFile -- 要导入的 PFX 文件
    Modifiers -- 包含下面的一项或多项内容的列表(以逗号分隔):
            AT_SIGNATURE -- 将 KeySpec 更改为签名
            AT_KEYEXCHANGE -- 将 KeySpec 更改为密钥交换
            NoExport -- 将私钥设置为无法导出
            NoCert -- 不导入证书
            NoChain -- 不导入证书链
            NoRoot -- 不导入根证书
            Protect -- 使用密码保护密钥
            NoProtect -- 不使用密码保护密钥
    默认为个人计算机存储。
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-p 密码] [-csp 提供程序]
    修饰符:
      NoExport
      ExportEncrypted
      NoCert
      NoChain -- 仅限最终实体证书
      NoRoot -- 排除根证书
      NoProtect
      Protect
      ProtectHigh
      Pkcs8
      AT_SIGNATURE
      AT_KEYEXCHANGE
      FriendlyName=
      KeyFriendlyName=
      KeyDescription=
      VSM

  CertUtil [选项] -dynamicfilelist
  显示动态文件列表
    [-config Machine\CAName]

  CertUtil [选项] -databaselocations
  显示数据库位置
    [-config Machine\CAName]

  CertUtil [选项] -hashfile InFile [HashAlgorithm]
  通过文件生成并显示加密哈希

  CertUtil [选项] -store [CertificateStoreName [CertId [OutputFile]]]
  转储证书存储
    CertificateStoreName -- 证书存储名称。示例:
            “My”、“CA”(默认)、“Root”,

            “ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?one?objectClass=certificationAuthority”(查看根证书)

            “ldap:///CN=CAName,CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?base?objectClass=certificationAuthority”(修改根证书)

            “ldap:///CN=CAName,CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?certificateRevocationList?base?objectClass=cRLDistributionPoint”(查看 CRL)

            “ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?base?objectClass=certificationAuthority”(企业 CA 证书)
             ldap: (AD 计算机对象证书)
             -user ldap: (AD 用户对象证书)

    CertId -- 证书或 CRL 匹配令牌。这可以是一个序列号,
            一个 SHA-1 证书、CRL、CTL 或公钥哈希,
            一个数字证书索引(0, 1, 等等),
            一个数字 CRL 索引(.0, .1, 等等),
            一个数字 CTL 索引(..0, ..1, 等等),
            一个公钥,签名或扩展 ObjectId,
            一个证书使用者公用名
            一个电子邮件地址、UPN 或 DNS 名称,
            一个密钥容器名称或 CSP 名称,
            一个模板名称或 ObjectId,
            一个 EKU 或应用程序策略 ObjectId,
            或者一个 CRL 颁发者公用名。
            上面这些可能会产生多重匹配。
    OutputFile -- 保存匹配证书的文件
    使用 -user 来访问用户存储而不是计算机存储。
    使用 -enterprise 访问计算机企业存储。
    使用 -service 访问计算机服务存储。
    使用 -grouppolicy 访问计算机组策略存储。

    示例:
    -enterprise NTAuth
    -enterprise Root 37
    -user My 26e0aaaf000000000004
    CA .11
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-split] [-dc DCName]

  CertUtil [选项] -enumstore [\\MachineName]
  枚举证书存储
    MachineName -- 远程计算机名称。
    [-Enterprise] [-user] [-GroupPolicy]

  CertUtil [选项] -addstore CertificateStoreName InFile
  将证书添加到存储
    CertificateStoreName -- 证书存储名称。参见 -store。
    InFile -- 要添加到存储的证书或 CRL 文件。
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-dc DCName]
    修饰符:
      Certs
      CRLs
      CTLs
      Root
      NoRoot

  CertUtil [选项] -delstore CertificateStoreName CertId
  从存储删除证书
    CertificateStoreName -- 证书存储名称。参见 -store。
    CertId -- 证书或 CRL 匹配令牌。参见 -store。
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-dc DCName]

  CertUtil [选项] -verifystore CertificateStoreName [CertId]
  验证存储中的证书
    CertificateStoreName -- 证书存储名称。参见 -store。
    CertId -- 证书或 CRL 匹配令牌。参见 -store。
    [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-split] [-dc DCName] [-t 超时]

  CertUtil [选项] -repairstore CertificateStoreName CertIdList [PropertyInfFile | SDDLSecurityDescriptor]
  修复密钥关联,或者更新证书属性或密钥安全描述符
    CertificateStoreName -- 证书存储名称。请参见 -store。
    CertIdList -- 以逗号分隔的证书或 CRL 匹配令牌列表。
            请参见 -store 的 CertId 说明。
    PropertyInfFile -- 包含外部属性的 INF 文件:
            [Properties]
            19 = Empty ; 添加存档的属性,或者:
            19 =       ; 删除存档的属性

            11 = "{text}Friendly Name" ; 添加友好名称属性

            127 = "{hex}" ; 添加自定义十六进制属性
              _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}" ; 添加密钥提供程序信息属性
              _continue_ = "Container=Container Name&"
              _continue_ = "Provider=Microsoft Strong Cryptographic Provider&"
              _continue_ = "ProviderType=1&"
              _continue_ = "Flags=0&"
              _continue_ = "KeySpec=2"

            9 = "{text}" ; 添加增强密钥使用属性
              _continue_ = "1.3.6.1.5.5.7.3.2,"
              _continue_ = "1.3.6.1.5.5.7.3.1,"
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-Silent] [-split] [-csp 提供程序]

  CertUtil [选项] -viewstore [CertificateStoreName [CertId [OutputFile]]]
  转储证书存储
    CertificateStoreName -- 证书存储名称。示例:
            “My”、“CA”(默认)、“Root”,

            “ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?one?objectClass=certificationAuthority”(查看根证书)

            “ldap:///CN=CAName,CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?base?objectClass=certificationAuthority”(修改根证书)

            “ldap:///CN=CAName,CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?certificateRevocationList?base?objectClass=cRLDistributionPoint”(查看 CRL)

            “ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?base?objectClass=certificationAuthority”(企业 CA 证书)
             ldap: (AD 计算机对象证书)
             -user ldap: (AD 用户对象证书)

    CertId -- 证书或 CRL 匹配令牌。这可以是一个序列号,
            一个 SHA-1 证书、CRL、CTL 或公钥哈希,
            一个数字证书索引(0, 1, 等等),
            一个数字 CRL 索引(.0, .1, 等等),
            一个数字 CTL 索引(..0, ..1, 等等),
            一个公钥,签名或扩展 ObjectId,
            一个证书使用者公用名
            一个电子邮件地址、UPN 或 DNS 名称,
            一个密钥容器名称或 CSP 名称,
            一个模板名称或 ObjectId,
            一个 EKU 或应用程序策略 ObjectId,
            或者一个 CRL 颁发者公用名。
            上面这些可能会产生多重匹配。
    OutputFile -- 保存匹配证书的文件
    使用 -user 来访问用户存储而不是计算机存储。
    使用 -enterprise 访问计算机企业存储。
    使用 -service 访问计算机服务存储。
    使用 -grouppolicy 访问计算机组策略存储。

    示例:
    -enterprise NTAuth
    -enterprise Root 37
    -user My 26e0aaaf000000000004
    CA .11
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-dc DCName]

  CertUtil [选项] -viewdelstore [CertificateStoreName [CertId [OutputFile]]]
  从存储删除证书
    CertificateStoreName -- 证书存储名称。示例:
            “My”、“CA”(默认)、“Root”,

            “ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?one?objectClass=certificationAuthority”(查看根证书)

            “ldap:///CN=CAName,CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?base?objectClass=certificationAuthority”(修改根证书)

            “ldap:///CN=CAName,CN=MachineName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?certificateRevocationList?base?objectClass=cRLDistributionPoint”(查看 CRL)

            “ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=...?cACertificate?base?objectClass=certificationAuthority”(企业 CA 证书)
             ldap: (AD 计算机对象证书)
             -user ldap: (AD 用户对象证书)

    CertId -- 证书或 CRL 匹配令牌。这可以是一个序列号,
            一个 SHA-1 证书、CRL、CTL 或公钥哈希,
            一个数字证书索引(0, 1, 等等),
            一个数字 CRL 索引(.0, .1, 等等),
            一个数字 CTL 索引(..0, ..1, 等等),
            一个公钥,签名或扩展 ObjectId,
            一个证书使用者公用名
            一个电子邮件地址、UPN 或 DNS 名称,
            一个密钥容器名称或 CSP 名称,
            一个模板名称或 ObjectId,
            一个 EKU 或应用程序策略 ObjectId,
            或者一个 CRL 颁发者公用名。
            上面这些可能会产生多重匹配。
    OutputFile -- 保存匹配证书的文件
    使用 -user 来访问用户存储而不是计算机存储。
    使用 -enterprise 访问计算机企业存储。
    使用 -service 访问计算机服务存储。
    使用 -grouppolicy 访问计算机组策略存储。

    示例:
    -enterprise NTAuth
    -enterprise Root 37
    -user My 26e0aaaf000000000004
    CA .11
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-dc DCName]

  CertUtil [选项] -UI 文件 [import]
  调用 CryptUI

  CertUtil [选项] -attest RequestFile
  验证密钥证明请求
    [-user] [-Silent] [-split]

  CertUtil [选项] -dsPublish CertFile [NTAuthCA | RootCA | SubCA | CrossCA | KRA | User | Machine]
  CertUtil [选项] -dsPublish CRLFile [DSCDPContainer [DSCDPCN]]
  将证书或 CRL 发布到 Active Directory
    CertFile -- 要发布的证书文件
    NTAuthCA -- 发布证书到 DS 企业存储
    RootCA -- 发布证书到 DS 信任根存储
    SubCA -- 发布 CA 证书到 DS CA 对象
    CrossCA -- 发布交叉证书到 DS CA 对象
    KRA -- 发布证书到 DS 密钥恢复代理对象
    User -- 发布证书到用户 DS 对象
    Machine -- 发布证书到计算机 DS 对象
    CRLFile -- 要发布的 CRL 文件
    DSCDPContainer -- DS CDP 容器 CN,通常是 CA 计算机名
    DSCDPCN -- DS CDP 对象 CN,通常基于净化后的 CA 短名称和密钥索引
    使用 -f 来创建 DS 对象。
    [-f] [-user] [-dc DCName]

  CertUtil [选项] -ADTemplate [Template]
  显示 AD 模板
    [-f] [-user] [-ut] [-mt] [-dc DCName]

  CertUtil [选项] -Template [Template]
  显示注册策略模板
    [-f] [-user] [-Silent] [-PolicyServer URLOrId] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName 用户名] [-p 密码]

  CertUtil [选项] -TemplateCAs 模板
  显示模板的 CA
    [-f] [-user] [-dc DCName]

  CertUtil [选项] -CATemplates [Template]
  显示 CA 的模板
    [-f] [-user] [-ut] [-mt] [-config Machine\CAName] [-dc DCName]

  CertUtil [选项] -SetCASites [set] [SiteName]
  CertUtil [选项] -SetCASites verify [SiteName]
  CertUtil [选项] -SetCASites delete
  管理 CA 的站点名称
    设置、验证或删除 CA 站点名称
            使用 -config 选项以将单个 CA 作为目标(默认为所有 CA)
            只有在将单个 CA 作为目标时,才允许使用 SiteName
            使用 -f 以覆盖指定 SiteName 的验证错误
            使用 -f 以删除所有 CA 站点名称
    [-f] [-config Machine\CAName] [-dc DCName]

  CertUtil [选项] -enrollmentServerURL [URL AuthenticationType [Priority] [Modifiers]]
  CertUtil [选项] -enrollmentServerURL URL delete
  显示、添加或删除与 CA 关联的注册服务器 URL
    AuthenticationType -- 在添加 URL 时,指定以下客户端身份验证方法之一
            Kerberos -- 使用 Kerberos SSL 凭据
            UserName -- 使用指定帐户作为 SSL 凭据
            ClientCertificate -- 使用 X.509 证书 SSL 凭据
            Anonymous -- 使用匿名 SSL 凭据。
    delete -- 删除与 CA 关联的指定 URL。
    Priority -- 如果在添加 URL 时未指定,则默认为“1”。
    Modifiers -- 包含下面的一项或多项内容的逗号分隔列表:
            AllowRenewalsOnly -- 只能通过此 URL 将续订请求
                   提交到此 CA
            AllowKeyBasedRenewal -- 允许使用在
                   AD 中没有关联帐户的证书。这仅适用于
                   ClientCertificate 和 AllowRenewalsOnly 模式。
    [-config Machine\CAName] [-dc DCName]

  CertUtil [选项] -ADCA [CAName]
  显示 AD CA
    [-f] [-split] [-dc DCName]

  CertUtil [选项] -CA [CAName | TemplateName]
  显示注册策略 CA
    [-f] [-user] [-Silent] [-split] [-PolicyServer URLOrId] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName 用户名] [-p 密码]

  CertUtil [选项] -Policy
  显示注册策略
    [-f] [-user] [-Silent] [-split] [-PolicyServer URLOrId] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName 用户名] [-p 密码]

  CertUtil [选项] -PolicyCache [delete]
  显示或删除注册策略缓存项目
    delete -- 删除策略服务器缓存项目
    -f -- 使用 -f 删除所有缓存项目。
    [-f] [-user] [-PolicyServer URLOrId]

  CertUtil [选项] -CredStore [URL]
  CertUtil [选项] -CredStore URL add
  CertUtil [选项] -CredStore URL delete
  显示、添加或删除凭据存储项目
    URL -- 目标 URL。使用 * 匹配所有项目
            使用 https://machine* 匹配 URL 前缀
    add -- 添加凭据存储项目
            还必须指定 SSL 凭据
    delete -- 删除凭据存储项目
    -f -- 使用 -f 覆盖一个项目或删除多个项目。
    [-f] [-user] [-Silent] [-Anonymous] [-Kerberos] [-ClientCertificate ClientCertId] [-UserName 用户名] [-p 密码]

  CertUtil [选项] -InstallDefaultTemplates
  安装默认的证书模板
    [-dc DCName]

  CertUtil [选项] -URLCache [URL | CRL | * [delete]]
  显示或删除 URL 缓存项目
    URL -- 缓存的 URL
    CRL -- 只在所有缓存的 CRL URL 上操作
    * -- 在所有的 URL 上操作
    delete -- 从当前用户的本地缓存中删除有关的 URL
    使用 -f 来强制提取特定的 URL 并更新缓存。
    [-f] [-split]

  CertUtil [选项] -pulse [TaskName [SRKThumbprint]]
  以脉冲方式执行自动注册事件或 NGC 任务
    TaskName -- 要触发的任务
            Pregen -- NGC 密钥 Pregen 任务
            AIKEnroll -- NGC AIK 证书注册任务。
            默认为自动注册事件。
    SRKThumbprint -- 存储根密钥的指纹
    [-user]
    修饰符:
      Pregen
      PregenDelay
      AIKEnroll
      CryptoPolicy
      NgcPregenKey
      DIMSRoam

  CertUtil [选项] -MachineInfo DomainName\MachineName$
  显示 Active Directory 计算机对象信息

  CertUtil [选项] -DCInfo [Domain] [Verify | DeleteBad | DeleteAll]
  显示域控制器信息
    默认为显示 DC 证书而不进行验证
    [-f] [-user] [-urlfetch] [-dc DCName] [-t 超时]
    修饰符:
      Verify
      DeleteBad
      DeleteAll

  CertUtil [选项] -EntInfo DomainName\MachineName$
  显示企业信息
    [-f] [-user]

  CertUtil [选项] -TCAInfo [DomainDN | -]
  显示 CA 信息
    [-f] [-Enterprise] [-user] [-urlfetch] [-dc DCName] [-t 超时]

  CertUtil [选项] -SCInfo [ReaderName [CRYPT_DELETEKEYSET]]
  显示智能卡信息
    CRYPT_DELETEKEYSET -- 删除智能卡上的所有密钥
    [-Silent] [-split] [-urlfetch] [-t 超时]

  CertUtil [选项] -SCRoots update [+][InputRootFile] [ReaderName]
  CertUtil [选项] -SCRoots save @OutputRootFile [ReaderName]
  CertUtil [选项] -SCRoots view [InputRootFile | ReaderName]
  CertUtil [选项] -SCRoots delete [ReaderName]
  管理智能卡根证书
    [-f] [-split] [-p 密码]

  CertUtil [选项] -DeleteHelloContainer
  删除 Hello 登录容器。
     ** 在使用此选项后, 用户需要注销才能完成。**

  CertUtil [选项] -verifykeys [KeyContainerName CACertFile]
  验证公/私钥集
    KeyContainerName -- 要验证的密钥容器名称
            默认为计算机密钥。对用户密钥请使用 -user
    CACertFile -- 签名或加密证书文件
    如果没有指定参数,每一个签名 CA 证书将对照它的私钥进行
            验证。
    此操作只能对本地 CA 或本地密钥执行。
    [-f] [-user] [-Silent] [-config Machine\CAName]

  CertUtil [选项] -verify CertFile [ApplicationPolicyList | - [IssuancePolicyList]] [Modifiers]
  CertUtil [选项] -verify CertFile [CACertFile [CrossedCACertFile]]
  CertUtil [选项] -verify CRLFile CACertFile [IssuedCertFile]
  CertUtil [选项] -verify CRLFile CACertFile [DeltaCRLFile]
  验证证书,CRL 或链
    CertFile -- 要验证的证书
    ApplicationPolicyList -- 逗号分隔的要求的应用程序策略 ObjectId 列表(可选)
    IssuancePolicyList -- 逗号分隔的要求的发行策略 ObjectId 列表(可选)

    CACertFile -- 要对照验证的发证 CA (可选)
    CrossedCACertFile -- 由 CertFile 交叉验证的证书(可选)

    CRLFile -- 要验证的 CRL
    IssuedCertFile -- 由 CRLFile 包括的发行的证书(可选)
    DeltaCRLFile -- 增量 CRL(可选)

    如果指定了 ApplicationPolicyList,构建链被限制为对指定的应用程序策略
            有效的链。
    如果指定了 IssuancePolicyList,生成链被限制为对指定的发行策略有效的链。

    如果指定了 CACertFile,在 CACertFile 中的域将对照 CertFile 或 CRLFile
            验证。
    如果没有指定 CACertFile,将使用 CertFile 来生成并验证完整链。
    如果同时指定了 CACertFile 和 CrossedCACertFile,在 CACertFile 和
            CrossedCACertFile 中的域将对照 CertFile 验证。

    如果指定了 IssuedCertFile,在 IssuedCertFile 中的域将对照 CRLFile 验证。

    如果指定了 DeltaCRLFile,在 DeltaCRLFile 中的域将对照 CRLFile 验证。
    [-f] [-Enterprise] [-user] [-Silent] [-split] [-urlfetch] [-t 超时] [-sslpolicy ServerName]
    修饰符:
      Strong -- 强签名验证
      MSRoot -- 必须链接到 Microsoft 根目录
      MSTestRoot -- 必须链接到 Microsoft 测试根目录
      AppRoot -- 必须链接到 Microsoft 应用程序根目录
      EV -- 强制执行扩展验证策略

  CertUtil [选项] -verifyCTL CTLObject [CertDir] [CertFile]
  验证 AuthRoot 或不允许的证书 CTL
    CTLObject -- 指定要验证的 CTL:
         AuthRootWU -- 从 URL 缓存中读取 AuthRoot CAB 和匹配的
             证书。使用 -f 可从 Windows 更新中下载。

         DisallowedWU -- 从 URL 缓存中读取不允许的证书 CAB 和
             不允许的证书存储文件。使用 -f 可
             从 Windows 更新中下载。

         PinRulesWU -- 从 URL 缓存中读取 PinRules CAB。使用 -f 可
             从 Windows 更新中下载。

         AuthRoot -- 读取注册表缓存的 AuthRoot CTL。与 -f 和
             尚未信任的 CertFile 一起使用以强制更新
             注册表缓存的 AuthRoot 和不允许的证书 CTL。

         Disallowed -- 读取注册表缓存的不允许证书 CTL。
             -f 具有与 AuthRoot 相同的行为。

         PinRules -- 读取注册表缓存的 PinRules CTL。
             -f 具有与 PinRulesWU 相同的行为。

         CTLFileName -- CTL 或 CAB 的文件或 http: 路径

    CertDir -- 包含与 CTL 条目匹配的证书的文件夹
         http: 文件夹路径必须以路径分隔符结尾。
         如果未使用 AuthRoot 或 Disallowed 指定文件夹,
         则会在以下多个位置中搜索匹配的证书: 本地
         证书存储、crypt32.dll 资源和本地 URL 缓存。
         如有必要,请使用 -f 从 Windows 更新中下载。
         否则,默认使用与 CTLObject 相同的文件夹或网站。

    CertFile -- 包含要验证的证书的文件。将证书
         与 CTL 条目进行匹配,并显示匹配结果。
         隐藏大多数默认输出。
    [-f] [-user] [-split]

  CertUtil [选项] -syncWithWU DestinationDir
  与 Windows 更新同步
    DestinationDir -- 要复制到的文件夹。
         已从 Windows Update 下载以下文件:
             authrootstl.cab - 包含第三方根的 CTL。
             disallowedcertstl.cab - 包含不允许的证书的 CTL。
             disallowedcert.sst - 不允许的证书。
             pinrulesstl.cab - 包含 SSL 捆绑规则的 CTL。
             pinrules.sst - 捆绑规则证书。
             <thumbprint>.crt - 第三方根。
    [-f]

  CertUtil [选项] -generateSSTFromWU SSTFile
  通过 Windows 更新生成 SST
    SSTFile -- 要创建的 .sst 文件。
         生成的 .sst 文件包含从 Windows 更新下载的
         第三方根。
    [-f] [-split]

  CertUtil [选项] -generatePinRulesCTL XMLFile CTLFile [SSTFile [QueryFilesPrefix]]
  生成捆绑规则 CTL
    XMLFile -- 要解析的输入 XML 文件。
    CTLFile -- 要生成的输出 CTL 文件。
    SSTFile -- 要创建的可选 .sst 文件。
         .sst 文件包含所有用于捆绑的
         证书。
    QueryFilesPrefix -- 要为数据库查询创建的可选 Domains.csv 文件和 Keys.csv 文件。
         QueryFilesPrefix 字符串附加到每个已创建文件的前面。
         Domains.csv 文件包含规则名称、域行。
         Keys.csv 文件包含规则名称、密钥 SHA256 指纹行。
    [-f]

  CertUtil [选项] -downloadOcsp CertificateDir OcspDir [ThreadCount] [修饰符]
  下载 OCSP 响应并写入目录
    CertificateDir -- 证书、存储和 PFX 文件的目录。
    OcspDir        -- 写入 OCSP 响应的目录。
    ThreadCount    -- 可选的并行下载的最大线程数。默认值为 10。
    修饰符 -- 以下一项或多项的逗号分隔的列表:
            DownloadOnce -- 下载一次,然后退出
            ReadOcsp -- 从 OcspDir 读取而不是写入
    默认情况 下,certutil 不会退出,必须显式终止。
    修饰符:
      DownloadOnce
      ReadOcsp

  CertUtil [选项] -generateHpkpHeader CertFileOrDir MaxAge [ReportUri] [Modifiers]
  使用指定文件或目录中的证书生成 HPKP 头
    CertFileOrDir  -- 证书的文件或目录。pin-sha256 的源。
    MaxAge         -- 最大有效期值(以秒为单位)。
    ReportUri      -- 可选报告 uri。
    Modifiers -- 逗号分隔的以下一项或多项的列表:
            includeSubDomains -- 追加 includeSubDomains。
    修饰符:
      includeSubDomains

  CertUtil [选项] -flushCache ProcessId CacheMask [修饰符]
  刷新选定进程(例如 lsass.exe)中的指定缓存
    ProcessId -- 要刷新的进程的数字 ID。设置为 0 以刷新所有已启用刷新的进程。
    CacheMask -- 要刷新的缓存的位掩码。以下位的数字 OR:
            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
               0: ShowOnly
    修饰符 -- 用逗号分隔的以下一个或多个内容的列表:
            Show - 显示正在刷新的缓存。Certutil 必须显式终止。
    修饰符:
      Show

  CertUtil [选项] -addEccCurve [CurveClass:]CurveName CurveParameters [CurveOID] [CurveType]
  添加 ECC 曲线

      CurveClass:       -- ECC 曲线类类型:
                             - WEIERSTRASS [默认值]
                             - MONTGOMERY
                             - TWISTED_EDWARDS

      CurveName         -- ECC 曲线名称

      CurveParameters   -- ECC 曲线参数。为下列其中一项
                             - 包含 ASN 编码参数的证书文件名
                             - 包含 ASN 编码参数的文件

      CurveOID          -- ECC 曲线 OID。为下列其中一项:
                             - 包含 ASN 编码 OID 的证书文件名
                             - 显式 ECC 曲线 OID

      CurveType         -- Schannel ECC NamedCurve 点(数字)
    [-f]

  CertUtil [选项] -deleteEccCurve CurveName | CurveOID
  删除 ECC 曲线
    CurveName -- ECC 曲线名称
    CurveOID -- ECC 曲线 OID
    [-f]

  CertUtil [选项] -displayEccCurve [CurveName | CurveOID]
  显示 ECC 曲线
    CurveName -- ECC 曲线名称
    CurveOID -- ECC 曲线 OID
    [-f]

  CertUtil [选项] -sign InFileList|SerialNumber|CRL OutFileList [StartDate[+|-dd:hh]+|-dd:hh] [+SerialNumberList | -SerialNumberList | -ObjectIdList | @ExtensionFile]
  CertUtil [选项] -sign InFileList|SerialNumber|CRL OutFileList [#HashAlgorithm] [+AlternateSignatureAlgorithm | -AlternateSignatureAlgorithm]
  CertUtil [选项] -sign InFileList OutFileList [Subject:CN=...] [Issuer:hex data]
  重新签名 CRL 或证书
    InFileList -- 要修改并重新签名的证书或 CRL 文件列
             表(以逗号分隔)
    SerialNumber -- 要创建的证书的序列号
             有效期和其他选项必须不存在
    CRL -- 创建空 CRL
             有效期和其他选项必须不存在
    OutFileList -- 已修改的证书或 CRL 输出文件列表
             (以逗号分隔)。文件数目必须同 InFileList 匹配。
    StartDate[+|-dd:hh]+|-dd:hh -- 新的有效期: 可选日期加上可选天数和小时数的开始日期偏移和可选天数和小时数的有效期如果使用多个字段,请使用(+)或(-)分隔符使用“now[+dd:hh]”在当前时间启动使用“now-dd:hh+dd:hh”在当前时间的固定偏移和固定的有效期开始使用“never”将无到期日期(仅用于 CRL)
    SerialNumberList -- 要添加或删除的序列号列表(以逗号分隔)
    ObjectIdList -- 要删除的扩展 ObjectId 列表(以逗号分隔)
    @ExtensionFile -- 包含要更新或删除的扩展的 INF 文件:
            [Extensions]
            2.5.29.31 = ; 删除 CRL 分发点扩展
            2.5.29.15 = "{hex}" ; 更新密钥使用扩展
            _continue_="03 02 01 86"
    HashAlgorithm -- 前面标有 # 号的哈希算法名称
    AlternateSignatureAlgorithm -- 替换签名算法说明符


    减号将删除序列号和扩展。加号将添加序列号到 CRL。从 CRL 中删除项目时,列表可能同时包含序列号和 ObjectId。
    AlternateSignatureAlgorithm 之前的减号将使用旧签名格式。
    AlternateSignatureAlgorithm 之前的加号将使用替换签名格式。
    如果未指定 AlternateSignatureAlgorithm,则使用证书或 CRL 中的签名格式。
    [-nullsign] [-f] [-user] [-Silent] [-Cert CertId] [-csp 提供程序]

  CertUtil [选项] -vroot [delete]
  创建/删除 Web 虚拟根和文件共享

  CertUtil [选项] -vocsproot [delete]
  创建/删除 OCSP Web Proxy 的 Web 虚拟根

  CertUtil [选项] -addEnrollmentServer Kerberos | UserName | ClientCertificate [AllowRenewalsOnly] [AllowKeyBasedRenewal]
  添加注册服务器应用程序   如有必要,请为指定的 CA 添加注册服务器应用程序和应用程序池。此命令不安装二进制文件或程序包客户端可通过以下身份验证方法之一连接到证书注册服务器
            Kerberos -- 使用 Kerberos SSL 凭据
            UserName -- 使用指定帐户作为 SSL 凭据
            ClientCertificate -- 使用 X.509 证书 SSL 凭据
            AllowRenewalsOnly -- 只能通过此 URL 将续订请求
    提交到此 CA
            AllowKeyBasedRenewal -- 允许使用在
                              AD 中没有关联帐户的证书。这仅适用于
                              ClientCertificate 和 AllowRenewalsOnly 模式。
    [-config Machine\CAName]
    修饰符:
      AllowRenewalsOnly
      AllowKeyBasedRenewal

  CertUtil [选项] -deleteEnrollmentServer Kerberos | UserName | ClientCertificate
  删除注册服务器应用程序
    如有必要,请为指定的 CA 删除注册服务器
    应用程序和应用程序池。此命令不删除二进制文件或程序包
    客户端可通过以下身份验证方法之一连接到
    证书注册服务器
            Kerberos -- 使用 Kerberos SSL 凭据
            UserName -- 使用指定帐户作为 SSL 凭据
            ClientCertificate -- 使用 X.509 证书 SSL 凭据。
    [-config Machine\CAName]

  CertUtil [选项] -addPolicyServer Kerberos | UserName | ClientCertificate [KeyBasedRenewal]
  添加策略服务器应用程序
    如有必要,请添加策略服务器应用程序和应用程序池。此命令
    不安装二进制文件或程序包
    客户端可通过以下身份验证方法之一连接到
    证书策略服务器
            Kerberos -- 使用 Kerberos SSL 凭据
            UserName -- 使用指定帐户作为 SSL 凭据
            ClientCertificate -- 使用 X.509 证书 SSL 凭据
            KeyBasedRenewal -- 仅向客户端返回
                              包含 KeyBasedRenewal 模板的策略。此标记
                              仅适用于 UserName 和 ClientCertificate
                              身份验证。

  CertUtil [选项] -deletePolicyServer Kerberos | UserName | ClientCertificate [KeyBasedRenewal]
  删除策略服务器应用程序
    如有必要,请删除策略服务器应用程序和应用程序池。此命令
    不删除二进制文件或程序包
    客户端可通过以下身份验证方法之一连接到
    证书策略服务器
            Kerberos -- 使用 Kerberos SSL 凭据
            UserName -- 使用指定帐户作为 SSL 凭据
            ClientCertificate -- 使用 X.509 证书 SSL 凭据
            KeyBasedRenewal -- KeyBasedRenewal 策略服务器。

  CertUtil [选项] -oid ObjectId [DisplayName | delete [LanguageId [Type]]]
  CertUtil [选项] -oid GroupId
  CertUtil [选项] -oid AlgId | AlgorithmName [GroupId]
  显示 ObjectId 或设置显示名称
    ObjectId -- 要显示或添加显示名称的 ObjectId
    GroupId -- 要枚举的 ObjectId 的十进制 GroupId 编号
    AlgId -- 要查找的 ObjectId 的十六进制 AlgId
    AlgorithmName -- 要查找的 ObjectId 的算法名称
    DisplayName -- 要在 DS 中存储的显示名称
    delete -- 删除显示名称
    LanguageId -- 语言 Id(默认为当前: 2052)
    Type -- 要创建的 DS 对象类型: 1 为模板(默认),
            2 为颁发策略,3 为应用程序策略
    用 -f 来创建 DS 对象。
    [-f]

  CertUtil [选项] -error ErrorCode
  显示错误代码消息文本

  CertUtil [选项] -getreg [{ca|restore|policy|exit|template|enroll|chain|PolicyServers}\[ProgId\]][RegistryValueName]
  显示注册表值
    ca --使用 CA 的注册表项
    restore --使用 CA 的还原注册表项
    policy --使用策略模块的注册表项
    exit --使用第一个退出模块的注册表项
    template --使用模板注册表项(对用户模板使用 -user)
    enroll --使用注册注册表项(对用户上下文使用 -user)
    chain --使用链配置注册表项
    PolicyServers --使用策略服务器注册表项
    ProgId --使用策略或退出模块的 ProgId (注册表子项名称)

    RegistryValueName --注册表值名称(使用 "Name*" 进行前缀匹配)
    Value --新的数字、字符串或日期注册表值或文件名。
        如果一个数字值以 "+" 或 "-" 开头,则新值中指定的位将在
        现有的注册表值中被设置或清除。

        如果字符串值以 "+" 或 "-" 开头,并且现有值为
        一个 REG_MULTI_SZ 值,则此字符串将添加到
        现有的注册表值中,或从中删除。
        若要强制创建一个 REG_MULTI_SZ 值,请在字符串值的末尾添加
        一个 "\n"。

        如果值以 "@" 开头,则值的其余部分为
        文件的名称,该文件包含
        一个二进制值的十六进制文本表示形式。
        如果它未引用一个有效文件,则会将其作为
        [Date][+|-][dd:hh] 进行分析 -- 可选日期加上或减去可选
        天数和小时数。
        如果同时指定两者,则使用加号(+)或减号(-)分隔符。
        将 "now+dd:hh" 用于相对于当前时间的日期。
        使用 "i64" 作为后缀以创建 REG_QWORD 值。

    使用 "chain\ChainCacheResyncFiletime @now" 有效地刷新缓存的 CRL。
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-config Machine\CAName]

    注册表别名:
      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

  CertUtil [选项] -setreg [{ca|restore|policy|exit|template|enroll|chain|PolicyServers}\[ProgId\]]RegistryValueName 值
  设置注册表值
    ca --使用 CA 的注册表项
    restore --使用 CA 的还原注册表项
    policy --使用策略模块的注册表项
    exit --使用第一个退出模块的注册表项
    template --使用模板注册表项(对用户模板使用 -user)
    enroll --使用注册注册表项(对用户上下文使用 -user)
    chain --使用链配置注册表项
    PolicyServers --使用策略服务器注册表项
    ProgId --使用策略或退出模块的 ProgId (注册表子项名称)

    RegistryValueName --注册表值名称(使用 "Name*" 进行前缀匹配)
    Value --新的数字、字符串或日期注册表值或文件名。
        如果一个数字值以 "+" 或 "-" 开头,则新值中指定的位将在
        现有的注册表值中被设置或清除。

        如果字符串值以 "+" 或 "-" 开头,并且现有值为
        一个 REG_MULTI_SZ 值,则此字符串将添加到
        现有的注册表值中,或从中删除。
        若要强制创建一个 REG_MULTI_SZ 值,请在字符串值的末尾添加
        一个 "\n"。

        如果值以 "@" 开头,则值的其余部分为
        文件的名称,该文件包含
        一个二进制值的十六进制文本表示形式。
        如果它未引用一个有效文件,则会将其作为
        [Date][+|-][dd:hh] 进行分析 -- 可选日期加上或减去可选
        天数和小时数。
        如果同时指定两者,则使用加号(+)或减号(-)分隔符。
        将 "now+dd:hh" 用于相对于当前时间的日期。
        使用 "i64" 作为后缀以创建 REG_QWORD 值。

    使用 "chain\ChainCacheResyncFiletime @now" 有效地刷新缓存的 CRL。
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-config Machine\CAName]

  CertUtil [选项] -delreg [{ca|restore|policy|exit|template|enroll|chain|PolicyServers}\[ProgId\]][RegistryValueName]
  删除注册表值
    ca --使用 CA 的注册表项
    restore --使用 CA 的还原注册表项
    policy --使用策略模块的注册表项
    exit --使用第一个退出模块的注册表项
    template --使用模板注册表项(对用户模板使用 -user)
    enroll --使用注册注册表项(对用户上下文使用 -user)
    chain --使用链配置注册表项
    PolicyServers --使用策略服务器注册表项
    ProgId --使用策略或退出模块的 ProgId (注册表子项名称)

    RegistryValueName --注册表值名称(使用 "Name*" 进行前缀匹配)
    Value --新的数字、字符串或日期注册表值或文件名。如果一个数字值以 "+" 或 "-" 开头,则新值中指定的位将在现有的注册表值中被设置或清除。

        如果字符串值以 "+" 或 "-" 开头,并且现有值为一个 REG_MULTI_SZ 值,则此字符串将添加到现有的注册表值中,或从中删除。若要强制创建一个 REG_MULTI_SZ 值,请在字符串值的末尾添加 一个 "\n"。

        如果值以 "@" 开头,则值的其余部分为文件的名称,该文件包含一个二进制值的十六进制文本表示形式。如果它未引用一个有效文件,则会将其作为[Date][+|-][dd:hh] 进行分析 -- 可选日期加上或减去可选天数和小时数。如果同时指定两者,则使用加号(+)或减号(-)分隔符。将 "now+dd:hh" 用于相对于当前时间的日期。使用 "i64" 作为后缀以创建 REG_QWORD 值。使用 "chain\ChainCacheResyncFiletime @now" 有效地刷新缓存的 CRL。
    [-f] [-Enterprise] [-user] [-GroupPolicy] [-config Machine\CAName]

    注册表别名:
      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

  CertUtil [选项] -ImportKMS UserKeyAndCertFile [CertId]   为密钥存档导入用户密钥和证书到服务器数据库
    UserKeyAndCertFile -- 包含要存档的用户私钥和
    证书的数据文件。这可以是任何以下内容:交换密钥管理服务器(KMS)导出文件PFX 文件
    CertId -- KMS 导出文件解密证书匹配令牌。请参见 -store。   使用 -f 导入不是由 CA 颁发的证书。
    [-f] [-Silent] [-split] [-config Machine\CAName] [-p 密码] [-symkeyalg SymmetricKeyAlgorithm[,KeyLength]]

  CertUtil [选项] -ImportCert Certfile [ExistingRow]   将证书文件导入数据库使用 ExistingRow 导入证书以代替相同密钥的挂起的请求。使用 -f 来导入非 CA 颁发的证书。还可能需要配置 CA 来支持外部证书导入:
         certutil -setreg ca\KRAFlags +KRAF_ENABLEFOREIGN
    [-f] [-config Machine\CAName]

  CertUtil [选项] -GetKey SearchToken [RecoveryBlobOutFile]
  CertUtil [选项] -GetKey SearchToken script OutputScriptFile
  CertUtil [选项] -GetKey SearchToken retrieve | recover OutputFileBaseName   检索存档的私钥恢复 Blob,生成恢复脚本 或恢复存档的密钥
    script -- 生成脚本以检索和恢复密钥(找到多个匹配的恢复代理或未指定输出文件时的默认行为)。
    retrieve -- 检索一个或多个密钥恢复 Blob (恰好找到一个匹配的恢复代理并指定了输出文件时的默认行为)
    recover -- 在一个步骤中检索和恢复私钥(需要密钥恢复代理证书和私钥)
    SearchToken -- 用于选择要恢复的密钥和证书。
            可以是任何以下内容:
            证书公用名称
            证书序列号
            证书 SHA-1 哈希(指纹)
            证书 KeyId SHA-1 哈希(使用者密钥标识符)
            请求者名称(domain\user)
            UPN (user@domain)
    RecoveryBlobOutFile -- 包含一个证书链和关联的私钥的输出文件,仍加密到一个或多个密钥恢复代理证书。
    OutputScriptFile -- 包含批处理脚本以检索和恢复私钥的输出文件。
    OutputFileBaseName -- 输出文件基本名称。对于 retrieve,将截断任何扩展,并为每个密钥恢复 Blob附加证书特定的字符串和 .rec扩展。每个文件包含一个证书链和关联的私钥,仍加密到一个或多个密钥恢复代理证书。对于 recover,将截断任何扩展并附加 .p12 扩展。包含恢复的证书链和关联的私钥(存储为 PFX 文件)。
    [-f] [-UnicodeText] [-Silent] [-config Machine\CAName] [-p 密码] [-ProtectTo SAMNameAndSIDList] [-csp 提供程序]

  CertUtil [选项] -RecoverKey RecoveryBlobInFile [PFXOutFile [RecipientIndex]]   恢复存档的私钥
    [-f] [-user] [-Silent] [-split] [-p 密码] [-ProtectTo SAMNameAndSIDList] [-csp 提供程序] [-t 超时]

  CertUtil [选项] -MergePFX PFXInFileList PFXOutFile [Modifiers]   合并 PFX 文件
    PFXInFileList -- 以逗号分隔的 PFX 输入文件列表
    PFXOutFile -- PFX 输出文件
    Modifiers -- 包含下列一项或多项的逗号分隔列表:
            ExtendedProperties -- 包含扩展属性
            NoEncryptCert -- 不加密证书
            EncryptCert -- 加密证书
    在命令行中指定的密码是以逗号分隔的密码列表。如果指定多个密码,则最后一个密码将用于输出文件。如果仅提供一个密码或最后一个密码为 "*",则系统将提示用户提供输出文件的密码。
    [-f] [-user] [-split] [-p 密码] [-ProtectTo SAMNameAndSIDList] [-csp 提供程序]

  CertUtil [选项] -ConvertEPF PFXInFileList EPFOutFile [cast | cast-] [V3CACertId][,Salt]
  将 PFX 文件转换为 EPF 文件
    PFXInFileList -- 逗号分隔的 PFX 输入文件列表
    EPF -- EPF 输出文件
    cast -- 使用 CAST 64 加密
    cast- -- 使用 CAST 64 加密(导出)
    V3CACertId -- V3 CA 证书匹配令牌。参阅 -store CertId 描述。
    Salt -- EPF 输出文件加密盐字符串在命令行指定的密码是逗号分隔的密码列表。如果指定了一个以上的密码,将对输出文件使用最后一个密码。如果只提供了一个密码或最后一个密码为 "*",将提示用户输出文件的密码。
    [-f] [-Silent] [-split] [-dc DCName] [-p 密码] [-csp 提供程序]

  CertUtil [选项] -add-chain LogId 证书 OutFile
  添加证书链
    [-f]

  CertUtil [选项] -add-pre-chain LogId 预植证书 OutFile
  添加预植证书链
    [-f]

  CertUtil [选项] -get-sth [LogId]
  获取签名树头
    [-f]

  CertUtil [选项] -get-sth-consistency LogId TreeSize1 TreeSize2
  获取签名树头更改
    [-f]

  CertUtil [选项] -get-proof-by-hash LogId 哈希[TreeSize]
  获取哈希证明
    [-f]

  CertUtil [选项] -get-entries LogId FirstIndex LastIndex
  获取项
    [-f]

  CertUtil [选项] -get-roots LogId
  获取根
    [-f]

  CertUtil [选项] -get-entry-and-proof LogId 索引 [TreeSize]
  获取项和证明
    [-f]

  CertUtil [选项] -VerifyCT 证书 SCT [precert]
  验证证书 SCT
    [-f]

  CertUtil [选项] -?
  显示该用法消息

选项:
  -nullsign         -- 将数据的哈希用作签名
  -f                -- 强制覆盖
  -Enterprise       -- (-ent) 使用本地计算机 Enterprise 注册表证书存储
  -user             -- 使用 HKEY_CURRENT_USER 项或证书存储
  -GroupPolicy      -- (-gp) 使用组策略证书存储
  -ut               -- 显示用户模板
  -mt               -- 显示计算机模板
  -Unicode          -- 以 Unicode 编写重定向输出
  -UnicodeText      -- 以 Unicode 编写输出文件
  -gmt              -- 将时间显示为 GMT
  -seconds          -- 用秒和毫秒显示时间
  -Silent           -- (-q) 用无声标志获得 crypt 上下文
  -split            -- 分离嵌入的 ASN.1 元素,并保存到文件
  -v                -- 详细操作
  -privatekey       -- 显示密码和私钥数据
  -pin PIN                  -- 智能卡 PIN
  -urlfetch         -- 检索并验证 AIA 证书和 CDP CRL
  -config Machine\CAName    -- CA 和计算机名称字符串
  -PolicyServer URLOrId     -- 策略服务器 URL 或 ID
    对于选择 U/I,使用 -PolicyServer -
    对于所有策略服务器,使用 -PolicyServer *
  -Anonymous        -- 使用匿名 SSL 凭据
  -Kerberos         -- 使用 Kerberos SSL 凭据
  -ClientCertificate ClientCertId -- 使用 X.509 证书 SSL 凭据
    对于选择 U/I,使用 -ClientCertificate -
  -UserName 用户名          -- 使用指定帐户作为 SSL 凭据
    对于选择 U/I,使用 -UserName -
  -Cert CertId              -- 签名证书
  -dc DCName                -- 目标为一个特定的域控制器
  -restrict 限制列表        -- 以逗号分隔的限制列表每个限制都由一个列名称、一个关系操作符和一个整数常量、字符串或日期组成。列名称前面可以带有加号或减号,以表示排列顺序。
     例如:
        "RequestId = 47"
        "+RequesterName >= a, RequesterName < b"
        "-RequesterName > DOMAIN, Disposition = 21"
  -out 栏列表               -- 以逗号分隔的栏列表
  -p 密码                   -- 密码
  -ProtectTo SAMNameAndSIDList -- 以逗号分隔的 SAM 名称/SID 列表
  -csp 提供程序             -- 提供程序
        KSP -- "Microsoft Software Key Storage Provider"
        TPM -- "Microsoft Platform Crypto Provider"
        NGC -- "Microsoft Passport Key Storage Provider"
        SC -- "Microsoft Smart Card Key Storage Provider"
  -Location AlternateStorageLocation -- (-loc) AlternateStorageLocation
        AIK -- "C:\ProgramData\Microsoft\Crypto\PCPKSP\WindowsAIK"
  -t 超时                   -- URL 取指令超时(毫秒)
  -symkeyalg SymmetricKeyAlgorithm[,KeyLength] -- 对称密钥算法的名称和可选密钥长度,例如: AES、128 或 3DES
  -sid WELL_KNOWN_SID_TYPE  -- 数字 SID
            22 -- 本地系统
            23 -- 本地服务
            24 -- 网络服务
  -sslpolicy ServerName     -- 与 ServerName 匹配的 SSL 策略

哈希算法: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512

CertUtil -?              -- 显示动词列表(命名列表)
CertUtil -dump -?        -- 显示 "dump" 动词的帮助文本
CertUtil -v -?           -- 显示所有动词的所有帮助文本

CertUtil: -? 命令成功完成。


C:\Users\Administrator>CertUtil -?

动词:
  -dump             -- 转储配置信息或文件
  -dumpPFX          -- 转储 PFX 结构
  -asn              -- 分析 ASN.1 文件

  -decodehex        -- 解码十六进制编码的文件
  -decode           -- 解码 Base64 编码的文件
  -encode           -- 将文件编码为 Base64

  -deny             -- 拒绝挂起的申请
  -resubmit         -- 重新提交挂起的申请
  -setattributes    -- 为挂起申请设置属性
  -setextension     -- 为挂起申请设置扩展
  -revoke           -- 吊销证书
  -isvalid          -- 显示当前证书部署

  -getconfig        -- 获取默认配置字符串
  -ping             -- Ping Active Directory 证书服务申请接口
  -pingadmin        -- Ping Active Directory 证书服务管理接口
  -CAInfo           -- 显示 CA 信息
  -ca.cert          -- 检索 CA 的证书
  -ca.chain         -- 检索 CA 的证书链
  -GetCRL           -- 获取 CRL
  -CRL              -- 发布新的 CRL [或仅增量 CRL]
  -shutdown         -- 关闭 Active Directory 证书服务

  -installCert      -- 安装证书颁发机构证书
  -renewCert        -- 续订证书颁发机构证书

  -schema           -- 转储证书架构
  -view             -- 转储证书视图
  -db               -- 转储原始数据库
  -deleterow        -- 删除服务器数据库行

  -backup           -- 备份 Active Directory 证书服务
  -backupDB         -- 备份 Active Directory 证书服务数据库
  -backupKey        -- 备份 Active Directory 证书服务证书和私钥
  -restore          -- 还原 Active Directory 证书服务
  -restoreDB        -- 还原 Active Directory 证书服务数据库
  -restoreKey       -- 还原 Active Directory 证书服务证书和私钥
  -importPFX        -- 导入证书和私钥
  -dynamicfilelist  -- 显示动态文件列表
  -databaselocations -- 显示数据库位置
  -hashfile         -- 通过文件生成并显示加密哈希

  -store            -- 转储证书存储
  -enumstore        -- 枚举证书存储
  -addstore         -- 将证书添加到存储
  -delstore         -- 从存储删除证书
  -verifystore      -- 验证存储中的证书
  -repairstore      -- 修复密钥关联,或者更新证书属性或密钥安全描述符
  -viewstore        -- 转储证书存储
  -viewdelstore     -- 从存储删除证书
  -UI               -- 调用 CryptUI
  -attest           -- 验证密钥证明请求

  -dsPublish        -- 将证书或 CRL 发布到 Active Directory

  -ADTemplate       -- 显示 AD 模板
  -Template         -- 显示注册策略模板
  -TemplateCAs      -- 显示模板的 CA
  -CATemplates      -- 显示 CA 的模板
  -SetCASites       -- 管理 CA 的站点名称
  -enrollmentServerURL -- 显示、添加或删除与 CA 关联的注册服务器 URL
  -ADCA             -- 显示 AD CA
  -CA               -- 显示注册策略 CA
  -Policy           -- 显示注册策略
  -PolicyCache      -- 显示或删除注册策略缓存项目
  -CredStore        -- 显示、添加或删除凭据存储项目
  -InstallDefaultTemplates -- 安装默认的证书模板
  -URLCache         -- 显示或删除 URL 缓存项目
  -pulse            -- 以脉冲方式执行自动注册事件或 NGC 任务
  -MachineInfo      -- 显示 Active Directory 计算机对象信息
  -DCInfo           -- 显示域控制器信息
  -EntInfo          -- 显示企业信息
  -TCAInfo          -- 显示 CA 信息
  -SCInfo           -- 显示智能卡信息

  -SCRoots          -- 管理智能卡根证书

  -DeleteHelloContainer -- 删除 Hello 登录容器。
     ** 在使用此选项后, 用户需要注销才能完成。**
  -verifykeys       -- 验证公/私钥集
  -verify           -- 验证证书,CRL 或链
  -verifyCTL        -- 验证 AuthRoot 或不允许的证书 CTL
  -syncWithWU       -- 与 Windows 更新同步
  -generateSSTFromWU -- 通过 Windows 更新生成 SST
  -generatePinRulesCTL -- 生成捆绑规则 CTL
  -downloadOcsp     -- 下载 OCSP 响应并写入目录
  -generateHpkpHeader -- 使用指定文件或目录中的证书生成 HPKP 头
  -flushCache       -- 刷新选定进程(例如 lsass.exe)中的指定缓存
  -addEccCurve      -- 添加 ECC 曲线
  -deleteEccCurve   -- 删除 ECC 曲线
  -displayEccCurve  -- 显示 ECC 曲线
  -sign             -- 重新签名 CRL 或证书

  -vroot            -- 创建/删除 Web 虚拟根和文件共享
  -vocsproot        -- 创建/删除 OCSP Web Proxy 的 Web 虚拟根
  -addEnrollmentServer -- 添加注册服务器应用程序
  -deleteEnrollmentServer -- 删除注册服务器应用程序
  -addPolicyServer  -- 添加策略服务器应用程序
  -deletePolicyServer -- 删除策略服务器应用程序
  -oid              -- 显示 ObjectId 或设置显示名称
  -error            -- 显示错误代码消息文本
  -getreg           -- 显示注册表值
  -setreg           -- 设置注册表值
  -delreg           -- 删除注册表值

  -ImportKMS        -- 为密钥存档导入用户密钥和证书到服务器数据库
  -ImportCert       -- 将证书文件导入数据库
  -GetKey           -- 检索存档的私钥恢复 Blob,生成恢复脚本 或恢复存档的密钥
  -RecoverKey       -- 恢复存档的私钥
  -MergePFX         -- 合并 PFX 文件
  -ConvertEPF       -- 将 PFX 文件转换为 EPF 文件

  -add-chain        -- (-AddChain) 添加证书链
  -add-pre-chain    -- (-AddPrechain) 添加预植证书链
  -get-sth          -- (-GetSTH) 获取签名树头
  -get-sth-consistency -- (-GetSTHConsistency) 获取签名树头更改
  -get-proof-by-hash -- (-GetProofByHash) 获取哈希证明
  -get-entries      -- (-GetEntries) 获取项
  -get-roots        -- (-GetRoots) 获取根
  -get-entry-and-proof -- (-GetEntryAndProof) 获取项和证明
  -VerifyCT         -- 验证证书 SCT
  -?                -- 显示该用法消息


CertUtil -?              -- 显示动词列表(命名列表)
CertUtil -dump -?        -- 显示 "dump" 动词的帮助文本
CertUtil -v -?           -- 显示所有动词的所有帮助文本

CertUtil: -? 命令成功完成。


C:\Users\Administrator> CertUtil -dump -?
用法:
  CertUtil [选项] [-dump]
  CertUtil [选项] [-dump] [文件]
  转储配置信息或文件

选项:
  -f                -- 强制覆盖
  -user             -- 使用 HKEY_CURRENT_USER 项或证书存储
  -Unicode          -- 以 Unicode 编写重定向输出
  -gmt              -- 将时间显示为 GMT
  -seconds          -- 用秒和毫秒显示时间
  -Silent           -- (-q) 用无声标志获得 crypt 上下文
  -split            -- 分离嵌入的 ASN.1 元素,并保存到文件
  -v                -- 详细操作
  -privatekey       -- 显示密码和私钥数据
  -pin PIN                  -- 智能卡 PIN
  -p 密码                   -- 密码
  -t 超时                   -- URL 取指令超时(毫秒)
  -sid WELL_KNOWN_SID_TYPE  -- 数字 SID
            22 -- 本地系统
            23 -- 本地服务
            24 -- 网络服务

CertUtil -?              -- 显示动词列表(命名列表)
CertUtil -dump -?        -- 显示 "dump" 动词的帮助文本
CertUtil -v -?           -- 显示所有动词的所有帮助文本

命令 描述 示例应用场景与命令示例
CertUtil -dump 转储配置信息或文件 场景:查看证书配置或文件详细信息。 示例:CertUtil -dump mycert.cer 用于显示证书的详细信息。
CertUtil -dumpPFX 转储 PFX 结构 场景:导出 PFX 文件中的证书及其私钥。 示例:CertUtil -dumpPFX mycert.pfx 转储 PFX 文件的内容。
CertUtil -asn 分析 ASN.1 文件 场景:分析证书的 ASN.1 编码格式。 示例:CertUtil -asn mycert.der 将 DER 格式证书分析为 ASN.1 编码。
CertUtil -decodehex 解码十六进制编码的文件 场景:将十六进制编码的证书文件转回原始格式。 示例:CertUtil -decodehex encoded_cert.hex 解码十六进制编码的证书。
CertUtil -decode 解码 Base64 编码的文件 场景:将 Base64 编码的证书文件还原为原始格式。 示例:CertUtil -decode encoded_cert.b64 解码 Base64 编码证书。
CertUtil -encode 将文件编码为 Base64 场景:将证书或私钥文件转换为 Base64 格式。 示例:CertUtil -encode mycert.pem 将证书编码为 Base64。
CertUtil -deny 拒绝挂起的申请 场景:拒绝证书请求。 示例:CertUtil -deny 1234 拒绝编号为 1234 的证书申请。
CertUtil -resubmit 重新提交挂起的申请 场景:重新提交被挂起的证书申请。 示例:CertUtil -resubmit 1234 重新提交编号为 1234 的证书申请。
CertUtil -setattributes 为挂起申请设置属性 场景:为待处理的证书申请设置属性。 示例:CertUtil -setattributes 1234 -attrib "Subject=example" 为申请设置属性。
CertUtil -setextension 为挂起申请设置扩展 场景:为待处理的证书申请添加扩展。 示例:CertUtil -setextension 1234 -ext "KeyUsage=DigitalSignature"
CertUtil -revoke 吊销证书 场景:撤销不再使用的证书。 示例:CertUtil -revoke mycert.cer 撤销名为 mycert.cer 的证书。
CertUtil -isvalid 显示当前证书部署 场景:检查证书是否有效并已正确部署。 示例:CertUtil -isvalid mycert.cer 检查证书有效性。
CertUtil -getconfig 获取默认配置字符串 场景:获取证书服务的当前配置。 示例:CertUtil -getconfig 获取当前配置的详细信息。
CertUtil -ping Ping Active Directory 证书服务申请接口 场景:检查与证书服务的连接状态。 示例:CertUtil -ping 测试连接证书服务的状态。
CertUtil -pingadmin Ping Active Directory 证书服务管理接口 场景:检查与证书服务管理接口的连接状态。 示例:CertUtil -pingadmin 测试连接证书服务管理接口的状态。
CertUtil -CAInfo 显示 CA 信息 场景:查看证书颁发机构 (CA) 的详细信息。 示例:CertUtil -CAInfo 查看 CA 信息。
CertUtil -ca.cert 检索 CA 的证书 场景:获取 CA 的证书用于验证和信任。 示例:CertUtil -ca.cert 获取证书颁发机构的证书。
CertUtil -ca.chain 检索 CA 的证书链 场景:查看证书颁发机构的证书链。 示例:CertUtil -ca.chain 获取 CA 的证书链。
CertUtil -GetCRL 获取 CRL 场景:获取证书吊销列表 (CRL)。 示例:CertUtil -GetCRL 下载最新的 CRL 文件。
CertUtil -CRL 发布新的 CRL [或仅增量 CRL] 场景:发布新的证书吊销列表。 示例:CertUtil -CRL 发布新的证书吊销列表。
CertUtil -shutdown 关闭 Active Directory 证书服务 场景:停止证书服务以进行维护。 示例:CertUtil -shutdown 关闭 Active Directory 证书服务。
CertUtil -installCert 安装证书颁发机构证书 场景:将证书颁发机构证书添加到受信任根证书存储。 示例:CertUtil -installCert ca_cert.pem 安装 CA 证书。
CertUtil -renewCert 续订证书颁发机构证书 场景:续订 CA 的证书以避免过期。 示例:CertUtil -renewCert 续订证书。
CertUtil -schema 转储证书架构 场景:查看证书架构的详细信息。 示例:CertUtil -schema 显示证书架构信息。
CertUtil -view 转储证书视图 场景:查看证书的详细视图。 示例:CertUtil -view mycert.cer 转储证书的视图信息。
CertUtil -db 转储原始数据库 场景:查看证书存储的原始数据库内容。 示例:CertUtil -db 转储数据库内容。
CertUtil -deleterow 删除服务器数据库行 场景:从证书存储中删除特定行。 示例:CertUtil -deleterow 1234 删除行编号为 1234 的数据。
CertUtil -backup 备份 Active Directory 证书服务 场景:备份证书服务数据库以防丢失。 示例:CertUtil -backup backup_file.bak 备份证书数据库。
CertUtil -backupDB 备份 Active Directory 证书服务数据库 场景:备份证书服务数据库。 示例:CertUtil -backupDB db_backup.bak 备份证书数据库。
CertUtil -restore 还原 Active Directory 证书服务 场景:恢复证书服务配置和数据。 示例:CertUtil -restore restore_file.bak 恢复证书服务。
CertUtil -restoreDB 还原 Active Directory 证书服务数据库 场景:恢复证书服务数据库。 示例:CertUtil -restoreDB db_restore.bak 恢复证书数据库。
CertUtil -importPFX 导入证书和私钥 场景:导入包含证书和私钥的 PFX 文件。 示例:CertUtil -importPFX mycert.pfx 导入 PFX 文件中的证书和私钥。

Certutil命令起源于微软Windows操作系统,用于执行各种与证书和密钥相关的操作。它是Windows操作系统中的一个命令行工具,最初引入于Windows 2000。

Certutil的主要功能包括查看证书、导出证书、导入证书、验证证书链、生成密钥对等。它通常被系统管理员和安全专家用于管理和维护证书、密钥和证书颁发机构(CA)相关的任务。

Certutil命令的设计旨在提供一种灵活而强大的方式来处理数字证书和密钥,以确保系统的安全性和可信度。

Certutil命令是Windows操作系统中的一个强大的命令行工具,用于执行各种与证书和密钥相关的操作。底层原理涉及以下几个方面:

  1. 与证书存储库的交互: Certutil命令可以与Windows的证书存储库交互,该存储库包含各种证书,包括个人证书、受信任的根证书、颁发者证书等。Certutil可以读取、添加、删除和导出这些证书。

  2. 使用CryptoAPI: Certutil命令依赖于Windows的CryptoAPI(加密应用程序接口)来执行各种加密和证书相关操作。CryptoAPI提供了加密、解密、签名和验证的基础功能。

  3. 与证书颁发机构(CA)的交互: Certutil可以与Windows的证书颁发机构进行交互,包括请求证书、颁发证书、撤销证书等。它还可以用于检查CA的配置和状态。

  4. 命令行参数和选项: Certutil命令提供了丰富的命令行参数和选项,可以执行多种任务。根据这些参数,Certutil可以执行特定的操作,如导入/导出证书、检查证书链的有效性、查看证书详细信息等。

  5. 与文件系统的交互: Certutil命令可以与文件系统交互,用于导入/导出证书、生成密钥对、保存证书链等。这使得Certutil在处理文件级操作时非常灵活。

Certutil的底层原理和其功能范围使其成为管理和维护Windows证书体系的关键工具。通过与Windows的各种安全组件和存储库进行交互,它为系统管理员和安全专家提供了丰富的工具集,以确保系统的安全性和数字证书的完整性。

Certutil命令在Windows操作系统中具有广泛的功能,可以用于处理证书、证书颁发机构(CA)以及密钥相关的操作。以下是Certutil命令的主要功能分类:

  1. 证书管理

    • 导入和导出证书。
    • 查看证书的详细信息。
    • 验证证书链的有效性。
    • 生成证书请求和处理证书颁发。
  2. 证书存储库管理

    • 管理系统的证书存储库,包括个人证书存储库、受信任的根证书存储库等。
    • 查看和编辑存储库中的证书。
    • 将证书添加到存储库或从存储库中删除证书。
  3. 证书颁发机构(CA)管理

    • 申请证书颁发机构的证书。
    • 撤销证书。
    • 管理证书颁发机构的设置和状态。
  4. 密钥和密钥对管理

    • 生成和导出密钥对。
    • 管理私钥和公钥。
    • 导入和导出密钥文件。
  5. 文件操作

    • 生成、导入、导出和转换证书和密钥文件。
    • 签名文件。
    • 对文件进行加密和解密操作。
  6. 证书模板管理

    • 管理证书模板。
    • 查看证书模板的详细信息。
    • 导出证书模板。
  7. 证书撤销列表(CRL)管理

    • 查看和管理证书撤销列表。
    • 导入和导出证书撤销列表。

Certutil的这些功能通过提供命令行参数来实现,允许用户根据需求执行特定的证书和密钥操作。这些操作对于管理系统的安全性和数字证书的完整性至关重要。

Certutil 命令是 Windows 操作系统中用于证书和密钥管理的重要工具,其发展阶段与 Windows 操作系统和证书管理需求的演变密切相关。以下是 Certutil 命令的发展阶段:

  1. 初期阶段

    • 在 Windows NT 和 Windows 2000 中,Certutil 命令首次引入,作为与 Windows 证书颁发机构(CA)和证书存储库进行交互的工具。其主要功能是基本的证书管理、证书颁发请求和证书存储库操作。
  2. 扩展阶段:

    • 随着 Windows XP 和 Windows Server 2003 的发布,Certutil 的功能得到了扩展,包括支持更复杂的证书管理操作和证书链验证。这个阶段引入了更多证书管理和证书颁发机构管理的功能,支持证书请求和证书颁发。
  3. 成熟阶段

    • 在 Windows Vista 和 Windows Server 2008 以及随后的版本中,Certutil 命令的功能变得更加成熟,支持更广泛的证书操作。此时,Certutil 开始包含证书撤销列表(CRL)管理、证书模板操作等功能。
  4. 现代阶段

    • 在 Windows 10 和 Windows Server 2016 及后续版本中,Certutil 命令进一步增强,支持更复杂的加密操作和安全需求。此阶段,Certutil 命令的功能更全面,提供了与现代 Windows 安全体系和证书管理的完全集成。

在整个发展过程中,Certutil 命令不断适应 Windows 操作系统和企业环境的需求变化。随着 Windows 的安全功能不断升级,Certutil 的命令选项和功能集也不断扩展。通过这些阶段,Certutil 命令成为 Windows 操作系统中强大的证书管理工具,为系统管理员和安全专家提供了广泛的证书和密钥管理功能。

Certutil 命令在 Windows 操作系统中的应用场景广泛,涉及证书管理、密钥管理、安全性操作以及与证书颁发机构(CA)交互等方面。以下是 Certutil 命令在不同场景中的主要应用:

  1. 证书管理

    • 导入和导出证书:将证书导入或导出到文件中,以便在不同系统或应用程序之间共享证书。
    • 查看证书信息:查看证书的详细信息,包括颁发者、有效期、用途等。
    • 验证证书链:验证证书链的有效性和完整性,确保证书的可信度。
    • 撤销证书:撤销不再需要或存在安全风险的证书。
  2. 证书颁发机构(CA)管理

    • 证书申请:生成证书申请并提交给证书颁发机构(CA)。
    • 证书颁发:处理证书申请并颁发证书。
    • 管理证书颁发机构:查看和管理证书颁发机构的状态和设置。
  3. 证书存储库管理

    • 管理证书存储库:查看、添加或删除系统的证书存储库中的证书。
    • 查看存储库内容:列出存储库中的证书及其详细信息。
  4. 密钥和密钥对管理

    • 生成密钥对:创建新的公钥和私钥对,以用于加密、解密和签名。
    • 导出和导入密钥:将密钥导入或导出到文件中,以便备份或传输。
    • 管理私钥:查看、备份或还原系统的私钥。
  5. 证书模板管理

    • 查看证书模板:查看系统中证书模板的详细信息。
    • 导出和导入证书模板:将证书模板导入或导出到文件中,以便在不同系统之间共享。
  6. 证书撤销列表(CRL)管理

    • 查看CRL:查看证书撤销列表中的信息。
    • 更新CRL:从证书颁发机构下载最新的证书撤销列表。
  7. 文件操作

    • 加密和解密文件:使用证书和密钥对文件进行加密和解密操作。
    • 文件签名:使用证书和私钥对文件进行数字签名,确保文件的完整性和真实性。

Certutil 命令在这些场景中发挥重要作用,为系统管理员和安全专家提供了灵活且强大的工具来管理证书和密钥,确保系统和应用程序的安全性。

在命令提示符下输入"certutil /?"来查看完整的命令参数列表和使用说明。

  • -dump:转储配置信息或文件

  • -dumpPFX:转储PFX结构

  • -asn:解析ASN.1文件

  • -decodehex:解码十六进制编码的文件

  • -decode:解码Base64编码的文件

  • -encode:将文件编码为Base64

  • -deny:拒绝挂起的请求

  • -resubmit:重新提交挂起的请求

  • -setattributes:设置挂起请求的属性

  • -setextension:设置挂起请求的扩展

  • -revoke:吊销证书

  • -isvalid:显示当前证书状态

  • -getconfig:获取默认配置字符串

  • -ping:Ping活动目录证书服务请求接口

  • -pingadmin:Ping活动目录证书服务管理员接口

  • -CAInfo:显示CA信息

  • -ca.cert:检索CA的证书

  • -ca.chain:检索CA的证书链

  • -GetCRL:获取CRL

  • -CRL:发布新的CRL(或仅发布增量CRL)

  • -shutdown:关闭活动目录证书服务

  • -installCert:安装认证机构证书

  • -renewCert:更新认证机构证书

  • -schema:转储证书模式

  • -view:转储证书视图

  • -db:转储原始数据库

  • -deleterow:删除服务器数据库行

  • -backup:备份活动目录证书服务

  • -backupDB:备份活动目录证书服务数据库

  • -backupKey:备份活动目录证书服务证书和私钥

  • -restore:恢复活动目录证书服务

  • -restoreDB:恢复活动目录证书服务数据库

  • -restoreKey:恢复活动目录证书服务证书和私钥

  • -importPFX:导入证书和私钥

  • -dynamicfilelist:显示动态文件列表

  • -databaselocations:显示数据库位置

  • -hashfile:生成并显示文件的加密哈希值

  • -store:转储证书存储

  • -enumstore:枚举证书存储

  • -addstore:将证书添加到存储中

  • -delstore:从存储中删除证书

  • -verifystore:验证存储中的证书

  • -repairstore:修复密钥关联或更新证书属性或密钥安全描述符

  • -viewstore:转储证书存储

  • -viewdelstore:从存储中删除证书

  • -UI:调用CryptUI

  • -attest:验证密钥认证请求

  • -dsPublish:将证书或CRL发布到活动目录

  • -ADTemplate:显示AD模板

  • -Template:显示申请策略模板

  • -TemplateCAs:显示模板的CAs

  • -CATemplates:显示CA的模板

  • -SetCASites:管理CA的站点名称

  • -enrollmentServerURL:显示、添加或删除与CA关联的申请服务器URL

  • -ADCA:显示AD CAs

  • -CA:显示申请策略CAs

  • -Policy:显示申请策略

  • -PolicyCache:显示或删除申请策略缓存条目

  • -CredStore:显示、添加或删除凭据存储条目

  • -InstallDefaultTemplates:安装默认证书模板

  • -URLCache:显示或删除URL缓存条目

  • -pulse:触发自动注册事件或NGC任务

  • -MachineInfo:显示活动目录机器对象信息

  • -DCInfo:显示域控制器信息

  • -EntInfo:显示企业信息

  • -TCAInfo:显示CA信息

  • -SCInfo:显示智能卡信息

  • -SCRoots:管理智能卡根证书

    • -DeleteHelloContainer:删除Hello登录容器。使用此选项后,用户需要注销以完成操作。

    • -verifykeys:验证公钥/私钥对

    • -verify:验证证书、CRL或证书链

    • -verifyCTL:验证AuthRoot或Disallowed Certificates CTL

    • -syncWithWU:与Windows Update同步

    • -generateSSTFromWU:从Windows Update生成SST

    • -generatePinRulesCTL:生成Pin Rules CTL

    • -downloadOcsp:下载OCSP响应并写入目录

    • -generateHpkpHeader:使用指定文件或目录中的证书生成HPKP头

    • -flushCache:刷新选定进程中的指定缓存,例如lsass.exe

    • -addEccCurve:添加ECC曲线

    • -deleteEccCurve:删除ECC曲线

    • -displayEccCurve:显示ECC曲线

    • -sign:重新签名CRL或证书

    • -vroot:创建/删除Web虚拟根目录和文件共享

    • -vocsproot:为OCSP Web代理创建/删除Web虚拟根目录

    • -addEnrollmentServer:添加Enrollment Server应用程序

    • -deleteEnrollmentServer:删除Enrollment Server应用程序

    • -addPolicyServer:添加Policy Server应用程序

    • -deletePolicyServer:删除Policy Server应用程序

    • -oid:显示ObjectId或设置显示名称

    • -error:显示错误代码消息文本

    • -getreg:显示注册表值

    • -setreg:设置注册表值

    • -delreg:删除注册表值

    • -ImportKMS:将用户密钥和证书导入服务器数据库以进行密钥归档

    • -ImportCert:将证书文件导入数据库

    • -GetKey:检索归档的私钥恢复数据块、生成恢复脚本或恢复归档的密钥

    • -RecoverKey:恢复归档的私钥

    • -MergePFX:合并PFX文件

    • -ConvertEPF:将PFX文件转换为EPF文件

    • -add-chain:(-AddChain)添加证书链

    • -add-pre-chain:(-AddPrechain)添加预证书链

    • -get-sth:(-GetSTH)获取签名树头

    • -get-sth-consistency:(-GetSTHConsistency)获取签名树头更改

    • -get-proof-by-hash:(-GetProofByHash)通过哈希获取证明

    • -get-entries:(-GetEntries)获取条目

    • -get-roots:(-GetRoots)获取根证书

    • -get-entry-and-proof:(-GetEntryAndProof)获取条目和证明

    • -VerifyCT:验证证书SCT

    • -?:显示此用法消息

    CertUtil -?:显示动词列表(命令列表) CertUtil -dump -?:显示“dump”动词的帮助文本 CertUtil -v -?:显示所有动词的帮助文本

    CertUtil:-? 命令成功完成。

certutil是Windows操作系统中用于管理证书和证书颁发机构(CA)的命令行工具。它提供了多种操作,包括检查、安装、导出、导入、配置和维护证书。下面是一些常见的初级应用场景:

  1. 检查证书存储

    • 列出本地计算机或用户的证书存储中的证书。
    • 命令示例:
      shellCopy Code
      certutil -store my
      certutil -store -user my
  2. 查看证书信息:

    • 显示证书的详细信息,如指纹、有效期、主题、颁发者等。
    • 命令示例:
      shellCopy Code
      certutil -v -store my
      certutil -v -store -user my
  3. 验证证书链:

    • 检查证书链的完整性,确保每个证书都有有效的颁发者。
    • 命令示例:
      shellCopy Code
      certutil -verify my
  4. 导入和导出证书:

    • 将证书导入到存储区,或从存储区导出。
    • 导入命令示例:
      shellCopy Code
      certutil -addstore my cert.cer
    • 导出命令示例:
      shellCopy Code
      certutil -store my "My Certificate" > exported_cert.cer
  5. 删除证书:

    • 从证书存储中删除指定的证书。
    • 命令示例:
      shellCopy Code
      certutil -delstore my "My Certificate"
  6. 创建证书请求:

    • 创建证书签名请求,用于请求CA签名。
    • 命令示例:
      shellCopy Code
      certutil -csr my request.inf request.req

这些命令示例涵盖了certutil在证书管理中最基本的应用。根据您的需求和环境,您可以进一步探索certutil的高级功能,如CA配置、证书模板管理等。

中级应用的大纲将涵盖一些更高级的功能和操作,如证书颁发机构(CA)管理、证书模板配置等。以下是一个中级应用的大纲:

  1. CA管理

    • 创建和配置自定义证书颁发机构(CA)。
    • 配置CA的证书策略和颁发规则。
    • 发布和撤销CA的证书。
  2. 证书模板管理

    • 创建、配置和管理证书模板,以定义证书的属性、用途和有效期等。
    • 将证书模板应用到特定的证书颁发机构中,以便根据模板颁发证书。
  3. 证书续订和更新

    • 设置证书自动续订策略,确保证书在到期之前自动更新。
    • 使用自动更新服务或脚本来更新证书。
  4. 证书链和信任

    • 配置信任链,确保系统信任特定的CA和证书。
    • 导入和管理根证书,以确保系统可以验证受信任的证书。
  5. 密钥管理

    • 生成、导入和导出密钥对。
    • 配置密钥保护策略和访问控制。
  6. 证书吊销

    • 吊销证书并发布证书吊销列表(CRL)。
    • 配置定期更新CRL的计划任务。

这些是中级应用大纲中的一些主题,涵盖了在更复杂的证书管理场景下使用certutil命令可能涉及的操作。请根据您的具体需求和环境选择适合您的操作。

 

 

Certutil 命令的初级应用大纲:

  1. Certutil 简介
    • Certutil 是 Windows 中的一个命令行工具,用于管理证书和证书服务。

      Certutil 是 Windows 中用于管理证书和证书服务的命令行工具。以下是一些常见的操作步骤:

      1. 查看系统中的证书:

        bashCopy Code
        certutil -store -user My
      2. 导出证书:

        bashCopy Code
        certutil -exportpfx -user <CertID> <Path>\<FileName>.pfx
      3. 导入证书:

        bashCopy Code
        certutil -importpfx -user <FileName>.pfx
      4. 查看证书详细信息:

        bashCopy Code
        certutil -dump <FileName>.cer
      5. 删除证书:

        bashCopy Code
        certutil -delstore -user My <CertID>
      6. 生成证书请求:

        bashCopy Code
        certreq -new <RequestFileName>.inf <RequestFileName>.req
      7. 提交证书请求:

        bashCopy Code
        certreq -submit <RequestFileName>.req
      8. 颁发证书:

        bashCopy Code
        certreq -accept <CertFileName>.cer
      9. 配置 CA:

        bashCopy Code
        certutil -setreg CA\CRLFlags +CRLF_REVCHECK_IGNORE_OFFLINE

      这些是一些基本的操作步骤,具体操作可以根据实际需求和环境来进行调整和扩展。

  2. 常用功能
    • 查看证书详细信息

      要查看证书的详细信息,你可以使用以下 Certutil 命令:

      bashCopy Code
      certutil -dump <FileName>.cer

      其中,<FileName>.cer 是要查看的证书文件名。这个命令将显示证书的详细信息,包括证书的版本、序列号、签发者、所有者、有效期、公钥信息等。

      在执行该命令之前,请确保你已经知道要查看的证书的文件名,并替换 <FileName>.cer 为实际的证书文件名。

      例如,如果要查看名为 example.cer 的证书的详细信息,你可以执行以下命令:

      bashCopy Code
      certutil -dump example.cer

      执行命令后,将显示证书的详细信息,你可以查看并分析该证书的各个属性。

    • 安装和导出证书

      安装和导出证书是使用 Certutil 命令的常见操作步骤之一。以下是安装和导出证书的基本步骤:

      安装证书:

      1. 准备证书文件:首先,确保你已经获得了要安装的证书文件。通常,证书文件的扩展名为 .cer.crt

      2. 执行安装命令:使用以下命令来安装证书:

        bashCopy Code
        certutil -addstore -user My <FileName>.cer

        其中,<FileName>.cer 是要安装的证书文件名。这个命令将把证书安装到当前用户的个人证书存储区(称为“个人”或“我的证书”)中。

      导出证书:

      1. 确定要导出的证书:首先,确定要导出的证书的名称或序列号。你可以使用 certutil -store -user My 命令来列出当前用户的个人证书存储区中的证书,并找到你要导出的证书的标识符(CertID)。

      2. 执行导出命令:使用以下命令来导出证书:

        bashCopy Code
        certutil -exportpfx -user <CertID> <Path>\<FileName>.pfx

        其中,<CertID> 是要导出的证书的标识符,<Path>\<FileName>.pfx 是要导出的 PFX 格式文件的路径和名称。

      示例:

      假设要安装名为 example.cer 的证书,并将其导出为 example.pfx 文件,可以执行以下步骤:

      安装证书:

      bashCopy Code
      certutil -addstore -user My example.cer

      导出证书:

      bashCopy Code
      certutil -store -user My

      找到要导出的证书的 CertID,然后执行:

      bashCopy Code
      certutil -exportpfx -user <CertID> C:\Path\To\example.pfx

      在这些命令中,C:\Path\To\ 是你希望导出的 PFX 文件保存的路径,你需要将其替换为实际的路径。

    • 创建和管理证书请求

      创建和管理证书请求是在使用 Certutil 命令时的另一个常见操作。以下是创建和管理证书请求的基本步骤:

      创建证书请求:

      1. 创建证书请求文件:首先,创建一个包含证书请求信息的请求文件。请求文件通常使用 .inf 扩展名,它包含了证书请求的各种参数,如密钥长度、加密算法等。

      2. 执行创建请求命令:使用以下命令来创建证书请求:

        bashCopy Code
        certreq -new <RequestFileName>.inf <RequestFileName>.req

        其中,<RequestFileName>.inf 是包含证书请求信息的请求文件,<RequestFileName>.req 是要保存证书请求的文件名。

      提交证书请求:

      1. 提交证书请求:将生成的证书请求提交给证书颁发机构(CA)进行签发证书的过程。具体的提交方法可能因组织而异,通常可以通过 CA 的网站或其提供的其他渠道进行。

      颁发证书:

      1. 颁发证书:一旦证书请求被 CA 签发,你将收到一个证书文件。

      2. 执行颁发证书命令:使用以下命令来接受并安装颁发的证书:

        bashCopy Code
        certreq -accept <CertFileName>.cer

        其中,<CertFileName>.cer 是颁发的证书文件名。

      示例:

      假设要创建一个证书请求,并将其命名为 example.inf,然后将请求保存为 example.req 文件,可以执行以下步骤:

      创建证书请求:

      bashCopy Code
      certreq -new example.inf example.req

      提交证书请求:

      将生成的 example.req 文件提交给 CA 进行签发证书的过程。

      颁发证书:

      一旦收到颁发的证书 example.cer,执行以下命令接受并安装证书:

      bashCopy Code
      certreq -accept example.cer

      在这些命令中,example.inf 是包含证书请求信息的请求文件,example.req 是要保存证书请求的文件名,example.cer 是颁发的证书文件名。

    • 验证证书链

      在 Windows 上,你可以使用 Certutil 命令来验证证书链。验证证书链是确保证书的有效性和信任的重要步骤之一。以下是使用 Certutil 命令验证证书链的基本步骤:

      验证证书链:

      1. 准备证书文件:确保你拥有要验证的证书文件。通常,证书文件的扩展名为 .cer.crt

      2. 执行验证命令:使用以下命令来验证证书链:

        bashCopy Code
        certutil -verify <CertFileName>.cer

        其中,<CertFileName>.cer 是要验证的证书文件名。

      示例:

      假设要验证名为 example.cer 的证书链,可以执行以下步骤:

      验证证书链:

      bashCopy Code
      certutil -verify example.cer

      这个命令将会验证证书 example.cer 的证书链,并显示验证的结果,包括证书的有效性、签发者信息、证书链完整性等。

      请注意,确保替换命令中的 example.cer 为实际的证书文件名。

      这些步骤可以帮助你验证证书链,确保你获得的证书是有效且受信任的。

  3. 示例用法
    • certutil -view - 用于查看证书详细信息
    • certutil -installcert - 用于安装证书
    • certutil -export - 用于导出证书
    • certutil -submit - 用于提交证书请求
    • certutil -verify - 用于验证证书链
  4. 附加选项和参数
    • 不同选项和参数的用法和影响

      Certutil 是一个用于操作证书服务和证书存储的命令行工具,它提供了许多选项和参数,用于执行各种操作。以下是一些常用的 Certutil 命令选项和参数以及它们的用法和影响:

      1. -addstore:将证书添加到指定的证书存储中。

        • 示例:certutil -addstore <StoreName> <CertFileName>
        • <StoreName>:证书存储的名称,例如 "CA", "MY" 等。
        • <CertFileName>:要添加的证书文件的名称。
      2. -delstore:从指定的证书存储中删除证书。

        • 示例:certutil -delstore <StoreName> <CertName>
        • <StoreName>:证书存储的名称。
        • <CertName>:要删除的证书的名称。
      3. -store:指定要操作的证书存储。

        • 示例:certutil -store <StoreName>
        • <StoreName>:要操作的证书存储的名称。
      4. -view:查看指定证书存储中的证书。

        • 示例:certutil -view <Options>
        • <Options>:查看证书时的选项,如 -restrict-out-f 等。
      5. -verify:验证证书链的有效性。

        • 示例:certutil -verify <CertFileName>
        • <CertFileName>:要验证的证书文件名。
      6. -repairstore:修复指定的证书存储。

        • 示例:certutil -repairstore <StoreName>
        • <StoreName>:要修复的证书存储的名称。
      7. -addtorevocationlist:将证书添加到撤销列表中。

        • 示例:certutil -addtorevocationlist <CertFileName>
        • <CertFileName>:要添加到撤销列表的证书文件名。
      8. -urlfetch:从指定的 URL 下载并安装证书。

        • 示例:certutil -urlfetch -verify <URL>
        • <URL>:要下载证书的 URL。

      这些是 Certutil 命令的一些常见选项和参数,它们可以用于执行不同的操作,如添加、删除、查看、验证证书等。使用这些选项和参数,你可以有效地管理证书和证书存储。

  5. 注意事项和常见问题
    • 证书格式要求

      在使用 Certutil 命令处理证书时,了解支持的证书格式是很重要的。Certutil 支持多种证书文件格式,每种格式都有其特定的用途和兼容性。以下是 Certutil 常见的证书格式要求和相关信息:

      1. DER (.der 或 .cer):

        • 格式描述:DER(Distinguished Encoding Rules)格式是一种二进制格式,它严格遵守 ASN.1 编码规则。
        • 用途:通常用于系统和应用程序,特别是在需要严格编码的环境中,如 Java 应用程序。
      2. Base64 (.cer 或 .pem):

        • 格式描述:Base64 格式是文本格式,通过 Base64 编码对 DER 编码的证书进行编码,通常包含 "-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----" 开头和结尾。
        • 用途:适用于需要证书以文本形式处理的应用,如 Web 服务器和某些类型的邮件客户端。
      3. PFX (.pfx 或 .p12):

        • 格式描述:PFX(Personal Information Exchange)格式文件通常包含证书以及与之关联的私钥。这是一种二进制格式。
        • 用途:主要用于在不同系统或应用程序之间安全地传输证书和其私钥。
      4. PKCS#7 (.p7b 或 .spc):

        • 格式描述:PKCS#7 格式用于存储证书链但不包含私钥,通常是 Base64 编码的文本文件。
        • 用途:广泛用于需要证书链信息的应用程序和服务,如安全的电子邮件传输。

      使用 Certutil 与这些格式交互的一些例子:

      • 导入 DER 格式的证书:

        bashCopy Code
        certutil -addstore my example.der
      • 查看 Base64 编码的证书:

        bashCopy Code
        certutil -dump example.cer
      • 导入带有私钥的 PFX 文件:

        bashCopy Code
        certutil -importpfx my example.pfx
      • 查看 PKCS#7 格式的证书链:

        bashCopy Code
        certutil -dump example.p7b

      在使用 Certutil 命令处理证书时,确保你使用的证书文件与你的具体需求相匹配,并选择适当的格式以保证兼容性和功能性。这有助于在各种环境中有效地管理和使用证书。

    • 命令执行时可能遇到的常见问题和解决方法。

      在使用 Certutil 命令时,可能会遇到一些常见问题,这些问题可能涉及命令语法、证书格式、权限等方面。以下是一些可能遇到的常见问题及其解决方法:

      1. 命令语法错误:

        • 问题:输入的 Certutil 命令语法不正确,导致命令无法执行。
        • 解决方法:检查命令语法,确保命令选项、参数和文件路径等输入正确无误。可以参考 Certutil 的帮助文档或在线资源来查找正确的语法示例。
      2. 证书文件路径错误:

        • 问题:指定的证书文件路径不正确或文件不存在。
        • 解决方法:确认证书文件的路径是否正确,并确保文件存在。在执行 Certutil 命令时,使用绝对路径或相对路径都可以,但要确保路径正确。
      3. 权限不足:

        • 问题:执行 Certutil 命令的用户权限不足,无法完成操作。
        • 解决方法:以管理员权限或具有适当权限的用户身份执行 Certutil 命令。在 Windows 系统中,可以通过右键单击命令提示符或 PowerShell,并选择“以管理员身份运行”来提升权限。
      4. 证书格式不匹配:

        • 问题:尝试导入或查看的证书格式与 Certutil 命令不匹配。
        • 解决方法:确保使用 Certutil 支持的正确证书格式。可以使用 certutil -dump 命令来查看证书的内容和格式,然后相应地选择适当的命令和选项。
      5. 证书链验证失败:

        • 问题:执行验证操作时,证书链验证失败。
        • 解决方法:检查证书链中的证书是否有效、是否过期、是否受信任等。如果证书链验证失败,可能需要更新证书或检查证书链的配置。
      6. 证书存储损坏:

        • 问题:证书存储损坏或不可用,导致无法执行操作。
        • 解决方法:尝试修复证书存储,可以使用 -repairstore 命令选项来修复存储中的证书。如果证书存储持续出现问题,可能需要考虑重新创建或恢复证书存储。
      7. 网络连接问题:

        • 问题:在使用 -urlfetch 选项下载证书时,遇到网络连接问题。
        • 解决方法:检查网络连接是否正常,确保能够访问指定的 URL。如果网络连接存在问题,可以尝试使用其他网络或稍后重试。

      通过检查和解决上述常见问题,可以更有效地使用 Certutil 命令来管理证书和证书存储,确保系统和应用程序的安全性和功能正常运行。

Certutil 命令中级应用的大纲:

  1. 证书管理
    • 证书导入和导出
    • 创建和管理证书请求
    • 验证证书链
  2. 证书颁发机构 (CA) 功能
    • 配置 CA
    • 签发证书
    • 撤销证书
  3. 证书筛选和查询
    • 使用筛选条件来查询特定类型的证书
    • 使用查询语言来筛选和检索证书信息
  4. 证书维护和监控
    • 自动更新证书

      实时自动更新证书可能有点棘手,因为 PowerShell 脚本本身无法实现实时检查和自动更新。但你可以使用 PowerShell 脚本结合 Windows 任务计划程序来实现自动更新证书的功能。以下是一个基本的流程:

      1. 编写 PowerShell 脚本:

        • 创建一个 PowerShell 脚本,用于检查证书是否需要更新,并自动更新证书。
      2. 设置定时任务:

        • 使用 Windows 任务计划程序,将 PowerShell 脚本设置为定期执行的任务。你可以选择每天、每周或每月执行一次。
      3. 添加异常处理:

        • 在 PowerShell 脚本中添加适当的异常处理机制,以应对证书更新过程中可能遇到的问题,比如证书文件不可用、更新失败等情况。
      4. 记录日志:

        • 在脚本中添加日志记录功能,以便跟踪证书更新任务的执行情况。

      下面是一个简单的示例 PowerShell 脚本,用于自动更新存储中的证书:

      powershellCopy Code
      # 指定证书存储位置
      $CertStoreLocation = "Cert:\CurrentUser\My"
      
      # 指定要更新的证书文件路径
      $CertFilePath = "C:\path\to\your\certificate.crt"
      
      try {
          # 更新证书
          certutil -repairstore my $CertFilePath
      
          # 记录更新成功日志
          Add-Content -Path "cert_update.log" -Value "$(Get-Date): 证书更新成功。"
      } catch {
          # 记录更新失败日志
          Add-Content -Path "cert_update.log" -Value "$(Get-Date): 证书更新失败。错误信息: $_."
      }

      你可以将这个 PowerShell 脚本保存为 .ps1 文件,并使用 Windows 任务计划程序来定期执行它。在实际应用中,请替换 $CertFilePath 变量为你实际的证书文件路径,并根据需要添加适当的异常处理机制和日志记录功能。

      自动更新证书通常涉及以下几个步骤,你可以使用 Certutil 命令结合其他脚本或工具来实现这个过程:

      1. 获取证书文件:

        • 确保你有证书的正确文件路径或者可以通过网络获取证书文件。
      2. 更新证书:

        • 使用 Certutil 命令来更新证书。你可以使用 -repairstore 选项来更新存储中的证书,或者使用 -importpfx 选项导入新的 PFX 格式证书。
      3. 自动化更新:

        • 创建一个脚本或者任务计划来定期执行更新证书的操作。在 Windows 环境下,你可以使用任务计划程序来定期运行脚本或命令。
      4. 验证更新:

        • 在更新证书后,确保证书已经正确地更新到系统或应用程序中。你可以使用 Certutil 命令来验证证书是否成功更新,并且确保证书链没有断裂或者验证失败。

      下面是一个简单的示例脚本,用于自动更新证书的过程:

      bashCopy Code
      #!/bin/bash
      
      # 指定证书文件路径
      CERT_FILE="/path/to/your/certificate.crt"
      
      # 更新证书
      certutil -repairstore my "$CERT_FILE"
      
      # 检查更新是否成功
      certutil -store my | grep -i "Your Certificate Name"
      if [ $? -eq 0 ]; then
          echo "证书更新成功。"
      else
          echo "证书更新失败,请检查。"
      fi

      你可以将这个脚本保存为一个 .sh 文件,并使用任务计划程序或其他自动化工具来定期执行它,以实现证书的自动更新。确保在脚本中替换 CERT_FILE 变量为你实际的证书文件路径,并替换 "Your Certificate Name" 为你要验证的证书名称。

    • 监控证书到期情况

      要在 PowerShell 中实时监控证书到期情况并进行自动提醒,你可以编写一个 PowerShell 脚本,定期检查证书的到期日期,并在证书即将到期时发送提醒。以下是一个简单的示例脚本:

      powershellCopy Code
      # 指定要监控的证书存储位置
      $CertStoreLocation = "Cert:\CurrentUser\My"
      
      # 指定证书到期提醒的天数阈值
      $DaysBeforeExpiration = 30
      
      # 获取当前日期
      $CurrentDate = Get-Date
      
      # 获取证书存储中的所有证书
      $Certificates = Get-ChildItem -Path $CertStoreLocation
      
      # 遍历每个证书,检查是否即将到期
      foreach ($Cert in $Certificates) {
          $ExpirationDate = $Cert.NotAfter
          $DaysUntilExpiration = ($ExpirationDate - $CurrentDate).Days
          
          # 如果证书即将到期,发送提醒
          if ($DaysUntilExpiration -lt $DaysBeforeExpiration -and $DaysUntilExpiration -gt 0) {
              $Subject = $Cert.Subject
              $DaysUntilExpirationString = "$DaysUntilExpiration 天"
              
              # 发送提醒
              Write-Host "证书 $Subject 即将在 $DaysUntilExpirationString 内过期,请及时处理。"
              
              # 这里你可以添加发送邮件、弹窗提醒等功能
          }
      }

      这个脚本会遍历指定的证书存储位置中的所有证书,检查每个证书的到期日期与当前日期之间的差距,如果到期日期与当前日期之差小于指定的天数阈值,则认为证书即将到期,并发送提醒。在实际的环境中,你可以根据需要修改提醒方式,比如发送邮件、弹窗提醒等。

      要使用 Certutil 命令监控证书到期情况,你可以通过以下步骤来实现:

      1. 列出已安装的证书:

        • 使用 Certutil 命令列出已安装在系统或存储中的证书。你可以使用 -store 选项指定要列出的证书存储,比如 my 表示个人存储,root 表示根证书颁发机构存储等。
      2. 查看证书详细信息:

        • 对于每个证书,使用 Certutil 命令查看详细信息,包括证书的有效期。你可以使用 -expiry 选项来查看证书的到期日期。
      3. 分析证书到期情况:

        • 分析证书的到期日期,确定哪些证书即将到期或已经过期。
      4. 设置提醒机制:

        • 创建一个脚本或任务计划,定期运行 Certutil 命令来检查证书到期情况,并设置提醒机制,比如发送邮件或生成日志,以便及时处理即将到期或已过期的证书。

      下面是一个简单的示例脚本,用于监控证书到期情况并生成日志:

      bashCopy Code
      #!/bin/bash
      
      # 获取当前日期
      CURRENT_DATE=$(date +%Y-%m-%d)
      
      # 列出个人存储中的证书,并查看详细信息
      certutil -store my | while read line; do
          # 提取证书序列号和到期日期
          serial=$(echo "$line" | grep "Serial Number:")
          expiry=$(echo "$line" | grep "NotAfter")
      
          # 检查是否为证书行
          if [ -n "$serial" ]; then
              # 提取证书序列号和到期日期
              serial=$(echo "$serial" | awk '{print $3}')
              expiry=$(echo "$expiry" | awk '{print $3, $4, $5}')
      
              # 检查证书是否即将过期
              expiry_date=$(date -d "$expiry" +%s)
              current_date=$(date -d "$CURRENT_DATE" +%s)
              days_left=$(( (expiry_date - current_date) / (60*60*24) ))
      
              # 输出到期信息
              echo "证书序列号: $serial"
              echo "到期日期: $expiry"
              echo "剩余天数: $days_left 天"
      
              # 判断是否即将过期
              if [ "$days_left" -lt 30 ]; then
                  echo "注意: 该证书即将到期!"
              fi
      
              echo "-------------------------"
          fi
      done >> cert_expiry_log.txt
      
      echo "证书到期情况已记录到 cert_expiry_log.txt 文件。"

      你可以将这个脚本保存为一个 .sh 文件,并使用任务计划程序或其他自动化工具来定期执行它,以监控证书的到期情况并生成日志。

  5. 安全性和权限管理
    • 配置证书存储区的权限
    • 管理证书私钥保护
  6. 高级用法和选项
    • 批量操作证书
    • 使用脚本自动化证书管理任务

      使用 PowerShell 脚本实现自动化证书管理任务的步骤:

      1. 确定证书管理任务:

        • 确定需要自动化管理的证书任务,比如证书的安装、更新、删除等。
      2. 创建 PowerShell 脚本:

        • 创建一个 PowerShell 脚本,用于执行证书管理任务。
      3. 使用 Certutil 命令:

        • 在 PowerShell 脚本中使用 Certutil 命令执行证书管理任务。你可以使用 certutil -addstore 来安装证书,certutil -repairstore 来更新证书,certutil -delstore 来删除证书等。
      4. 设置定时任务:

        • 使用 Windows 任务计划程序,设置定时任务来定期执行 PowerShell 脚本。你可以选择每天、每周或每月执行一次,根据证书的重要程度和更新频率来决定。
      5. 记录日志:

        • 在 PowerShell 脚本中添加日志记录功能,以便跟踪证书管理任务的执行情况。

      下面是一个简单的示例 PowerShell 脚本,用于自动化更新存储中的证书:

      powershellCopy Code
      # 指定证书文件路径
      $CertFilePath = "C:\path\to\your\certificate.crt"
      
      # 更新证书
      certutil -repairstore my $CertFilePath
      
      # 检查更新是否成功
      $cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -eq "Your Certificate Subject"}
      if ($cert -ne $null) {
          Write-Host "证书更新成功。"
          Add-Content -Path "cert_management.log" -Value "$(Get-Date): 证书更新成功。"
      } else {
          Write-Host "证书更新失败,请检查。"
          Add-Content -Path "cert_management.log" -Value "$(Get-Date): 证书更新失败,请检查。"
      }

      你可以将这个 PowerShell 脚本保存为 .ps1 文件,并使用 Windows 任务计划程序来定期执行它。确保在脚本中替换 $CertFilePath 变量为你实际的证书文件路径,并替换 "Your Certificate Subject" 为你要验证的证书主题。同时,将日志记录添加到 cert_management.log 文件中,以便跟踪证书管理任务的执行情况。

  7. 实际应用示例
    • 搭建自己的证书颁发机构
    • 配置证书自动更新任务
  8. 故障排除和最佳实践
    • 处理证书链验证问题
    • 建立最佳实践以确保证书安全管理
  9. 参考资料和资源
    • 官方文档和其他学习资源
    • 社区支持和论坛讨论

Certutil 命令高级应用的大纲:

  1. 自定义证书管理任务
    • 使用 Certutil 的高级选项和参数执行自定义证书管理任务
    • 编写脚本以自动化复杂的证书管理操作
  2. 高级证书颁发机构 (CA) 配置
    • 配置多个 CA 层级结构
    • 实现 CA 的冗余和负载均衡
    • 定制 CA 的认证策略和证书模板
  3. 安全性增强
    • 配置证书存储区的高级权限和安全策略
    • 使用硬件安全模块 (HSM) 管理证书私钥
    • 实施证书审计和监控措施
  4. 高级证书监控和维护
    • 实施证书到期提醒和警报
    • 自动执行证书轮换和更新任务
    • 实时监控证书状态和链的健康情况
  5. 故障排除和应急响应
    • 处理证书链验证错误和问题
    • 恢复由于证书故障导致的服务中断
    • 制定应急证书更新计划
  6. 高级安全性实践
    • 实施证书和密钥的生命周期管理策略
    • 建立安全的证书备份和恢复策略
    • 保护对证书颁发机构和证书存储区的物理和逻辑访问
  7. 高级应用示例
    • 构建高可用性的证书基础设施 (PKI)
    • 实现多级 CA 系统以支持不同级别的证书需求
  8. 进阶学习和资源
    • 深入研究 PKI 和证书管理的相关文献和学术资料
    • 参与社区讨论和知识共享,探讨最佳实践和解决方案

Certutil 命令专家级应用的大纲:

  1. 完整的证书链管理
    • 实施完整的证书链验证和管理
    • 定制证书链中每个证书的验证策略
    • 解决复杂的证书链验证问题和错误
  2. 高级密钥管理
    • 使用 Certutil 生成和管理密钥对
    • 配置和管理硬件安全模块 (HSM) 中的密钥
    • 实施高级密钥保护和审计措施
  3. 自定义证书策略
    • 定制证书签发策略和模板
    • 实现基于角色的访问控制 (RBAC) 来控制证书颁发权限
    • 实施高级证书生命周期管理策略
  4. 高级证书监控和分析
    • 实时监控证书状态和健康情况
    • 分析证书使用情况和趋势
    • 使用日志和审计工具跟踪证书操作和事件
  5. 安全审计和合规性
    • 实施严格的安全审计控制和合规性标准
    • 实施证书操作的审计日志记录和分析
    • 准备和应对合规性审计
  6. 高级安全性实践
    • 实施密钥分离和分割策略
    • 使用量子安全算法保护密钥和证书
    • 实施物理安全措施来保护证书颁发机构和密钥存储设施
  7. 高级应用示例和案例研究
    • 构建高度安全的全球 PKI 基础设施
    • 实施金融行业和政府部门的高级证书管理方案
  8. 演进和未来趋势
    • 探索新兴技术和趋势对证书管理的影响
    • 讨论量子计算、区块链等新技术对证书基础设施的挑战和机遇
  9. 社区和资源
    • 参与证书管理领域的专业社区和论坛
    • 探索最新的文献、研究和行业报告
    • 参与行业标准制定和推动,促进证书管理领域的发展和创新

Certutil 命令顶尖级应用的大纲:

  1. 高度定制化的证书策略管理
    • 实施基于角色的访问控制 (RBAC) 策略
    • 配置复杂的证书签发和撤销规则
    • 实现个性化的证书模板和扩展属性
  2. 精密的密钥管理和保护
    • 配置和管理多层次的密钥存储设施
    • 实施多因素身份验证来保护密钥对
    • 使用硬件安全模块 (HSM) 实现最高级别的密钥保护
  3. 自动化的证书生命周期管理
    • 实现自动化的证书签发和更新流程
    • 配置证书到期提醒和自动续订功能
    • 实施智能证书轮换策略,确保不间断的服务
  4. 高级的证书监控和分析
    • 实时监控证书状态和链的完整性
    • 分析证书使用情况和趋势,预测未来需求
    • 使用人工智能和机器学习技术发现异常行为和潜在风险
  5. 安全合规性和审计
    • 实施严格的安全合规性标准和审计控制
    • 准备和应对各种合规性审计,如 PCI DSS、HIPAA 等
    • 使用区块链技术来保证证书操作的不可篡改性和可追溯性
  6. 先进的安全性实践和创新
    • 探索量子安全算法的应用,保护证书和密钥免受量子计算攻击
    • 实施密码学和密码学协议的最新研究成果
    • 创新证书管理技术,应对不断演变的安全挑战和威胁
  7. 高级应用示例和案例研究
    • 构建高度安全的全球 PKI 基础设施,支持数百万级别的证书颁发和管理
    • 实施金融行业和政府部门的顶尖级证书管理解决方案,保障国家安全和金融稳定
  8. 演进和未来趋势展望
    • 探索新兴技术对证书管理的影响,如区块链、边缘计算等
    • 讨论未来证书管理的挑战和机遇,为行业发展提供战略指导
  9. 社区和资源
    • 参与顶尖级证书管理专业社区和论坛,分享最佳实践和经验
    • 探索最新的研究成果、学术论文和行业报告,跟踪行业动态和趋势
    • 参与标准制定和技术规范的制定,推动证书管理领域的持续创新和发展
posted @ 2024-01-22 18:49  suv789  阅读(1271)  评论(0)    收藏  举报