声明:文章整理自互联网

我仅需要给dll添加(替换)一个签名,所以我只看了第一步和第三步,其余的部分我没有测试,不能保证内容的是否正确.

看了很多关于DLL加签名的教程 大多是错误的 完全无法正常走下去,所以整理了这个文章,仅为了方便自己下次需要这个功能的时候不用再折腾,本文内容大多抄自 makecert 制作数字证书

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

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

makecert -n "CN=Root,E=abcde@163.com" -r -sv RootIssuer.pvk RootIssuer.cer

在命令行中输入上述命令回车后,会弹出设置密码的文本框,设置完后请记密码后面会用到

在数字签名工具包文件夹下会多出2个文件,就是在刚才操作下生成的数字认证文件

代码说明:

makecert指的是数字签名工具包中的makecert.exe工具

RootIssuer.pvk RootIssuer.cer 是你要生成的数字认证文件,名字可以自定义

CN=Root,E=abcde@163.com 是签名人姓名和电子邮件地址

如果仅仅是给DLL添加数字签名,可直接跳转到第三步

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

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

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

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

(pvk里面一般存储rsa算法结构,可以分别获取公钥和私钥)

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

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

第三步,用第一步生成的数字签名,签名DLL文件

击文件夹下的signcode.exe文件,选择你要添加数字签名的.dll文件>>签名类型:自定义>>从文件选择中:选择刚才生成的RootIssuer.cer文件

磁盘中的私钥文件:选择wotuanOk.PVK>>输入刚设置的密码>>选择算法加密>>时间戳服务(免费的时间戳服务:WoTrus Free Timestamp Service)

完成后,在查看.dll属性就出来你想要的效果,这证书是自己颁发的!

备注:

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

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

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

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

(4)如果使用openssl的小工具来生成证书可以参考: http://blog.csdn.net/hacode/article/details/43834825

其他辅助工具:

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 "本次签名的描述" "被签名的程序的全路径"

makecert 制作数字证书 给DLL加一个数字签名的更多相关文章

  1. makecert 制作数字证书

    在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书. 第一步,生成一个自签名的根证书(issuer,签发者). >makecert -n &q ...

  2. highestAvailable比较灵活,毕竟大多数功能不需要系统最高权限(四种方法:屏蔽UAC,右键以管理员身份运行,增加manisfest,制作数字证书)

    打开VS2005.VS2008.VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工 ...

  3. 给.DLL文件加一个数字签名的方法

     给.dll文件加一个数字签名的方法 效果如图所示:   做法: 下载数字签名工具包:http://files.cnblogs.com/babyt/SignTool.rar  /Files/JavaC ...

  4. js数字每3位加一个逗号

    if(typeof val ==="number"){ var str = val.toString(); ? /(\d)(?=(\d{})+\.)/g : /(\d)(?=(?: ...

  5. 转: 数字证书原理 https 完整过程解析

    点评: 讲的非常的详细与全面,值得一看. 转: http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html 文中首先解释了加密解 ...

  6. [区块链|非对称加密] 对数字证书(CA认证)原理的回顾

    摘要:文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的 ...

  7. 数字证书原理(ssl,https)

    文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理, ...

  8. 公钥与私钥对HTTPS的理解(数字证书的需要)

    本文转自某大牛链接 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下window ...

  9. 数字证书原理 good

    文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理, ...

随机推荐

  1. 杭电2019 数列有序!(STL解法)

    由于这题对于学过数据结构的我来说,真的是很简单,为了减少时间上的损失,链表无疑是最好的选择(因为数组要往后移位子).然后,因为最近想玩些STL的骚操作,所以就用<list>了,然后顺便学了 ...

  2. Manacher(马拉车)算法

    Manacher算法是一个求字符串的最长回文子串一种非常高效的方法,其时间复杂度为O(n).下面分析以下其实行原理及代码: 1.首先对字符串进行预处理 因为回文分为奇回文和偶回文,分类处理比较麻烦,所 ...

  3. PAT A 1020 Tree Traversals

    给出一棵二叉树的后序遍历序列和中序遍历序列,求这棵二叉树的层序遍历序列 #include<iostream> #include<cstring> #include<que ...

  4. Using webpack-dev-server

    官方讲解地址:https://webpack.js.org/guides/development/#using-webpack-dev-server The webpack-dev-server pr ...

  5. YII insert multiple records into a table

    $values = array(array(1,2),array(3,4),array(5,6),); $nbValues = count($values); $sql = 'INSERT INTO ...

  6. 设计模式课程 设计模式精讲 11-2 装饰者模式coding

    1 代码演练 1.1 代码演练1(未使用装饰者模式) 1.2 代码演练2(使用装饰者模式) 1 代码演练 1.1 代码演练1(未使用装饰者模式) 需求: 大妈下班卖煎饼,加一个鸡蛋加一元,一个火腿两元 ...

  7. 网易云信-新增自定义消息(iOS版)

    https://www.jianshu.com/p/2bfb1c4e9f21 前言 公司业务需要,PC端,移动端都用到了第三方 网易云信 IM来实现在线客服咨询.在这当中难免遇到一些需求是网易云信没有 ...

  8. 2020.2.19 restful的学习

    restful Api 设计要素 3-8 如何设计Restful Api 资源路径(url),HTTP动词,过滤信息(做分页),状态码,错误处理,返回结果    3-9    初始化运行参数 3-10 ...

  9. 利用SSH在本机和远程服务器之间传输文件或文件夹

    1.从远程服务器上下载文件到本机 scp <服务器用户名>@<服务器地址>:<服务器中要下载的文件路径> <下载到本机的绝对路径> 2.从本机上传本地文 ...

  10. ubuntu18.04调整终端字体大小

    一.在终端内右键->Preferences. 二.选中Custom font,然后点击旁边的Monospace Regular 20. 三.在该界面可以选择字体类型,右下角可以调整字体大小.