windows下如何制作和应用数字签名证书 全流程

目前我们在发布应用程序时,有时用户下载后会被360杀毒当做木马直接隔离。为应用程序可执行文件打上数字签名可以让360杀毒放宽检测规则。下文是讲述如何制作数字签名证书的过程。

  需要准备的工具:makecert.exe、cert2spc.exe、pvk2pfx.exe、signtool.exe。

  在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书。

  第一步,生成一个自签名的根证书(issuer,签发者)。

  >makecert -n "CN=Root" -r -sv RootIssuer.pvk RootIssuer.cer

  这个时候,会弹出提示框,首先给RootIssuer.pvk文件设置私钥保护口令;

  然后,再次输入这个口令用私钥(在RootIssuer.pvk文件中)来给公钥(在RootIssuer.cer文件中)加密。

  第二步,使用这个证书签发一个子证书(使用者,subject)。

  >makecert -n "CN=Child" -iv RootIssuer.pvk -ic RootIssuer.cer -sv ChildSubject.pvk ChildSubject.cer

  此时,会弹出提示框先给这个子证书的私钥文件ChildSubject.pvk设置保护口令;

  然后,输入这个子证书的私钥(在ChildSubject.pvk中)口令来保护子证书的公钥(在ChildSubject.cer中)。

  接下来会提示输入根证书私钥(在RootIssuer.pvk中)口令来签发整个子证书(公钥和用户信息)。

  如果你还要签发更多的子证书,类似的,使用这个证书来签发再下层的证书,前提是ChildSubject证书也可以用于签发(作为Issuer)用途。

  备注:

  (1)如果你需要一个交互证书,用于安全通信,那么,加入选项 -sky exchange;

  (2)如果你需要一个签名证书来签发证书或者二进制文件,那么,加入选项 -sky signature.

  (3)如果你需要一个客户端证书来标志你的身份,或者个人信息保护(电子邮件),那么,选项-n 中的E字段是不可缺少的。

  举例:-n "CN=公司名称, E=E-MAIL地址, O=组织名称, OU=组织单位, C=国家, S=省份(州),  P=县城"

参数为: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规范的证书,包含了公钥和私钥,导出时需要提供一个私钥的保护密码,在导出时设置即可

  其他辅助工具:

  1) 公钥证书格式转换成SPC。 cert2spc.exe

  >cert2spc TestRoot.cer TestRoot.spc

  .spc 意思是 软件发布者证书(Software Pulisher Cerificate).

  2) 将公钥证书和私钥合并成一个PFX格式的证书文件。pvk2pfx.exe

  >pvk2pfx -pvk TestRoot.pvk -spc TestRoot.spc -pfx TestRoot.pfx

  输入TestRoot.pvk的保护口令来合并.pvk和.spc文件,如果你不设置即将合并出来的TestRoot.pfx的保护口令的话,这个保护口令和输入文件TestRoot.pvk的保护口令一样。(备注:直接从cer文件也可以,不一定要得到SPC文件).

  3) 签名工具。signtool.exe

  二进制文件数字签名.为了保证二进制文件的完整性,数字签名是一个好的方法。

  以下命令启动一个有图形界面的文件签名工具向导:

  >signtool wizard

  以下是命令行方式的签名:

  >signtool  sign /f "pfx文件的全路径" /p "pfx文件的保护口令" /t "http://timestamp.verisign.com/scripts/timstamp.dll" /d "本次签名的描述" "被签名的程序的全路径"

转载地址:http://www.jizhuomi.com/software/349.html

原文地址:https://www.cnblogs.com/jackzz/p/11106057.html

时间: 2024-10-12 05:30:26

windows下如何制作和应用数字签名证书 全流程的相关文章

免费的软件数字签名证书申请流程

现在很多人希望自己的程序拥有一个数字签名,这样可以很大程度上防止误报. 博主也是这么想的,于是博主想申请个数字签名证书. 这里有一个叫宇盾的数字签名,博主试了一下还行. 这里附上他们的官网链接:www.down1s.com 注意要阅读他们的用户协议,他们是禁止违法的程序签名的! 我们可以免费试用他们的测试数字证书 下载后,如果不会签名可以看一下他们的教程 教程链接 反正官网上说的很详细了. 但是测试证书是不能防止误报的,你需要购买他们的正式证书. 博主我买了,还是挺好的(2040年到期) 原文地

