系统相关
首页 > 系统相关> > Windows数字代码签名的作用和流程

Windows数字代码签名的作用和流程

作者:互联网

  什么是数字代码签名?数字签名代码是一种技术,它使用数字证书来识别软件的发布商和使用hash算法来确保软件的完整性。数字签名使用公共密匙签名书法被创建,它使用两种不同的密匙:公共密匙和私有密匙,我们称其为密匙对。私有密匙一般为拥有者所有,公有密匙对所有的人都可见。

  数字签名代码的作用

  如果你是软件开发人员,你可能已经知道windows系统和一些浏览器(例如IE,Firefox)使用一种称为数字认证代码的技术来标识软件的发行商,来检查软件没有被病毒影响。如果你的软件没有用数字认证代码签名,用户将会收到一个警告“此软件发行商不能被成功的验证,你是否要继续运行此软件“,很多的用户为了安全起见将放弃对此软件的使用。

  如果你的软件是提供给专业的人员使用,结果肯能会更糟。许多公司的IT安全策略禁止没有用数字认证码签名的软件的运行。

  同时微软Windows也使用数字签名证书来判断潜在的恶意软件。如果你的setup.exe没有进行数字认证证书的签名,你的软件的名誉将遭受损害。

  在Vista系统增加UAC之后,情况变的更糟,如果你的软件没有使用数字认证证书签名,且在运行时需要管理员的权限,则会出现警告对话框”不可识别的程序想访问你的计算机“,这个时候很多的用户可能认为是病毒,会禁止使用你的软件。

  数字签名代码流程

  数字签名是对软件进行标识的一个流程,它通过对软件增加了发布商的信息来检查软件在发布后是否被修改或受病毒影响。在软件出售前进行签名已经成为了行业范围的专业实践。随着用户的安全意识的提高,现在越来越多的用户限制下载未签名的软件,因此作为专业的软件公司,在软件出售前进行签名已经成为必不可少的一步。

  要进行数字签名,需要以下准备:

  1)数字证书和密码;

  2)数字签名工具;

  3)时间戳服务器的URL地址;

  数字签名工具

  数字签名工具, 微软提供了两套数字签名工具,

  1)signcode.exe, 从1998年开始使用,随.NET Framework SDK发布。

  signcode.exe 数字签名工具

  makecert.exe 创建数字证书

  cert2spc.exe 将数字证书转化为软件发布者证书格式

  2)signtool.exe,随visualstudio 2005及其以后的版本发布。

  signtool.exe 数字签名工具

  makecert.exe 创建数字证书

  cert2spc.exe 将数字证书转化为软件发布者证书格式

  pvk2pfx.exe(pvkimprt.exe) 将私有的密匙和软件发布者证书合并为pfx文件,此文件将被signtool.exe使用

  上面2中工具的不同是signcode.exe需要输入私有密匙和软件发布者证书(pvk和spc文件),signtool.exe只需要输入由pvk和spc合并产生的一个个人信息交互文件(pfx)。

  获得数字证书

  数字证书,你可以创建自己的数字证书来测试数字签名的流程,但是正式的软件发布,你需要向可信赖的证书颁发机构购买数字证书和密码,推荐沃通的数字签名证书

  创建自己的数字证书(用来测试)

  使用如下命令来创建自己的数字证书:

  makecert.exe -sv mykey.pvk -n "CN=Acme Software Inc." mycert.cer

  你可以将Acme Software Inc.替换为你自己公司的名字。如果mykey.pvk不存在的话,你会要求输入私有密匙的密码,密码可以为空。安全起见最好设置密码,否则别人拿到你的私有密匙后就可以签名了。在上面的命令后,产生了2个文件mykey.pvk和mycert.cer。接下来需要将数字证书(cer)转化为软件发布商证书(spc),命令如下:

  cert2spc.exe mycert.cer mycert.spc

  此过程中需要输入私有密匙的密码,创建完成后应该会生成mycert.spc文件,当数字签名时mycert.cer文件是不需要的。

  1)使用signcode.exe,如下:

  signcode.exe -t <timestamp URL> -spc mycert.spc -v mykey.pvk "<file to be signed>"

  进行数字签名的文件可以是.exe, .dll, .ocx 或者是其他的可执行文件。

  2)使用signtool.exe,如下:

  如果你没有pfx文件,需要使用以下的命令来将pvk和spc文件合并为pfx,如果没有设置密码的话必须使用pvkimprt.exe来合并。

  pvk2pfx.exe -pvk mykey.pvk -pi <password> -spc mycert.spc -pfx mycert.pfx -po <password>pvkimprt.exe -pfx mycert.spc mycert.pvksigntool.exe sign /f mycert.pfx /p <password> /t <timestamp URL> /v "<file to be signed>"

  以下是使用signtool.exe签名的一个实例:

  signtool.exe sign /f mycert.pfx /p <password> /t <timestamp URL> /v "<file to be signed>"

  Here is the Sample Output:

  The following certificate was selected:

  Issued to: SID Software Inc.

  Issued by: Thawte Code Signing CA

  Expires: 10/16/2011 2:17:15 AM

  SHA1 hash: 4374SD894388B9H456E206124G06D9AV1535G12E

  Done Adding Additional Store

  Attempting to sign: jservice.exe

  Successfully signed and timestamped: jservice.exe

  Number of files successfully Signed: 1

  Number of warnings: 0

  Number of errors: 0

  以上,是为大家分享的"Windows数字代码签名的作用和流程”的全部内容,如果用户遇到的问题不能解决,可通过wosign官网客服寻求帮助,凡是选择wosign ssl证书的网站用户,wosign可提供免费一对一的ssl证书技术部署支持,免除后顾之忧.

标签:exe,Windows,密匙,流程,数字签名,签名,软件,mycert,数字证书
来源: https://www.cnblogs.com/zfss/p/11008560.html