Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自签名独立应用程序_C#_Visual Studio 2012_.net 2.0 - Fatal编程技术网

C# 自签名独立应用程序

C# 自签名独立应用程序,c#,visual-studio-2012,.net-2.0,C#,Visual Studio 2012,.net 2.0,我以前试图找到关于这个主题的任何信息都导致了没完没了的过时信息流。我们有一系列独立的实用程序,在我工作的公司内部使用(只是一个可执行文件和任何必需的dll)。但是,由于它们没有签名,因此每次打开这些实用程序时都会出现安全警告 在理想的情况下,我希望能够生成一个证书,并使用它与VisualStudio对二进制文件进行签名,而不必从Verisign或其他根CA购买证书 我需要能够对应用程序进行签名,然后从bin/Release文件夹复制可执行文件和必要的dll/config文件,以便登录到我们域的任

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

在理想的情况下,我希望能够生成一个证书,并使用它与VisualStudio对二进制文件进行签名,而不必从Verisign或其他根CA购买证书

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


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

要让Windows接受您的签名代码,Windows需要能够验证所述代码的完整性。因此,代码需要由受信任的机构签署,这将我们置于一个5步流程中:

  • 生成受信任的根CA。此处“受信任”只能指您的公司
  • 将此受信任的根CA部署到软件的所有用户
  • 创建用于代码签名的证书模板
  • 将代码签名证书分发给所有开发人员
  • 使签名过程自动化
  • 现在,让我们完成所有这些步骤:

  • 这一步“真的取决于”。您可以使用OpenSSL生成根CA。您可以使用诸如或之类的专用工具。或者你也可以用这个
  • 使用Windows Active Directory可以极大地简化这一过程,因为您只需设置一个新的组策略即可将新证书分发给所有用户并将其标记为可信。另请参见和
  • 这是一个可选的步骤,但是您可以(并且应该?)使用您最喜欢的CA管理工具创建一个模板,这样颁发新的代码签名证书的过程就更短了。工具可能会强制您执行此操作或跳过此操作
  • 在这一步中,您可以使用或每个开发人员创建一个证书并将其发送给您,这样您就可以(使用您最喜欢的CA管理工具)颁发证书,他们以后可以使用该证书
  • Visual Studio可以设置为自动使用Windows知道您拥有的密钥
    这是安全警告还是UAC警告,因为它需要管理员权限?这是某种域策略吗?您是从网络位置运行代码还是在每台电脑上本地运行代码?自签名没有帮助。由于您是公司内部人员,因此请使用您的内部CA授予您自己相关证书。@RonBeyer所有应用程序都不需要管理员权限。@LexLi如果您能提供一个包含更多信息的链接,那将是非常棒的。@DavidFreitag这在很大程度上取决于您的公司环境,因此我无法发表更多评论。如果您的公司使用AD,您可能会查看诸如Active Directory证书服务之类的内容。