.net - 使用 .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 是延迟签名或测试签名程序集” - 怎么会?
解决方案
感谢您的回复,是的,我终于意识到强名称签名和代码签名是两个不同的东西。解决方案是为强签名创建单独的签名代码: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
推荐阅读
- php - PHP Mysql - 如何控制每个数字后的空格
- sql-server - 如果第一个条件为 FALSE,那么在 SQL Server 中检查第二个条件?
- spring-boot - 在 liquibase 的多个变更日志中导入属性
- c++ - 在 C++ 中读取 MATLAB 格式数据文件的正确方法是什么
- selenium - 通过 Selenium Webdriver (Java) 操作 Chrome 浏览器选项卡(打开、关闭、切换)
- python - 在少于 O(m * n) 时间内反转二维数组中的每一行
- elixir - 安装 elixir - 我只是遇到崩溃
- android - 是否可以在后台实现不间断的 API 端点 ping?
- localhost - Webpack Dev Server — 将 websocket URL 从 IP 地址更改为“localhost”
- python - 如何根据其覆盖范围使 github 操作失败/通过?