从Windows 2000开始,微软就开始在操作系统的模块上推行数字签名,最早是在驱动程序中推行,不过一直都没有特别强调这一点。从Vista开始,微软在x64位的系统上强制推行数字签名,没有经过WHDL和RDS认证并签名的驱动程序将无法在Vistax64版本上加载。对于普通的应用程序来说,微软也开始推行数字签名,虽然没有经过签名的应用程序仍然可以在Vista上运行,但是如果ISV想通过微软的logo认证,那么就必须对所有的可执行文件进行数字签名。在后续的Vista版本上,微软会逐步加强对数字签名的要求,最终要求所有的应用程序必须经过签名才能在Windows系统上运行。当然,这是长远目标,其中还有很长的路要走。
对于ISV来说,我们现在就应该做好数字签名的准备。我在这里就用一个简单的例子来说明一下大概的过程,如果实际操作的话,会有不同的要求。
第一步:你需要自己自己生成一个证书,并把其中的私钥导出备用。
第二步:把生成的证书提交给第三方的认证机构,比如:Verisign,Thawte这些比较大的公司都提供相应的服务;提交的同时,这些机构会需要你提供一些资料以便认证你的身份。这个很好理解,因为他们需要在以后你使用证书的过程中对你的身份负责,所有他们必须首先认证你的身份。
第三步:这些机构会给你提供一个Digital ID,对你的身份信息提供认证。一般会用邮件的方式通知你。
第四步:使用工具对你自己的可执行文件进行签名。
签名完成以后就可以用证书发布你的产品了,那么当程序在Vista上运行的时候就会被认为是可以被识别的应用程序。
以下是一个具体的例子:
1)首先生成证书:
Makecert–svdotnetchina.pvk–n“CN=dotnetchina.com.cn”–b01/01/2006–e01/01/2008dotnetchina.cert
说明:
-sv dotnetchina.pvk 导出私钥到dotnetchina.pvk这个文件中,以便我们在后面签名的时候使用
-n “CN=dotnetchina.com.cn” 指定这个证书的名字
-b 01/01/2006 指定这个证书的开始日期为01/01/2006
-e 01/01/2006 指定这个这个证书的结束日期为01/01/2008
Dotnetchina.cert 把生成的证书存储在这个文件中,其中包括了公钥/私钥对
2) 现在你就可以提交证书到前面提到的这些机构进行认证了
3) 认证完成,我们用获得证书对可执行文件进行签名
用下面的命令把证书转换为SPC (Software Publishing Certificate 软件发行证书)
Cert2spcdotnetchina.certdotnetchina.spc
最后,用下面的命令对exe进行签名
Signtoolsignwizard
这个命令会打开以下的图形界面,引导你完成签名的过程:
Figure:使用signtool打开签名引导程序
Figure:选择要签名的文件
Figure:选择定制的方式,普通的签名方式是使用在本地计算机上安装的证书进行,因为我们签名只生成了文件证书,没有导入到本地计算机,所以不能使用这个选项。
Figure:选择生成的软件发布证书文件
Figure:选择刚才导出的私钥文件,并提供密码
Figure:选择加密算法
Figure:选择其他选项以后,最终签名完成
被签名的可执行文件可以在属性中找到“数字签名”选项卡,其中会有签名的列表。
Figure:被签名的文件属性
Figure:对比一下没有签名的属性卡
注意,只有被第三方认证的证书签名,并提供完成的认证信息才可以被Vista认为是可识别的应用程序,并显示灰色的警告窗口,上面的过程仅仅是例子。
分享到:
相关推荐
代码签名最佳实践。
Auth0 自定义签名证书将自定义签名证书上传到 Auth0 的小实用程序。 更新 config.json 文件以引用您的 Auth0 帐户和证书。 配置完成后,只需运行node index附录:生成自签名证书brew install openssl 然后生成私钥、...
代码签名任务 Azure DevOps的生成任务,使用户能够对程序... 散列算法:用于创建文件签名(即SHA256或SHA1)的文件摘要算法。 默认值:SHA256 选择singtool.exe :选择用于签名的signtool的选项 内置:这是默认选项。
GRUB2的grub2-signing-extension GRUB2具有称为“ check_signatures”的功能,该功能会自动检查您的GRUB2文件是否已签名并具有良好的签名。 如果文件未签名或签名不正确,GRUB2将不会运行它们以防止运行恶意软件。 ...
浏览器令牌签名 许可证:LGPL 2.1 :copyright:爱沙尼亚信息系统管理局 警告:从版本50开始,Firefox 52删除了NPAPI支持,并添加了Chrome扩展支持,该版本以 警告:删除了Windows和Linux NPAPI代码。 对旧版浏览器...
Signtool代码签名此操作将对给定文件夹中的签名文件进行编码,如果需要,可以递归执行。 该操作使用base64编码的PFX证书通过将证书添加到存储中来对文件进行签名,然后使用signtool进行代码签名。 除description外,...
AN12812 Using Code-Signing Tool with Hardware Security Module
eu-16-Yang-Signing-Into-Billion-Mobile-Apps-Effortlessly-With-OAuth20 安全对抗 web安全 信息安全 安全研究 安全开发
2、上述代码使用MFC库,造成执行文件过大的问题,修正代码中消息模拟全部用Windows API实现 二、修改注册表的方法 1、windows 2000 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing\Policy (键值改为0)...
gradle-gpg-signing-plugin 不再维护:此插件提供的功能自起已包含在Gradle中。 由于不再需要该插件,因此已经放弃了该插件的工作。 要在Gradle 4.5及更高版本中通过gpg-agent签署工件,请使用的以下构建脚本代码段...
信息安全_数据安全_eu-16-Yang-Signing-Into-Billion- 安全防护 数字认证 数据恢复 基础设施 AI
Signing Configurations配置文件
xcode 4.2 免证书真机调试配置 1、根据《XCode 4.2 免证书调试之...6、XCode4.2项目中,Build Setting->Code signing->Code signing Identity, 点击"Don't Code Sign",选择other,在弹出框中填入"iPhone Developer"。
Traceable, group-oriented, signature scheme with multiple signing policies in group-based trust management
的winio文件必须放在同一目录作为您的应用程序的可执行文件。 特权的要求 winio需要管理员权限运行正常。这可以通过: 使用从服务以本地系统运行的WinIo(se_load_driver_name特权必须显式启用)。 在应用请求...
Codesign Electron macOS应用程序 关于 提供了最基本的工具和资产,从而最大程度地减少了最终准备交付应用所需的额外工作。 请注意,这里的基本必需品足以启用应用程序沙箱,但是其他用于网络访问的配置等需要额外...
signingConfigs { release { storeFile file("platform.keystore") } }
Google第三代TPU硬件架构及工作原理,软件编程模型,对理解TPU架构非常有帮助,非常不错的官方文档