自签名独立应用程序

时间:2015-11-17 03:38:35

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

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

在理想的世界中,我希望能够生成证书并使用它来使用visual studio签署二进制文件,而不必从Verisign或其他根CA购买证书。

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 生成受信任的根CA. "可信"可能只在这里提及贵公司。
  2. 将此受信任的根CA部署到该软件的所有用户。
  3. 为代码签名创建证书模板。
  4. 将代码签名证书分发给所有开发人员。
  5. 自动化签名过程。
  6. 现在让我们完成所有这些步骤:

    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管理工具),以便以后使用。< / LI>
    5. 可以将Visual Studio设置为自动使用Windows知道您拥有的密钥。 Comodo conveniently has already collected the steps to do this.