数字签名(以ActiveXDemo为例)
1.创建Install.inf文件和run.bat
Install.inf:
[version] signature="$CHICAGO$" AdvancedINF=2.0 [Setup Hooks] HOOKRUN1=HOOKRUN1 [Deployment] InstallScope=user [HOOKRUN1] run=%EXTRACT_DIR%\run.bat
run.bat:
set CURDIR=%cd% msiexec.exe /i "%CURDIR%\ActiveXDemo.Setup.msi" /qn
2.创建cab文件(下载cabsdk.exe,加压之后需要其中的cabarc.exe---打包)
F:\Projects\ActiveXDemo\CABARC.EXE N
F:\Projects\ActiveXDemo\ActiveXDemo.cab
F:\Projects\ActiveXDemo\ActiveXDemo.Setup.msi
F:\Projects\ActiveXDemo\Install.inf F:\Projects\ActiveXDemo\run.bat
注释:将canarc.exe、ActiveXDemo.Setup.ms、Install.inf和run.bat保存到同一目录,进入cmd执行上面的命令,将ctiveXDemo.Setup.ms、Install.inf和run.bat打包成ActiveXDemo.cab文件
3.在网上下载signtool.rar并解压,进入DOS系统,通过cd命令进入到解压后的文件夹下面(“cd %path%\signtool\”),并将刚才生成的ActiveXDemo.cab拷贝到当前m目录下
4.创建证书文件
进入到上面的目录后,输入以下命令:
makecert -sv ActiveXDemo.pvk -r -n "CN=SunStar" ActiveXDemo.cer
利用MakeCert生成一个 证书.cer和一个私钥.pvk,同时创建私钥和公钥
5.转换证书
cert2spc ActiveXDemo.cer ActiveXDemo.spc
用Cert2Spc将.cer文件转换成为PKCS #7软件发布Certificate(.spc文件)
6.创建另外一个自签名证书,叫test.cer
makecert -sv test.pvk -r -n "CN=SunStar" test.cer cert2spc test.cer test.spc
7.从test.cer创建test.ctl文件
makectl test.cer test.ctl
8. 用ActiveXDemo.pvk和ActiveXDemo.spc这两个文件给test.ctl作数字签名
signcode -v ActiveXDemo.pvk -spc ActiveXDemo.spc test.ctl
9. 把test.ctl移动到受信系统存储区(管理证书)
certmgr -add -ctl test.ctl -s trust
10. 把ActiveXDemo.cer移动到根系统存储区
certmgr -add -c ActiveXDemo.cer -s root
11. 用test.pvk和test.spc给ActiveXDemo.cab作数字签名(将证书部署到.cab)
singcode -v test.pvk -spc test.spc ActiveXDemo.cab
12. 检查文件是否通过验证(检查部署证书后的.cab是否正确)
chktrust ActiveXDemo.cab
13.如果文件通过了数字签名检测,系统会询问是否安装这个文件,这时候一定要选择安装,整个签名过程才能完成。
(8-11类似于图形化的运行signcode.exe进行数字签名向导)
数字签名(以ActiveXDemo为例)的更多相关文章
- 公钥、私钥、CA认证、数字签名、U盾
感谢传智播客的方立勋老师,在一个教学视频上,他巧妙地以蒋介石给宋美龄写密信作为例子,生动地讲述了软件密码学知识. 加密分为对称加密和非对称加密,我们传统理解的,发送数据之前使用一个加密器加密,接到数据 ...
- Microsoft.Net中数字签名技术
概 述:本文以Microsoft.Net中创建签名的CAB文件为例,说明如何创建签名文件,从而使你的代码能够安全的在INTERNET上公布.希望能起到抛转引玉的作用. keyword:数字签名,Act ...
- JAVA 上加密算法的实现用例---转载
通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难.本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman 的使用. 第 1 章基础知识 ...
- 浅谈IM软件业务知识——非对称加密,RSA算法,数字签名,公钥,私钥
概述 首先了解一下相关概念:RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的.RSA就是取自他们三个人的名字. 算法基于一个数论:将两个大素数相乘很ea ...
- 微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)
原文:微信JS-SDK"分享信息设置"API及数字签名生成方法(NodeJS版本) 先上测试地址以示成功: 用微信打开下面地址测试 http://game.4gshu.com/de ...
- 为通过ClickOnce部署的应用程序进行数字签名
为通过ClickOnce部署的应用程序进行数字签名 ClickOnce是.NET用于Windows应用程序的一种便捷部署方式.不过由于便捷,导致缺少自定义操作的空间.比如需要对通过ClickOnce部 ...
- Google研究人员宣布完成全球首例SHA-1哈希碰撞!
2004年的国际密码讨论年会(CRYPTO)尾声,我国密码学家王小云及其研究同事展示了MD5.SHA-0及其他相关杂凑函数的杂凑碰撞并给出了实例.时隔13年之后,来自Google的研究人员宣布完成第一 ...
- 【传输协议】TCP、IP协议族之数字签名与HTTPS详解
文章转载出自:https://blog.51cto.com/11883699/2160032 安全的获取公钥 细心的人可能已经注意到了如果使用非对称加密算法,我们的客户端A,B需要一开始就持有公钥,要 ...
- 以e2e_cli为例漫谈fabric的一些基础知识点
在刚接触fabric的时候一般都是直接跟着wiki的教程一步步安装配置,执行一系列命令,最终将其运行起来,但很多人对其中的运行流程及其基础知识点可能不是很了解.基于此今天我将以$FABRIC_ROOT ...
随机推荐
- [洛谷P2057][SHOI2007]善意的投票
题目大意:有$n(n\leqslant300)$个人,每个人可以选择$0$或$1$,每个人最开始有意愿,有$m(m\leqslant\dfrac{n(n-1)}2)$对好朋友.定义一次的冲突数为好朋友 ...
- LUOGU 1440
#include<cstdio> #include<algorithm> #include<cstring> #define N 1000005 using nam ...
- 在Linux系统的服务器上使用Memtester进行内存压力测试
最近要测试一台机器的整体性能情况,就在google搜索一番,发现这个一个小工具,说是可以进行内存的压力测试,Memtester主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值 ...
- noip模拟赛 但有用
题目描述 给定一个 n ∗ m 个矩阵,矩阵中每个数都是 [1, 12] 内的整数.你可以执行下列两个操作任意多次: • 指定一行,将该行所有数字 +1. • 指定一列,将该列所有数字 +1. 如果执 ...
- nginx 报invalid pid number
/opt/ibis/sbin/nginx -c /opt/ibis/conf/nginx.conf 这是make make install之后生成的文件夹和文件. -c c是configure的缩写 ...
- arp协议及简单应用
1:什么是arp协议 参考文章:http://blog.csdn.net/tigerjibo/article/details/7351992 全称是:Address Resolution Protoc ...
- 手脱ASProtect v1.2(无Stolen Code)
1.载入PEID ASProtect v1.2 2.载入OD > 01C04200 push 跑跑赛道.0042C001 ; //入口处 C3 retn AA stos byte ptr es: ...
- python 栈和队列
class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push ...
- JAVA、android中常用的一些jar包的作用
正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进 ...
- [技巧篇]07.JSON.parse() 和 JSON.stringify()
JSON.parse() 用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age&q ...