MakeCert

注意

已弃用 Makecert。 可使用 Powershell CmdletNew-SelfSignedCertificate 创建自签名证书。

 

MakeCert 工具创建由测试根密钥或其他指定密钥签名的 X.509 证书,该证书将您的名称绑定到密钥对的公共部分。 证书将被保存到文件、系统证书存储或两者中。 该工具安装在 Microsoft Windows 软件开发工具包 (SDK) 安装路径下的 \Bin 文件夹中。

可以从 Windows 开发人员中心下载 Windows SDK

MakeCert 工具使用以下命令语法:

MakeCert [BasicOptions|ExtendedOptions] OutputFile

OutputFile 是将写入证书的文件名称。 如果证书未被写入文件,则可以省略 OutputFile

选项

MakeCert 包括基本选项和扩展选项。 基本选项是最常用于创建证书的选项。 扩展选项提供更大的灵活性。

MakeCert 的选项也分为三个功能组:

  • 仅特定于证书存储技术的基本选项。
  • 仅特定于 SPC 文件和私钥技术的扩展选项。
  • 适用于 SPC 文件、私钥和证书存储技术的扩展选项。

下表中提供的选项只能与 Internet Explorer 4.0 或更高版本一起使用。

“基本”选项 说明
-aAlgorithm 哈希算法。 必须设置为 SHA-1MD5(默认值)。 有关 MD5 的详细信息,请参阅 MD5
-bDateStart 证书首次生效日期。 默认值为证书创建时间。 DateStart 的格式为 mm/dd/yyyy。
-cyCertificateTypes 证书类型。 CertificateType 可以是终端实体的终端,也可以是证书颁发机构颁发机构
-eDateEnd 有效期结束的日期。 默认为 2039 年。
-ekuOID1,OID2 将一个或多个逗号分隔的增强型密钥使用对象标识符 (OID) 的列表插入证书。 例如,-eku 1.3.6.1.5.5.7.3.2 插入客户端身份验证 OID。 有关允许的 OID 的定义,请参阅 CryptoAPI 2.0 中的 Wincrypt.h 文件。
-hNumChildren 此证书下方树的最大高度。
-lPolicyLink 链接到 SPC 代理策略信息(例如 URL)。
-mnMonths 有效期的持续时间。
-n"Name" 发布者的证书名称。 此名称必须符合 X.500 标准。 最简单的方法是使用"CN=MyName"格式。 例如:-n "CN=Test"
-nscp 应包括 Netscape 客户端身份验证扩展。
-pe 将私钥标记为可导出。
-r 创建自签名证书
-scSubjectCertFile 包含要使用的现有主题公钥的证书文件名。
-skSubjectKey 保存私钥的主题密钥容器的位置。 如果密钥容器不存在,则将创建一个。 如果既没有使用 -sk 选项,也没有使用 -sv 选项,则默认创建并使用默认密钥容器。
-skySubjectKeySpec 主题的密钥规范。 SubjectKeySpec 必须是三个可能值之一:
  • 签名(AT_SIGNATURE 密钥规范)
  • Exchange(AT_KEYEXCHANGE 密钥规范)
  • 整数,例如 3
有关详细信息,请参阅此表后面的备注。
-spSubjectProviderName 主体的 CryptoAPI 提供程序。 默认为用户的提供程序。 有关 CryptoAPI 提供程序的信息,请参阅 CryptoAPI 2.0 文档。
-srSubjectCertStoreLocation 主体证书存储的注册表位置。 SubjectCertStoreLocation 必须是 LocalMachine(注册表项 HKEY_LOCAL_MACHINE)或 CurrentUser(注册表项 HKEY_CURRENT_USER)。 默认值为 CurrentUser
-ssSubjectCertStoreName 存储生成证书的主体证书存储空间的名称。
-svSubjectKeyFile 主体的 .pvk 文件的名称。 如果既没有使用 -sk 选项,也没有使用 -sv 选项,则默认创建并使用默认密钥容器。
-synSubjectProviderType 主体的 CryptoAPI 提供程序类型。 默认为 PROV_RSA_FULL。 有关 CryptoAPI 提供程序类型的信息,请参阅 CryptoAPI 2.0 文档。
-#SerialNumber 证书序列号。 最大值为 2^31。 默认值是由工具生成的一个值,该值保证是唯一的。
-$CertificateAuthority 证书颁发机构的类型。 CertificateAuthority 必须设置为 商业(供商业软件发布者使用的证书)或个人(供单个软件发布者使用的证书)。
-? 显示基本选项。
-! 显示扩展选项。

 

