计算机上已安装Visual Studio。
参考微软官方文档 【Markcert.exe】
https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-4.0/bfsktky3(v=vs.100)
【证书创建工具】
开始-->所有程序--->Visual Studio 2017-->Visual Studio Tools--->Vs 2017的开发人员命令提示符
输入命令:
makecert -?
如图:
makecert 命令:
makecert [options] outputCertificateFile
参数 | 说明 |
---|---|
outputCertificateFile | 测试 X.509 证书要写入的 .cer 文件的名称。 |
基本选项
选项 | 说明 |
---|---|
-n name | 指定主题的证书名称。 此名称必须符合 X.500 标准。 最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,-n "CN=myName"。 |
-pe | 将所生成的私钥标记为可导出。 这样可将私钥包括在证书中。 |
-sk 键名 | 指定主题的密钥容器位置,该位置包含私钥。 如果密钥容器不存在,系统将创建一个。 |
-sr 位置 | 指定主题的证书存储位置。 位置 可以为 currentuser (默认设置)或 localmachine。 |
-ss 存储 | 指定主题的证书存储名称,输出证书即存储在那里。 |
-# 数字 | 指定从 1 到 2,147,483,647 的序列号。 默认值是由 Makecert.exe 生成的唯一值。 |
-$ authority | 指定证书的签名权限,必须设置为 commercial (对于商业软件发行者使用的证书)或 individual(对于个人软件发行者使用的证书)。 |
-? | 显示此工具的命令语法和基本选项列表。 |
-! | 显示此工具的命令语法和扩展选项列表。 |
扩展选项
选项 | 说明 |
---|---|
-a 算法 | 指定签名算法。 algorithm 必须是 md5、sha1(默认值)、sha256、sha384 或 sha512。 |
-b mm/dd/yyyy | 指定有效期的开始时间。 当前日期的默认值。 |
-crl | 生成证书重定位列表 (CRL) 而不是证书。 |
-cy certType | 指定证书类型。 有效值是 end(对于最终实体)和 authority (对于证书颁发机构)。 |
-e mm/dd/yyyy | 指定有效期的结束时间。 默认为 12/31/2039 11:59:59 GMT。 |
-eku oid[,oid…] | 将用逗号分隔的增强型密钥用法对象标识符 (OID) 列表插入到证书中。 |
-h number | 指定此证书下面的树的最大高度。 |
-ic file | 指定颁发者的证书文件。 |
-ik keyName | 指定颁发者的密钥容器名称。 |
-iky keytype | 指定发布者的密钥类型,必须是下列之一:signature(其中指出密钥用于数字签名),exchange(其中指出密钥用于密钥加密和密钥交换),或一个整数,表示提供程序类型。 默认情况下,可传入1 表示交换密钥,或2 表示签名密钥。 |
-in name | 指定颁发者的证书公用名称。 |
-ip 提供程序 | 指定颁发者的 CryptoAPI 提供程序名称。 关于 CryptoAPI 提供程序名称的信息,请参见 –sp。 |
-ir location | 指定颁发者的证书存储位置。 位置 可以为 currentuser (默认设置)或 localmachine。 |
-is store | 指定颁发者的证书存储名称。 |
-iv pvkFile | 指定颁发者的 .pvk 私钥文件。 |
-iy 类型 | 指定颁发者的 CryptoAPI 提供程序类型。 关于 CryptoAPI 提供程序类型的信息,请参见 –sy 选项。 |
-l link | 到策略信息的链接(例如,一个 URL)。 |
-len 数字 | 指定生成的密钥长度(以位为单位)。 |
-m number | 以月为单位指定证书有效期的持续时间。 |
-nscp | 包括 Netscape 客户端身份验证扩展。 |
-r | 创建自签署证书。 |
-sc 文件 | 指定主题的证书文件。 |
-sky keytype | 指定主题密钥类型,必须是下列之一:signature(其中指出密钥用于数字签名),exchange(其中指出密钥用于密钥加密和密钥交换),或一个整数,表示提供程序类型。 默认情况下,可传入1 表示交换密钥,或2 表示签名密钥。 |
-sp 提供程序 | 指定主题的 CryptoAPI 提供程序名称,该名称必须在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider 的注册表子项中已有定义。 如果 –sp 和 –sy 都出现, CryptoAPI 提供程序的类型应对应于提供程序的子项的 Type 值。 |
-sv pvkFile | 指定主题的 .pvk 私钥文件。 如果该文件不存在,系统将创建一个。 |
-sy type | 指定主题的 CryptoAPI 提供程序类型,该类型必须在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider 的注册表子项中已有定义。 如果 –sy 和 –sp 都出现, CryptoAPI 提供程序的类型应对应于提供程序的子项的 Name 值。 |
-tbs | 指定需签名的证书或 CRL 文件。 |
输入 命令:【使用主题的密钥容器和证书主题的 X.500 名称创建一个测试证书,并将其写入 writeName.cer。】
makecert -sk KeyName -n "CN=SubjectName" writeName.cer
如果命令操作成功,将弹出 Succeeded
将在指定目录下 找到该文件 writeName.cer
文件路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\writeName.cer
查看该证书信息:
在控制台程序中 输入下面几行代码:
//using System.Security.Cryptography.X509Certificates;
string fileName = @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\writeName.cer";
X509Certificate certificateTest = new X509Certificate2(fileName);
//以文本格式显示509证书信息
Console.WriteLine(certificateTest);
运行效果: