【问题标题】:How to apply digital signature to Visual Studio projects?如何将数字签名应用于 Visual Studio 项目?
【发布时间】:2015-08-17 19:44:47
【问题描述】:

可执行文件和 DLL 可以进行数字签名。它向用户暗示信任

但是,我对这个主题的研究进展缓慢。我想我需要一个完整的分步白痴指南,说明如何直接在编译时对二进制文件进行数字签名。我的意思是:单击“构建”并检索已签名的可执行文件。我真的不想自己手动签署所有内容。

Visual Studio 在项目属性中有一个“签名”选项卡,所以我想我必须看看那里。看来我需要一个 .pfx 文件。但是我究竟从哪里得到一个包含我的名字的,我该如何正确使用它呢?

另外,这需要花钱吗? - 每个二进制/只有一次/根本不需要?

签名二进制示例:

【问题讨论】:

  • 您需要从证书颁发机构购买“代码签名证书”。它们的范围从大约 50 美元到 500 美元不等,如果您希望能够通过 Microsoft 获得故障转储,则还有其他要求。价格是只要证书有效,您可能需要随着时间的推移续订。另见:stackoverflow.com/questions/1077800/…
  • 检索故障转储听起来不错,但花 500 美元购买一年有效的证书对于非营利性开发人员来说简直令人作呕。是否可以在没有反签名(或其他名称)的情况下签署二进制文件?
  • 仅使用显示为不受信任的证书。或者使用其他人的证书。
  • 好吧,这对我来说不是一个选择。我仍然会在这里留下这个答案。也许它会在某个时候帮助某人。

标签: visual-studio binary certificate signing


【解决方案1】:

我总是手动签署我的 dll 和应用程序。要使您的签名即使在代码签名证书过期后仍然有效,您需要在签名中添加时间戳。

要签署 dll/exe,您需要购买协同签名证书,但有 CA(即,如果您是开源开发人员)可以免费获得它。其中之一是 Cetrum CA(我目前正在使用)。看看here。获得它的过程是一种折磨,但证书本身是可以的。 (它不适用于所有浏览器 - 使用 FF,需要在每个页面上进行单点登录,并且邮件使用波兰语。)

可以免费获取时间戳(即从Hanselmans blog 中的链接,或者您可以找到符合 RFC 3161 的免费时间戳权威列表here

【讨论】:

  • 我可以用一个证书签署我所有的二进制文件吗?
  • 是的,当然。我正在使用signtool.exe,其中要签名的是最后一个参数。我用*.dll *.exe
  • 请注意,如果一年后您想签署新的申请,您仍然需要有效的证书。时间戳仅保护已签名的应用程序,但您不能使用过期证书签署应用程序。
  • @jessehouwing 没错,您需要在前一个代码过期后再次获得另一个代码签名才能再次签署任何二进制文件。可能是一两年。但是,如果您没有在签名中添加时间戳并且您没有发布任何新版本的应用程序,那么旧版本将在协同签名证书到期后停止工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多