用户安装我们发布的程序时,弹出UAC提示框:
您想允许来自未知发布者的以下程序对此计算机进行更改吗?
发布者:未知
如果安装程序出现该提示,很多用户就不会安装程序了。
从发布者的角度要解决这个问题,就需要对发布的程序做签名认证。使得弹出窗口中显示发布者的公司名称。
用户帐户控制UAC
用户帐户控制(User Account Control,简写作UAC)是微软公司在其操作系统中采用的一种控制机制。是微软在Windows Vista 开始引入的技术,主要功能是当软件在做会影响系统安全的操作时,会触发UAC,需要经过用户同意确认后才可执行。因为大部分恶意软件、病毒、广告插件都会有如:将文件复制到Windows或Program Files等目录、安装驱动、安装ActiveX等影响安全的操作,windows vista及以后的操作系统,对这些操作都会触发UAC,用户都可以在UAC提示时,阻止这些程序的危险操作。
*安装ActiveX;*安装或卸载程序; *安装设备驱动程序;*修改注册表; *将文件移动或复制到Program Files或是Windows目录;上面的操作都会触发UAC。
签名程序
安全对软件和媒体变得越来越重要。程序签名后,使用户可以看到软件的来源,并且没有被恶意修改或意外损坏。 代码签名技术早已问世多年,但许多软件供应商避免使用它,因为参与这个过程很复杂。
首先,在对代码签名之前,需要获得由CA(Certificate Authority,数字证书认证机构)签发的代码签名证书。
选择一个CA,登入到它的网站,找到代码签名证书,
通常步骤是:
- 要求你输入公司或个人的信息。
- 为证书付费。
- 获得私钥文件*.pvk。私钥需要输入密码(PVK-Password),这个密码需要妥善保管。
在获得私钥的同时会生成公钥上传到CA,CA会审核你的提交的信息,审核完成后,会签发软件发布证书(Software Publishing Certificate)*.spc。
最后,你所拥有的就包括:
- 私钥文件*.pvk、
- 私钥密码、
- 软件发布证书*.spc。
以上步骤,根据不同的认证机构有所不同。在取得证书之后,就可以用来对我们的安装程序进行签名,如:在installshield中可以看到打包的选项中的signing就是用来进行签名的。
代码签名证书
代码签名证书,支持Windows 32位和64位用户模式下的 .exe, .cab, .dll, .ocx, .msi, .xpi, and .xap files 等应用程序和内核模式下的sys ,cat 等驱动程序文件签名。代码签名证书能验证软件的来源和代码的完整性,使用者也会知道该代码程序自发布后未遭到非法窜改,从而对软件开发商产生高度信赖感,保护了软件开发商的利益,使得软件开发商能安全地快速地通过互联网发布软件。所以,首先你需要有一个自己公司所有的代码签名证书。要进行签名,首先要有数字证书才行。
去哪里弄一个代码签名证书 ?
用于软件发布的证书,代码签名证书:需要一个证书,为代码做签名。
证书由颁发组织CA(认证机构)颁发。CA中最突出的是:verisign.com和tawthe.com。 然而,获得一个证书是相当繁琐和费时的过程。(需要CA机构识别你或你的组织才能出具),而且需要我们为认证支付几百美元的证书。
一旦选择一个CA,进入CA的网站导航页面,CA提供一个“代码签名证书”。当你点击【购买】按钮,CA将引导你包括以下步骤:
- 输入您的个人和公司信息。
- 支付证书费用。
- 运行一个特殊的小应用程序,将在您的计算机上创建一个私有密钥文件(* .PVK)。
创建私钥文件时,系统将提示您输入密码(PVK-Password密码)。你应该保管好记住这个密码,使用它来签署您的应用程序。您还必须将私钥文件复制到一个安全的地方。 当在您的计算机上创建私钥文件时,小程序还将创建一个免费的“公钥”文件,并将其发送到CA。 现在CA将启动流程,验证和批准您的组织和领域。这个过程通常需要几天时间。在这段时间内CA机构会通过电话或其他方式和你联系请求一些识别文件。 结论CA验证过程时将给你一个链接到一个软件发布证书文件(* .SPC)。下载这个文件,也是在一个安全的地方 这个过程结束时你将有以下3项:
- SPC File
- PVK File
- PVK Password
得到认证后,生成证书,把证书打到软件里exe里。
如果希望Windows信任你的软件,就的向这个列表中的公司去做数字证书,会交一笔费用。
360软件的证书
windows微信的证书
数字签名工具 SignTool.exe
使用微软的签名工具SignTool,签名EXE文件。
数字签名工具 SignTool.exe是一个命令行工具,用于对文件进行数字签名,验证文件和时间戳文件中的签名。
安装 Visual Studio 和 Windows SDK 时会自动安装SignTool.exe工具。要运行SignTool.exe工具,我们使用 Visual Studio 命令提示符或 Windows SDK 命令提示符(也称 CMD Shell)。
注意:
不要直接在系统自带cmd上去执行SignTool命令,因为这些命令工具所在的目录并没有添加到Path中;
而是要使用vs开发人员命令提示符工具去执行,如:
命令格式:
signtool [command] [options] [file_name | ...]
1、以下命令通过使用最佳证书对文件进行自动签名。
signtool sign /a MyFile.exe
C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool sign /a Mgfile.exe
Done Adding Additional Store
SignTool Error: File not found: Mgfile.exe
Number of errors: 1
C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool sign /a D:\Temp\V_1.0_Setup.exe
Done Adding Additional Store
Successfully signed: D:\Temp\V_1.0_Setup.exe
2、以下命令使用存储在受密码保护的 PFX 文件中的证书对文件进行数字签名。
signtool sign /f MyCert.pfx /p MyPassword MyFile.exe
密码不正确:
C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool sign /f D:\Temp\clientcert.pfx /p vmstd56 D:\Temp\V_1.0.0.188_x86_Setup.exe
SignTool Error: The specified PFX password is not correct.
证书标准不对:
C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool sign /f D:\Temp\clientcert.pfx /p vm12346789 D:\Temp\V_1.0.0.188_x86_Setup.exe
SignTool Error: No certificates were found that met all the given criteria.
3、以下命令对文件进行数字签名并加盖时间戳。 用于对文件进行签名的证书存储在 PFX 文件中。
signtool sign /f MyCert.pfx /t http://timestamp.digicert.com MyFile.exe
4、以下命令通过使用位于 My 存储中的证书对文件进行签名,该证书的主题名为 My Company Certificate。
signtool sign /n "My Company Certificate" MyFile.exe