参数说明:
-sr CurrentUser -- 指定主题的证书存储位置。Location 可以是 currentuser(默认值)或 localmachine
-ss My -- 指定主题的证书存储名称,输出证书即存储在那里。My表示保存在“个人”
-n CN=MyTestCert -- 指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。
-sky exchange -- 指定颁发者的密钥类型,必须是 signature、exchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。
-pe -- 将所生成的私钥标记为可导出。这样可将私钥包括在证书中。
这个命令生成一个名字为MyTestCert的证书,被保存到了当前用户的个人证书存储区内。
Makecert
Makecert命令生成的证书被保存在证书存储区。证书存储区是系统中一个特殊区域,专门用来保存X.509数字证书。
可以在MMC的证书管理单元中对证书存储区进行管理。Windows没有给我们准备好直接的管理证书的入口。自己在MMC中添加,步骤如下:
l 开始 à 运行 à MMC,打开一个空的MMC控制台。
l 在控制台菜单,文件 à 添加/删除管理单元 à 添加按钮 à 选”证书” à 添加 à 选”我的用户账户” à 关闭 à 确定
l 在控制台菜单,文件 à 添加/删除管理单元 à 添加按钮 à 选”证书” à 添加 à 选”计算机账户” à 关闭 à 确定
完成后,在MMC控制台中有了两个MMC管理单元

Figure 1.证书管理
添加完证书管理单元后可以保存一下这个MMC控制台的设置,方便以后再次使用。在文件菜单中选“保存”,比如可以保存为“证书.msc”。
这两个管理单元分别对应证书的两类存储位置:
当前用户(CurrentUser) -- 当前用户使用的 X.509 证书存储区。
本地计算机(LocalMachine) -- 分配给本地计算机的 X.509 证书存储区。
每个存储位置下面的子目录代表证书的存储区,预设了以下存储区:
|
AddressBook
|
其他用户的 X.509 证书存储区。
|
|
AuthRoot
|
第三方证书颁发机构 (CA) 的 X.509 证书存储区。
|
|
CertificateAuthority
|
中间证书颁发机构 (CA) 的 X.509 证书存储区。
|
|
Disallowed
|
吊销的证书的 X.509 证书存储区。
|
|
My
|
个人证书的 X.509 证书存储区。
|
|
Root
|
受信任的根证书颁发机构 (CA) 的 X.509 证书存储区。
|
|
TrustedPeople
|
直接受信任的人和资源的 X.509 证书存储区。
|
|
TrustedPublisher
|
直接受信任的发行者的 X.509 证书存储区。
|
作为文件形式存在的证书一般有这几种格式:
由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。
证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。
Windows提供了内置的工具可以完成数字证书从文件形式导入到证书存储区,从证书存储区导出为证书文件的功能。
在资源管理器中,找到你要导入的证书文件,右键点击pfx或者cer格式的证书(这里以上面用makecert生成的MyTestCert证书为例),选择“安装”,证书导入向导:

Figure 2. 证书导入向导
下一步,显示要导入证书文件的路径,确认即可,再下一步。
如果是导入pfx含有私钥的证书,需要提供密码:

Figure 3. 导入pfx时需要密码
pfx证书含有私钥,在保存为证书文件时设置有私钥密码,以保护私钥的安全,所以这一步需要提供保存证书时设置的私钥密钥。
如果选择了“标识此密钥为可导出”,导入到证书存储区的证书以后还能导出含有私钥的证书,否则只能导出不含私钥的证书。
再下一步,如果是导入cer证书,导入向导开始后就直接到了这一步。

Figure 4. 选择证书存储区
可以根据证书的类型自动存放到合适的区域,也可以自己选择存储区,一般选个人存储区。
导入完成。查看证书管理中证书已经导入:

Figure 5. 查看导入的证书1
双击这个MyTestCert证书:

Figure 6. 查看导入的证书2
这是证书的具体信息,可以看见这个证书包含有私钥。如果导入的是cer证书,证书中不含有私钥的,那么这里不会显示有相应的私钥。
把上面导入到证书存储区的证书再导出为证书文件。
在MyTestCert证书上点击右键 à 所有任务 à 导入…,证书导出向导运行:

Figure 7. 证书导出向导
这里要导出的MyTestCert证书是含有私钥的证书,所以向导首先要求选择导出的证书是否连同私钥一同导出。如果选要导出私钥,下一步:

Figure 8. 含私钥pfx格式证书选项
选择导出含私钥的证书生成pfx格式的证书。这里是些导出pfx证书的选项。
如果选择了不导出私钥或者选择导出的证书本身就不含有私钥,那么这一步只能选不含私钥的证书格式(导入私钥的选项是暗的):

Figure 9. 不含私钥cer格式证书选项
这里是导出不含私钥证书的选项,一般导出为cer证书。
DER编码,就是导出的证书是二进制格式存储的证书。
Base64编码,就是把证书的二进制编码转成base64的编码后存储的证书。
下一步,如果是导出含私钥的证书,需要提供私钥保护密码:

Figure 10. 导出含私钥的证书需要私钥保护密码
下一步,提供证书文件的路径:

Figure 11. 指定导出证书的路径
导出证书完成。