注意

如果在 Internet Explorer 版本 4.0 或更高版本中使用 -sky 密钥规范选项,该规范必须与私钥文件或私钥容器指示的密钥规范相匹配。 如果未使用密钥规范选项,将使用私钥文件或私钥容器指示的密钥规范。 如果密钥容器中有多个密钥规范,MakeCert 将首先尝试使用 AT_SIGNATURE 密钥规范。 如果失败,MakeCert 将尝试使用 AT_KEYEXCHANGE。 由于大多数用户都有 AT_SIGNATURE 密钥或 AT_KEYEXCHANGE 密钥,因此在大多数情况下不需要使用此选项。

 

以下选项仅适用于软件发布者证书 (SPC) 文件和私钥技术。

SPC 和私钥选项 说明
-icIssuerCertFile 颁发者证书的位置。
-ikIssuerKey 颁发者密钥容器的位置。 默认值为测试根密钥。
-ikyIssuerKeySpec 颁发者的密钥规范,必须是三个可能值之一:
  • 签名(AT_SIGNATURE 密钥规范)
  • Exchange(AT_KEYEXCHANGE 密钥规范)
  • 整数,例如 3
有关详细信息,请参阅此表后面的备注。
-ipIssuerProviderName 颁发者的 CryptoAPI 提供程序。 默认为用户的提供程序。 有关 CryptoAPI 提供程序的信息,请参阅 CryptoAPI 2.0 文档。
-ivIssuerKeyFile 颁发者的私钥文件。 默认值为测试根。
-iynIssuerProviderType 颁发者的 CryptoAPI 提供程序类型。 默认为 PROV_RSA_FULL。 有关 CryptoAPI 提供程序类型的信息,请参阅 CryptoAPI 2.0 文档。

 

注意

如果在 Internet Explorer 4.0 或更高版本中使用 -iky 密钥规范选项,该规范必须与私钥文件或私钥容器指示的密钥规范相匹配。 如果未使用密钥规范选项,将使用私钥文件或私钥容器指示的密钥规范。 如果密钥容器中有多个密钥规范,MakeCert 将首先尝试使用 AT_SIGNATURE 密钥规范。 如果失败,MakeCert 将尝试使用 AT_KEYEXCHANGE。 由于大多数用户都有 AT_SIGNATURE 密钥或 AT_KEYEXCHANGE 密钥,因此在大多数情况下不需要使用此选项。

 

以下选项仅适用于证书存储技术。

证书存储选项 说明
-ic IssuerCertFile 包含签发者证书的文件。 MakeCert 将在证书存储中搜索完全匹配的证书。
-in IssuerNameString 颁发者证书的公用名。 MakeCert 将在证书存储中搜索其公用名称包括 IssuerNameString 的证书。
-ir IssuerCertStoreLocation 颁发者的证书存储的注册表位置。 IssuerCertStoreLocation 必须是 LocalMachine(注册表项 HKEY_LOCAL_MACHINE)或 CurrentUser(注册表项 HKEY_CURRENT_USER)。 默认值为 CurrentUser
-is IssuerCertStoreName 颁发者的证书存储,其中包括颁发者的证书及其关联的私钥信息。 如果存储中有多个证书,用户必须通过使用 -ic-in 选项对其进行唯一标识。 如果证书存储中的证书没有唯一标识,MakeCert 将失败。