Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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
签署.NET程序集的最佳实践?_.net_Assemblies_Signing - Fatal编程技术网

签署.NET程序集的最佳实践?

签署.NET程序集的最佳实践?,.net,assemblies,signing,.net,Assemblies,Signing,我有一个由五个项目组成的解决方案,每个项目编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么 用不同的钥匙分别签名;确保密码不同 用不同的钥匙分别签名;如果需要,请使用相同的密码 用相同的密钥签名 完全是另一回事 基本上,我不太确定“签名”对他们有什么影响,或者这里有什么最佳实践,所以进行更广泛的讨论会更好。我真正知道的是,它对我大喊大叫,通过单击“签名此程序集”复选框并使用Visual Studio(2008)生成一个.pfx文件很容易修复。如果您的

我有一个由五个项目组成的解决方案,每个项目编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么

  • 用不同的钥匙分别签名;确保密码不同
  • 用不同的钥匙分别签名;如果需要,请使用相同的密码
  • 用相同的密钥签名
  • 完全是另一回事

基本上,我不太确定“签名”对他们有什么影响,或者这里有什么最佳实践,所以进行更广泛的讨论会更好。我真正知道的是,它对我大喊大叫,通过单击“签名此程序集”复选框并使用Visual Studio(2008)生成一个.pfx文件很容易修复。如果您的唯一目标是阻止FxCop对您大喊大叫,那么您已经找到了最佳做法

签署程序集的最佳实践完全取决于您的目标和需求。我们需要更多信息,如您的预期部署:

  • 自用
  • 在公司网络PC上用作客户端应用程序
  • 在web服务器上运行
  • 在SQL Server中运行
  • 网上下载
  • 以收缩包装的CD形式出售
  • 直接上传到控制论大脑
  • 等等
通常,您使用代码签名来验证程序集是否来自特定的受信任源且未被修改所以每个人都有相同的密钥就可以了。现在,如何确定信任和身份是另一回事了

更新:如果您已经获得了一个。然后,当他们下载您的程序集时,他们可以验证这些程序集是否来自Domenic的软件商场,并且在下载过程中没有被修改或损坏。您还需要在下载安装程序时对其进行签名。这可以防止出现警告,即某些浏览器显示它是从未知来源获得的


注意,您将支付软件签名证书的费用。您得到的是证书颁发机构成为可信任的第三方,验证您是您所说的人。这是因为信任网可以追溯到安装在操作系统中的根证书。有几个证书颁发机构可供选择,但您需要确保目标操作系统上的根证书支持它们。

签名用于唯一标识程序集。更多细节见附件


就最佳实践而言,只要程序集具有不同的名称,就可以使用相同的键。

这会有所帮助,因为可执行文件需要一个具有强名称的程序集。它阻止了任何人恶意地用另一个集会代替你的集会。用户还可以基于强名称授予程序集CAS权限


我认为您不应该分发.pfx文件,您可以安全地重新指定程序集。

已签名程序集和未签名程序集之间最明显的区别在于ClickOnce应用程序。如果你不签名,那么用户在第一次运行你的应用程序时会看到一个可怕的“未知发布者”警告对话框。如果您使用来自受信任机构的证书签名,那么他们会看到一个不那么可怕的对话框。据我所知,使用您自己生成的证书签名不会影响“未知发布者”警告。有对话框的例子


有一些微妙的区别。您必须先对程序集进行签名,然后才能将其安装到全局程序集缓存(GAC)中,在该缓存中,程序集可以由多个应用程序共享。签名是代码访问安全性(CAS)不可或缺的一部分,但我还没有找到任何人能够让CAS正常工作。我敢肯定,GAC和CAS都能很好地处理您自己生成的证书。

重要的是要对您的PFX文件保密,因为它包含私钥。

如果该密钥对其他人可用,则任何人都可以签名伪装为您的程序集或程序

要将您的姓名与程序集(在Windows中)关联,您需要获得一个由可信机构签名的数字证书(PFX文件中包含您姓名的部分)

实际上,您将获得一个新证书,但具有相同的信息


您必须支付此证书的费用(可能每年支付一次),但该证书将有效地证明您的存在(在您将护照或驾驶证副本和国内账单传真给他们之后)。

签名并不是唯一标识集会的标志。使用私钥签名可唯一标识程序集的源。需要程序集名称、版本和公钥的组合来唯一标识GAC中的程序集。