使用文件'key.pfx'中的公钥对输出进行签名时出错 - 值不在预期范围内

时间:2015-07-21 17:43:16

标签: c# visual-studio-2015

在尝试编译使用代码签名的c#项目时,我在VS2015中遇到以下错误。我在VS2013中没有收到此错误。

此处任何地方都没有关于此错误的信息。

5 个答案:

答案 0 :(得分:2)

我有这个问题。您可以打开CommonAssemblyInfo.cs并删除行[assembly: AssemblyKeyFile(@"C:\KeyFile.snk")]:)

答案 1 :(得分:1)

在构建项目时,我在 VS 2019 中或多或少遇到了相同的问题,但使用 .snk 文件,对于包含来自 datalust Superpower 的源代码的项目,我需要评估和调试: Error signing output with public key from file '../../asset/Superpower.snk' -- File not found

CommonAssemblyInfo.cs 不包含任何行 [assembly: AssemblyKeyFile(@"....snk")]

解决方案是在项目的属性中取消选择“签署程序集”VS project sign the assembly

答案 2 :(得分:0)

您可以尝试重新导出您的pfx并确保清除“包含所有证书”选项以排除可能导致某些问题的完整证书链。

如果它没有帮助使用AssemblyKeyName(“xxx”)而不是AssemblyKeyFile。首先应在构建服务器或开发计算机上执行命令 sn.exe -i key.pfx xxx ,以将密钥安装到CSP中。 (我猜你的错误信息只是由AssemblyKeyFile属性引起的。)

请注意,您无需使用您的可信证书(由某些证书颁发机构签名)进行汇编(或强名称)签名。强名命的程序集可以进行数字签名,以便以后进行身份验证/安全。

因此,如果使用强名称工具生成新密钥,也可以避免此问题:

sn -k keyPair.snk

并仅使用您当前的.pfx signtool。

答案 3 :(得分:0)

如何签署简化的程序集 (TLDR;)

如果您想为程序集保留代码签名,您可以这样做:

  1. 在 Visual Studio 菜单视图->终端
  2. 在终端中运行命令“sn -k sgKey.snk”。这会创建 sgKey.snk 作为您的密钥对。
  3. 然后在您的项目属性上,您可以导航到“签名”选项卡,然后选择“对程序集进行签名”,然后选择强密钥文件,然后选择您生成的密钥文件。
  4. 编译并运行。

参考文档:

正如 Microsoft 声明的那样:不要依赖强名称来确保安全。它们仅提供唯一标识。

答案 4 :(得分:-1)

要使用符号,请勿为密钥创建密码。