【问题标题】:Self-signing standalone applications自签名独立应用程序
【发布时间】:2015-11-17 03:38:34
【问题描述】:

我之前尝试查找有关此主题的任何信息的所有尝试都导致了源源不断的过时信息。我们有一堆独立的实用程序,我们在我工作的公司内部使用(只是一个可执行文件和任何必需的 dll)。这很好用,但是由于它们没有签名,因此每次打开这些实用程序时都会出现安全警告。

在理想情况下,我希望能够生成证书并使用该证书与 Visual Studio 签署二进制文件,而不必从 Verisign 或其他一些根 CA 购买证书。

我需要能够对应用程序进行签名,然后从 bin/Release 文件夹中复制可执行文件和必要的 dll/config 文件,以便登录到我们域的任何人都可以在没有安全警告的情况下运行它们。

.Net 2.0 的限制并非绝对必要,但所有这些实用应用程序都是针对 2.0 构建的,以便向后兼容 XP。

【问题讨论】:

  • 是安全变暖还是 UAC 警告,因为它需要管理员权限?它是某种域策略吗?您是从网络位置运行代码还是在每台电脑上本地运行代码?
  • 自签名没有帮助。由于您在公司内部,因此请使用您的内部 CA 为自己授予证书。
  • @RonBeyer 所有应用程序都不需要管理员权限。
  • @LexLi 如果你能提供一个包含更多信息的链接,那就太好了。
  • @DavidFreitag 这在很大程度上取决于您的公司环境,所以我无法发表更多评论。如果您的公司使用 AD,您可能会检查诸如 Active Directory 证书服务之类的东西。

标签: c# visual-studio-2012 .net-2.0


【解决方案1】:

要让 Windows 接受您的签名代码,Windows 需要能够验证所述代码的完整性。因此,代码需要由受信任的权威机构签署,这让我们有 5 个步骤:

  1. 生成受信任的根 CA。 “受信任”在这里可能仅指您的公司。
  2. 将此受信任的根 CA 部署到该软件的所有用户。
  3. 为代码签名创建证书模板。
  4. 向所有开发人员分发代码签名证书。
  5. 使签名过程自动化。

现在让我们完成所有这些步骤:

  1. 这一步“真的取决于”。您可以使用 OpenSSL 生成根 CA。您可以使用XCAEJBCA 等专用工具。或者您可以使用Windows Enterprise CA feature
  2. 使用 Windows Active Directory 极大地促进了这一点,因为您可以设置一个新的组策略,将新证书分发给所有用户并将其标记为受信任。另请参阅 TechNetServerFault
  3. 这是一个可选步骤,但您可以(并且应该?)使用您最喜欢的 CA 管理工具创建一个模板,这样颁发新的代码签名证书的过程会更短。您的工具可能会强制您执行此操作或跳过它。 Here's how it's done in Windows Server.
  4. 在此步骤中,您可以使用 the Windows tool to automatically create and distribute certificates 或每个开发人员创建一个 CSR 并将其发送给您,以便您可以颁发证书(使用您最喜欢的 CA 管理工具),供他们以后使用。
  5. Visual Studio 可以设置为自动使用 Windows 知道您拥有的密钥。 Comodo conveniently has already collected the steps to do this.

【讨论】:

    猜你喜欢
    • 2012-12-28
    • 1970-01-01
    • 2012-02-29
    • 2012-11-03
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多