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

来源:互联网 发布:jo软件官网 编辑:程序博客网 时间:2024/06/04 20:09

------ 第一步 创建 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 onceset path=./executefiles/set filename=%path%MFCTest.exeset keyname=aikey.pvkset certname=aicert.cerset spcname=%certname%.spcset 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/authenticodeset 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(证书创建工具)