您的位置:首页 > 其它

创建ClickOnce项目签名证书详细步骤以及批处理文件

2012-08-24 17:31 483 查看
------ 第一步 创建 X.509 证书 ------

makecert.exe为证书创建工具。

证书创建工具生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。

此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。

创建证书时会提示要求证书的私钥密码(Subject Key,两个密码输入框),并会在生成cer文件是再次要求输入密码(一个输入框)

参考:http://msdn.microsoft.com/zh-cn/library/bfsktky3(VS.80).aspx

命令行为:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\makecert.exe" -r -n "CN=xxxx软件有限公司" -b 01/01/2009 -e 12/31/2019 -sv CbipSetupKey.pvk CbipSetupKey.cer

 

------ 第二步 创建发行者证书 ------

cert2spc.exe发行者证书测试工具

发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书 (SPC)。Cert2spc.exe 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的 SPC。

参考:http://msdn.microsoft.com/zh-cn/library/f657tk8f(VS.80).aspx

生成发行者证书时,不要求输入私钥密码

命令行为:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\cert2spc.exe" CbipSetupKey.cer CbipSetupKey.spc

------ 第三步 导出证书文件------

pvkimprt.exe是证书导出工具。需要从微软网站下载:http://download.microsoft.com/download/vba50/Utility/1.0/NT5/EN-US/pvkimprt.exe

证书导出工具用于将.spc和.pvk文件导出为pfx证书文件。

导出时,会提示创建证书的密码

输入正确的密码后,出现导出向导界面,点击下一步,选择“是,导出密钥”,然后点击下一步,

出现证书类型选择界面,选择“个人信息交换 - PKCS #12(.PFX)(P)”(只有这一种可选,并且其下面的选项均不选择),再点击下一步,

出现私钥保护密码选项,输入密码,然后点击下一步,在文本框中输入要生成的文件名(一般与证书名称一致),点击下一步

显示完成窗口,并显示导出证书的信息。

pvkimprt -pfx CbipSetupKey.spc CbipSetupKey.pvk

------ 第四步 添加到项目中------

在项目属性中,选择“签名”选项卡

勾选“为ClickOnce清单签名”,点击“从文件选择”,然后选择生成的.pfx文件(如果项目中已经存在同名文件,则需要先删除)

选择了.pfx文件后,会提使输入私钥保护密码,输入正确的私钥保护密码后,即可添加到项目中。

需要注意的是证书的有效期,证书有起止有效期,当超出有效期时,将被视为无效证书,无法签名。

http://www.cnblogs.com/yuxs/archive/2009/06/08/1498592.html

以下是批处理文件 待签名的exe放在executefiles目录下

:: Digital signature
:: XXXName
:: 2011-3-15

@echo off

:: set files here for sign
:: sign one file once
set path=./executefiles/
set filename=%path%MFCTest.exe

set keyname=aikey.pvk
set certname=aicert.cer
set spcname=%certname%.spc

set timeurl=http://timestamp.comodoca.com/authenticode
:: timestamp URL
:: http://timestamp.verisign.com/scripts/timstamp.dll :: http://timestamp.globalsign.com/scripts/timstamp.dll :: http://timestamp.comodoca.com/authenticode 
set signInfo="CN=MyCorporation Inc"
::set signInfo="CN=MyCorporation Inc,E=Support@MyCorporation.com,O=XXXName"

:: not sign timestamp
::set args= -spc %spcname%.spc -v %keyname% %filename%
set signargs= -t %timeurl% -spc %spcname% -v %keyname% %filename%

makecert.exe -sv %keyname% -n %signInfo% %certname%
cert2spc.exe %certname% %spcname%
signcode.exe %signargs%

pause


 

=============安全性 篇目录==============
 
证书创建工具生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。
应使用证书存储区来安全地存储证书(证书存储区是系统中一个特殊区域,专门用来保存X.509数字证书)。此工具使用的 .snk 文件以不受保护的方式存储私钥。创建或导入 .snk 文件时,在使用期间应注意保证其安全,并在使用后将其移除。
预设了以下存储区: 
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 证书存储区。
 
格式:makecert [options] outputCertificateFile
基本选项         (输入:makecert /?)

-n x509name
指定主题的证书名称。在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。
-pe
将所生成的私钥标记为可导出。这样可将私钥包括在证书中。
-sk keyname
指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。
-sr location
指定主题的证书存储位置。Location 可以是 currentuser(默认值)或 localmachine。
-ss store
指定主题的证书存储名称,输出证书即存储在那里。
-# number
指定一个介于 1 和 2,147,483,647 之间的序列号。默认值是由 Makecert.exe 生成的唯一值。
-$ authority
指定证书的签名权限,必须设置为 commercial(对于商业软件发行者使用的证书)或 individual(对于个人软件发行者使用的证书)。
         扩展选项         (输入:makecert /!)

-a algorithm
指定签名算法。必须是 md5(默认值)或 sha1。
-b mm/dd/yyyy
指定有效期的开始时间。默认为证书的创建日期。
-e mm/dd/yyyy
指定有效期的结束时间。默认为 12/31/2039 11:59:59 GMT。
-m number
以月为单位指定证书有效期的持续时间。
-cy certType
指定证书类型。有效值是 end(对于最终实体)和 authority(对于证书颁发机构)。
-d name
显示主题的名称。
-eku oid[,oid]
将用逗号分隔的增强型密钥用法对象标识符 (OID) 列表插入到证书中。
-h number
指定此证书下面的树的最大高度。
-ic file
指定颁发者的证书文件。
-ik keyName
指定颁发者的密钥容器名称。
-iky keytype
指定颁发者的密钥类型,必须是 exchange、signature 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。
-in name
指定颁发者的证书公用名称。
-ip provider
指定颁发者的 CryptoAPI 提供程序名称。
-ir location
指定颁发者的证书存储位置。Location 可以是 currentuser(默认值)或 localmachine。
-is store
指定颁发者的证书存储名称。
-iv pvkFile
指定颁发者的 .pvk 私钥文件。
-iy pvkFile
指定颁发者的 CryptoAPI 提供程序类型。
-l link
到策略信息的链接(例如,一个 URL)。
-r
创建自签署证书。
-sc file
指定主题的证书文件。
-sky keytype
指定主题的密钥类型,必须是exchange、 signature或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。
-sp provider
指定主题的 CryptoAPI 提供程序名称。
-sv pvkFile
指定主题的 .pvk 私钥文件。如果该文件不存在,系统将创建一个。
-sy type
指定主题的 CryptoAPI 提供程序类型。
 
 
相关链接:
             
《(2)什么是数字证书?什么是数字时间戳》
参考资源:
             
Makecert.exe(证书创建工具)  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息