首页 > 解决方案 > 使用 .Net 延迟签名和 Digicert 证书

问题描述

我们有一个来自 digicert 的 pfx 签名密钥,我们将其用作延迟签名,但是当我们将其安装在计算机上时,它不会运行,除非我们为该延迟签名密钥添加排除项 (sn.exe -Vr *,)。这应该是可能的,对吧?还是我错过了什么?我创建了一个延迟签名密钥:

sn -p d:\DigCert.pfx DelayedSigning.snk

然后我们在 C# .net 程序集中使用 DelayedSigning.snk 作为延迟签名: 在此处输入图像描述

然后在编译和混淆之后,我们使用signtool用全密钥签名:

signtool.exe sign /f d:\DigCert.pfx /p ourPW /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a outputPath\*.dll

然后就像我说的,如果我们尝试在干净的 Windows 10 操作系统上运行,除非我们添加延迟签名排除 (sn.exe -Vr *,),否则它将无法工作。有任何想法吗?

注意:当我在其中一个程序集上运行 sn -V 时,它显示“XXXXX.dll 是延迟签名或测试签名程序集” - 怎么会?

标签: .netsigningassembly-signingdigicert

解决方案


感谢您的回复,是的,我终于意识到强名称签名和代码签名是两个不同的东西。解决方案是为强签名创建单独的签名代码:https ://docs.microsoft.com/en-us/dotnet/standard/assembly/create-use-strong-named ,然后创建延迟签名密钥:https:// /docs.microsoft.com/en-us/dotnet/standard/assembly/delay-sign并在延迟签名的项目中使用它。在发货之前会使用 sn.exe 使用私有强名称签名密钥(最后一个链接中的信息)对其进行签名。然后在它的强名称签名后,使用 signtool.exe 使用数字证书签名。 https://www.digicert.com/kb/code-signing/signcode-signtool-command-line.htm


推荐阅读