makecert.exe不用去找,安装VS2008后,在开始菜单相应的路径找到该命令提示符:Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008 命令提示

打开后,输入makecert,就可以开始了

参数为:makecert -r -pe -n "cn=MyCA" -$ commercial -a sha1 -b 08/05/2010 -e 01/01/2012 -cy authority -ss my -sr currentuser

其中各部分的意义:

-r: 自签名
-pe: 将所生成的私钥标记为可导出。这样可将私钥包括在证书中。
-n "cn=MyCA": 证书的subject name,.net自带类库中有X509Store类,可以在store中根据证书subject name,来找到改证书
store参考:X509Store 类
-$ commercial:指明证书商业使用。。。
-a:指定签名算法。必须是 md5(默认值)或 sha1。
-b 08/05/2010:证书有效期的开始时间,默认为证书的创建日期。格式为:mm/dd/yyyy
-e 01/01/2012:指定有效期的结束时间。默认为 12/31/2039 11:59:59 GMT。格式同上
-ss my:证书产生到my个人store区
-sr currentuser:保持到计算机当前个人用户区,其他用户登录系统后则看不到该证书。。

查看该生成的证书并导出:
可以在MMC的证书管理单元中对证书存储区进行管理。Windows没有给我们准备好直接的管理证书的入口。自己在MMC中添加,步骤如下: 
1. 开始→运行→MMC,打开一个空的MMC控制台。
2. 在控制台菜单,文件→添加/删除管理单元→添加按钮→选”证书”→添加→选”我的用户账户”→关闭→确定
3. 在控制台菜单,文件→添加/删除管理单元→添加按钮→选”证书”→添加→选”计算机账户”→关闭→确定

然后导出为PFX格式的证书,PKCS#12规范的证书,包含了公钥和私钥,导出时需要提供一个私钥的保护密码,在导出时设置即可。

*******************************************************************************************************************************************

微软官方MakeCert.exe说明:

证书创建工具 (Makecert.exe)

.NET Framework 2.0
 
 

证书创建工具生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。

Makecert.exe 包含基本选项和扩展选项。基本选项是最常用于创建证书的选项。扩展选项提供更多的灵活性。

一定不要将此工具生成的证书私钥存储在 .snk 文件中。如果需要存储私钥,则应使用密钥容器。有关如何在密钥容器中存储私钥的更多信息,请参见如何:将非对称密钥存储在密钥容器中

警告

应使用证书存储区来安全地存储证书。此工具使用的 .snk 文件以不受保护的方式存储私钥。创建或导入 .snk 文件时,在使用期间应注意保证其安全,并在使用后将其移除。

 
 
makecert [options] outputCertificateFile
 
参数 说明

outputCertificateFile

测试 X.509 证书要写入的 .cer 文件的名称。

 
选项 说明

-n x509name

指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。

-pe

将所生成的私钥标记为可导出。这样可将私钥包括在证书中。

-sk keyname

指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。

-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

指定颁发者的密钥类型,必须是 signatureexchange 或一个表示提供程序类型的整数。默认情况下,可传入 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

指定主题的证书文件。

-sky keytype

指定主题的密钥类型,必须是 signatureexchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。

-sp provider

指定主题的 CryptoAPI 提供程序名称。

-sv pvkFile

指定主题的 .pvk 私钥文件。如果该文件不存在,系统将创建一个。

-sy type

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

示例

 
 

下面的命令创建了一个由默认测试根颁发的测试证书并将其写入 testCert.cer

makecert testCert.cer

下面的命令创建了一个由默认测试根颁发的证书并将其保存到证书存储区。

makecert -ss testCertStore

下面的命令创建了一个由默认测试根颁发的证书并将其保存到证书存储区。它将证书显式地放入 currentuser 存储区。

makecert -ss testCertStore -sr currentuser

下面的命令使用主题的密钥容器和证书主题的 X.500 名称创建一个测试证书,并将其写入 textXYZ.cer

makecert -sk XYZ -n "CN=XYZ Company" testXYZ.cer 

下面的命令创建了一个由默认测试根颁发的证书和一个 .pvk 文件,并将此证书同时输出到存储区和该文件。

makecert -sv testCert.pvk -ss testCertStore testCert.cer

下面的命令创建了一个由默认测试根颁发的证书和一个密钥容器,并将此证书同时输出到存储区和该文件。

makecert -sk myTestKey -ss testCertStore testCert.cer

下面的命令创建一个自我签署的证书,指定使用者名称为“CN=XYZ Company”,指定有效期的起始和结束时间,将密钥放入 my 存储区,指定并交换密钥,并且使私钥可导出。

makecert -r -pe -n "CN=XYZ Company" -b 01/01/2005 -e 01/01/2010 -sky exchange -ss my

下面的命令创建了一些证书并将它们保存到存储区。第一个命令使用默认测试根创建了一个证书并将其保存到存储区。第二个命令使用新创建的证书创建了另一个证书,并将第二个证书保存到另一个存储区。

makecert -sk myTestKey -ss testCertStore
makecert -is testCertStore -ss anotherTestStore

下面的命令创建了一些证书并将它们保存到存储区。第一个命令将证书保存到 my 存储区。第二个命令使用新创建的证书创建了另一个证书。因为my 存储区中存在多个证书,所以第二个命令使用公用名称来标识第一个证书。