windows下实现pyton解释器的tab补全

用python-2.7-windows.msi安装的python大多是没有tab补全功能的 首先下载编译好的Readline pan.baidu.com/s/1cOvo8 将以下四个文件复制到C:\Python27\Lib\site-packages下 Readline-1.7-py2.7.egg-info readline.py readline.pyc _rlsetup.pyd 修改附件中的.startup.py中的'HOME' 改成 'HOMEPATH',因为windows没有HOME目录

Windows下配置Git服务器和客户端 超全

为了配合Redmine使用,特地用Git来做版本控制. Git Candy© 是一个基于ASP.NET MVC的Git分布式版本控制平台,Git Candy的目标是轻松干掉Bonobo,逐渐追赶Github,并用微创新超过Github. 源码在:http://github.com/Aimeast/GitCandy演示在:http://git.53wb.com https://gitcandy.com/Repository Bonobo到GitCandy数据库转换程序:http://git.53w

windows下部署免费ssl证书(letsencrypt)

随着网络的发展,网络安全也越来越重要,对于网站来说,从Http升级到https也是我们要做的首要事情.要实现https,首先我们需要申请一张SSL证书,这篇文章我主要介绍下边这几个方面: 1. SSL简单介绍 2. 免费Letencrypt证书部署 3. 安装注意事项 一.SSL简单介绍 ssl作为一个网络加密协议,主要是存在于系统中应用层和传输层之间的一个安全套接字层(Secure Socket Layer),也就是位于TCP/IP协议和各个应用层协议之间,为应用数据传输提供加密的协议.当然它

windows下使用openssl生成证书

一:下载 使用的是0.9.8 1:openssl下载,http://www.openssl.org/source/ 2:安装vs2010,并安装 3:下载perl,http://www.activestate.com/ActivePerl,并安装. 二:安装openssl 1:解压到系统盘C:\openssl-0.9.8v 2.配置WIN32环境 打开CMD命令行,进入C:\openssl-0.9.8v目录,执行命令 perl Configure VC-WIN32 注意区分大小写 3.进入VC

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP全名超文本传输协议,客户端据此获取服务器上的超文本内容.超文本内容则以HTML为主,客户端拿到HTML内容后可根据规范进行解析呈现.因此,HTTP主要负责的是"内容的请求和获取".问题就出在这部分.行监控.劫持.阻挡等行为很容易导致网站泄密,一些关键参数比如登录密码开发者会在客户端

纯windows下制作变色龙引导安装U盘教程

原创教程:纯windows下制作变色龙引导安装U盘教程 支持Mavericks和Yosemite 支持白苹果 目标:windows下制作带 Chamelon变色龙引导的黑苹果安装U盘,支持PC机引导安装,经测试同样支持真苹果安装. 制作工具:1.bootice1.32.windows版变色龙 wowpc.iso 2391支持 10.10引导(可以随时更新)3.懒人版安装镜像 Mavericks_Install_10.9.4.cdr(可以选择其它版本)硬件需要:大于或等于8G U盘一个.标注:以最

windows下制作linux U盘启动盘或者安装优盘(转)

windows下制作linux U盘启动盘或者安装优盘(转) Linux发行版排行榜:http://iso.linuxquestions.org/ [方案一]:UltraISO(不推荐,在Windows下制作Windows安装盘绝佳) 用UltraISO软件打开linux发行版的ISO文件,用UltraISO软件的“启动/启动光盘”中的:写入硬盘映像,选择USB-HDD/USB-HDD+,点击写入. [方案二]:UNetbootin(中文界面) http://unetbootin.sourcef

Windows 下VC++6.0制作、使用动态库和静态库

Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一个.cpp和一个.h(C++header file)文件 2..cpp程序直接照老师给的打,注意这里需要改错,去掉(long) 3. .h文件需要自己编写格式如下.以head.h为例 #ifndef _HEAD_H_ #define _HEAD_H_ unsigned long unsgn_pow(