证书创建工具 和 参数详解 (Makecert.exe)

证书创建工具生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。
Makecert.exe 包含基本选项和扩展选项。基本选项是最常用于创建证书的选项。扩展选项提供更多的灵活性。
一定不要将此工具生成的证书私钥存储在 .snk 文件中。如果需要存储私钥,则应使用密钥容器。有关如何在密钥容器中存储私钥的更多信息,请参见如何:将非对称密钥存储在密钥容器中。
Caution note警告
应使用证书存储区来安全地存储证书。此工具使用的 .snk 文件以不受保护的方式存储私钥。创建或导入 .snk 文件时,在使用期间应注意保证其安全,并在使用后将其移除。
makecert [options] outputCertificateFile
参数 说明
outputCertificateFile
测试 X.509 证书要写入的 .cer 文件的名称。
基本选项
选项 说明
-nx509name
指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,”CN=myName”。
-pe
将所生成的私钥标记为可导出。这样可将私钥包括在证书中。
-skkeyname
指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。
-sr location
指定主题的证书存储位置。Location 可以是 currentuser(默认值)或localmachine。
-ss store
指定主题的证书存储名称,输出证书即存储在那里。
-# number
指定一个介于 1 和 2,147,483,647 之间的序列号。默认值是由 Makecert.exe 生成的唯一值。
-$ authority
指定证书的签名权限,必须设置为 commercial(对于商业软件发行者使用的证书)或 individual(对于个人软件发行者使用的证书)。
-?
显示此工具的命令语法和基本选项列表。
-!
显示此工具的命令语法和扩展选项列表。
扩展选项
选项 说明
-a algorithm
指定签名算法。必须是 md5(默认值)或 sha1。
-bmm/dd/yyyy
指定有效期的开始时间。默认为证书的创建日期。
-cy certType
指定证书类型。有效值是 end(对于最终实体)和 authority(对于证书颁发机构)。
-d name
显示主题的名称。
-emm/dd/yyyy
指定有效期的结束时间。默认为 12/31/2039 11:59:59 GMT。
-ekuoid[,oid]
将用逗号分隔的增强型密钥用法对象标识符 (OID) 列表插入到证书中。
-h number
指定此证书下面的树的最大高度。
-ic file
指定颁发者的证书文件。
-ik keyName
指定颁发者的密钥容器名称。
-iky keytype
指定颁发者的密钥类型,必须是 signature、exchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。
-in name
指定颁发者的证书公用名称。
-ip provider
指定颁发者的 CryptoAPI 提供程序名称。
-ir location
指定颁发者的证书存储位置。Location 可以是 currentuser(默认值)或localmachine。
-is store
指定颁发者的证书存储名称。
-iv pvkFile
指定颁发者的 .pvk 私钥文件。
-iy pvkFile
指定颁发者的 CryptoAPI 提供程序类型。
-l link
到策略信息的链接(例如,一个 URL)。
-m number
以月为单位指定证书有效期的持续时间。
-nscp
包括 Netscape 客户端身份验证扩展。
-r
创建自签署证书。
-sc file
指定主题的证书文件。
-skykeytype
指定主题的密钥类型,必须是 signature、exchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。
-sp provider
指定主题的 CryptoAPI 提供程序名称。
-sv pvkFile
指定主题的 .pvk 私钥文件。如果该文件不存在,系统将创建一个。
-sy type

指定主题的 CryptoAPI 提供程序类型。


makecert.exe 证书生成
makecert.exe 证书生成

在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书。

第一步,生成一个自签名的根证书(issuer,签发者)。

makecert -n “CN=myX509” -r -sv RootIssuer.pvk myX509.cer

makecert -n “CN=hkrt [email protected], C=china, S=beijing” -sky signature -sk myX509 -r -sv privateKey.pvk myX509.cer

这个时候,会弹出提示框,首先给RootIssuer.pvk文件设置私钥保护口令;

然后,再次输入这个口令用私钥(在RootIssuer.pvk文件中)来给公钥(在RootIssuer.cer文件中)加密。

第二步,使用这个证书签发一个子证书(使用者,subject)。

makecert -n “CN=Child” -iv myX509.pvk -ic myX509.cer -sv ChildSubject.pvk ChildSubject.cer

此时,会弹出提示框先给这个子证书的私钥文件ChildSubject.pvk设置保护口令;

然后,输入这个子证书的私钥(在ChildSubject.pvk中)口令来保护子证书的公钥(在ChildSubject.cer中)。

接下来会提示输入根证书私钥(在RootIssuer.pvk中)口令来签发整个子证书(公钥和用户信息)。

如果你还要签发更多的子证书,类似的,使用这个证书来签发再下层的证书,前提是ChildSubject证书也可以用于签发(作为Issuer)用途。

备注:

(1)如果你需要一个交互证书,用于安全通信,那么,加入选项 -sky exchange ;

(2)如果你需要一个签名证书来签发证书或者二进制文件,那么,加入选项 -sky signature .

(3)如果你需要一个客户端证书来标志你的身份,或者个人信息保护(电子邮件),那么,选项-n 中的E字段是不可缺少的。

举例:-n “CN=公司名称, E=E-MAIL地址, O=组织名称, OU=组织单位, C=国家, S=省份(州), P=县城”

其他辅助工具:

1)公钥证书格式转换成SPC。 cert2spc.exe

cert2spc TestRoot.cer TestRoot.spc

.spc 意思是 软件发布者证书(Software Pulisher Cerificate).

2)将公钥证书和私钥合并成一个PFX格式的证书文件。pvk2pfx.exe

pvk2pfx -pvk TestRoot.pvk -spc TestRoot.spc -pfx TestRoot.pfx

输入TestRoot.pvk的保护口令来合并.pvk和.spc文件,如果你不设置即将合并出来的TestRoot.pfx的保护口令的话,这个保护口令和输入文件TestRoot.pvk的保护口令一样。(备注:直接从cer文件也可以,不一定要得到SPC文件).

3)签名工具。signtool.exe

二进制文件数字签名.为了保证二进制文件的完整性,数字签名是一个好的方法。

以下命令启动一个有图形界面的文件签名工具向导:

signtool wizard

以下是命令行方式的签名:
示例1:

signtool sign /f “path/to/pfx” /p “pwd_for_pfx” /t “http://timestamp.verisign.com/scripts/timstamp.dll” /d “some description” “Path/To/The/Binary/Which/Need/To/Be/Signed”
示例2:
signcode -n “myactivex” -i http://www.myactivex.com -spc mycert.spc -v mykey.pvk -t http://timestamp.verisign.com/scripts/timstamp.dll myactivex.cab

你可能感兴趣的:(WCF)