makecert -sk myTestKey -n "CN=XXZZYY" -ss my
makecert -is my -in "XXZZYY" -ss anotherTestStore

下面的命令创建了一些证书并将它们保存到文件和存储区。第一个命令使用默认测试根创建了一个证书并将其保存到 my 存储区和一个文件。第二个命令使用新创建的 testCert.cer 证书创建了另一个证书。因为 my 存储区中存在多个证书,所以第二个命令使用证书文件名来唯一标识第一个证书。

makecert -sk myTestKey -n "CN=XXZZYY" -ss my testCert.cer
makecert -is my -ic testCert.cer -ss anotherTestStore
官方原址:https://msdn.microsoft.com/zh-cn/library/bfsktky3(VS.80).aspx 
 

用makecert.exe生成一个自签名的证书的更多相关文章

  1. 用微软makecert.exe生成一个自签名的证书

    RT makecert.exe不用去找,安装VS2008后,在开始菜单相应的路径找到该命令提示符:Microsoft Visual Studio 2008/Visual Studio Tools/Vi ...

  2. apk反编译(5)用apktool重新生成一个未签名的apk

    用apktool反编译apk后,得到一个目录,里面有smali文件,可以对其修改,然后用apktool重新生成一个未签名的apk. 如,把smali文件中的广告部分去掉或改成自己的. 命令如下:与破解 ...

  3. 使用openssl创建一个自签名https证书,并配置到nginx里面

    公司内网也有这个需求,就简单实现一下. 参考的都是网上的方案,一次过. 1,使用openssl建立服务器私钥(需要输入密码,请记住这个密码)生成RSA密钥 >openssl genrsa -de ...

  4. iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤

    引言(创建生成的证书只能用于测试使用.如果想使用自签名证书就只能以自己为 CA机构颁发证书,进行双向认证才能使用) 使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的.也就是说,任何人都 ...

  5. [转]如何创建一个自签名的SSL证书(X509)

    原文出自:http://www.joyios.com/?p=47 引言 使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的.也就是说,任何人都可以通过适当的工具拦截或者监听到在网络上传输 ...

  6. windows下使用makecert命令生成自签名证书

    1.makecert命令路径 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 2.生成一个自签名证书 makecert -r -pe -n " ...

  7. Makecert.exe(证书创建工具)

    Makecert.exe(证书创建工具) .NET Framework 4.5   其他版本   2(共 3)对本文的评价是有帮助 - 评价此主题   证书创建工具生成仅用于测试目的的 X.509 证 ...

  8. C#程序证书创建工具 (Makecert.exe)

    原文地址:https://msdn.microsoft.com/zh-cn/library/bfsktky3(VS.80).aspx 证书创建工具生成仅用于测试目的的 X.509 证书.它创建用于数字 ...

  9. 使用makecert.exe创建数字证书

    RT makecert.exe不用去找,安装VS2008后,在开始菜单相应的路径找到该命令提示符:Microsoft Visual Studio 2008/Visual Studio Tools/Vi ...

随机推荐

  1. python新手 实践操作 作业

    #有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中.即: {'k1': 大于66的所 ...

  2. ssh中的 Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

    这个错误我整理了  半天才发现问题的存在. 尝试了网上的很多办法,但是最后都没有达到效果. 包括这两种: 第一种: web.xml种的配置 <filter> <filter-name ...

  3. Alyona and copybooks

    题目连接 题意: 给 n,a,b,c四个数,n为已有的书的数目,问再买k本书所需花费最少是多少,(k+n)%4==0: 有三种套餐 第一种只有一本书,花费a 第二种有两本书,花费b, 第三种有三本书, ...

  4. Js控制iphone端的input/textarea元素失去焦点时隐藏键盘

    原文http://www.it165.net/pro/html/201404/12672.html function objBlur(obj, time){ if(typeof obj != 'str ...

  5. Unity3DGUI:人物能量条

  6. Signalr 实现心跳包

    项目分析: 一个实时的IM坐席系统,客户端和坐席使用IM通信,客户端使用android和ios的app,坐席使用web. web端可以保留自己的登录状态,但为防止意外情况的发生(如浏览器异常关闭,断网 ...

  7. DrawerLayout,ToolBar 和 TabHost 的使用

    ActionBar 定义起来不方便 toolbar: 最重要的特性,显示menu菜单,右上角三个点的菜单按钮,使用灵活 使用:1,布局文件,包裹LinearLayout 放imageView, 或者I ...

  8. Form提交时隐藏Token验证

    前端声称一个Token @Html.AntiForgeryToken() 后台对Token进行验证 AntiForgery.Validate();

  9. error C3872: “0x3000”: 此字符不允许在标识符中使用

    主要是拷贝的程序问题,有错误的空字符. 0x3000是汉语的空格,也就是全角空格,相当于一个汉字,但你又看不见它. 你知道的,像逗号,有半角(,)和全角(,)之分的,其实空格也有. 0x3000是全角 ...

  10. Chapter 16_5 单一方法

    当一个对象只有一个方法时,可以不用创建接口table,但是要将这个单独的方法作为对象来返回.可以参考迭代器那一节,是如何构造一个迭代器函数,那个函数将状态保存为closure. 一个具有状态的迭代器是 ...