【问题标题】:What is causing to show Publisher to unknown on UAC despite signing exe using signtool尽管使用 signtool 签署了 exe,但导致在 UAC 上显示 Publisher 未知的原因是什么
【发布时间】:2021-12-30 05:45:22
【问题描述】:

在 WPF 安装程序项目构建中生成 setup.exe,并在 PostBuldEvent 上使用 Signtool 对其进行签名。它确实在 setup.exe 的最后一步在 UAC 弹出窗口中将 Publisher 显示为未知。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • “未知”表示发布者不受信任。您是否将用于签署应用程序的证书添加到客户端计算机上的 Trusted Publishers?
  • 不,我没有在客户的机器上安装证书。

标签: wpf windows-installer


【解决方案1】:

MSI 与 Setup.exe:您应该签署 MSI 文件以及 Setup.exe 文件。


证书类型:您使用的是哪种证书?我相信您需要来自recognized issuing authority (DigiCert, Thawte, etc...) 的数字代码签名证书。

Signtool.exe:如果你有一个有效的证书,你是否在signtool的命令行中使用了/d选项。签署您的 MSI 时的 exe?:

signtool.exe /d "Your Software Name"

How to add publisher in Installshield 2018

信任但验证:签署文件后,右键单击它并选择“属性”以确保文件实际上已成功签名。查找标签“数字签名”(或您自己语言的等效标签):

Administrative Installation:有时人们会忘记他们已经通过管理安装运行了 MSI。这本质上是从 MSI 中提取的文件,从而在输出位置 (more) 中生成一个没有嵌入式 CAB 的新 MSI。 不会对提取的 MSI 进行签名 - 即使原始 MSI 已签名。许多公司都使用这个提取的源来保持网络共享上的安装文件可用于修复和检查(以及在应用程序打包期间检查包内容和其他目的)。

后处理 MSI:这实际上是一个非常常见的问题:您绝不能触碰经过数字签名的文件。如果您在应用签名后对其进行编辑,则会使签名无效。数字签名的全部意义在于验证您查看的文件是由供应商签名的文件。换句话说,文件在传输给您的过程中没有被更改(篡改、恶意软件感染等)。 More on this important issue here(尝试幽默)。 Note that the tampering might happen via automation scripts and not by manual editing, hence one must always check for this cause.

其他问题:还有一些其他的可能性。签名文件可能是 corrupted during download 或来自 malware attack 等。远远超出了这个问题,但只是提到了可能会发现这个的人。


链接:

更多链接:

【讨论】:

  • 感谢您的详细解释。我正在使用来自 GoDaddy 的有效代码签名证书,我可以在属性下看到 .msi 和 .exe 的数字签名详细信息。使用命令签名 - signtool sign /td SHA512 /tr timestamp.digicert.com /f ApplicationSigning.pfx /p PfxPassword Setup.msi Done 添加其他存储已成功签名:Setup.msi
  • 这是否意味着您的设置现在可以正常工作?我不是 100% 清楚。
  • 实际上没有,仍将“未知”视为发布者。创建 ClickOnce 设置时,我看到了正确的发布者名称。
  • 您是否尝试过Signtool.exe 命令的/d "Software Name" 选项,如答案所示?
  • 我可以使用 /d。我可以弄清楚它从哪里得到未知数。我有一个 x64 兼容的 msi 文件并使用以下命令进行签名 - -- "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\signtool.exe" sign /tr "timestamp.digicert.com " /td SHA256 /f "$(ProjectDir)Cert.pfx" /p KeyCode "Project.msi" 。当我检查属性-> 数字签名-> 详细信息-> 时,我看到,数字签名无效。在这里,当我单击“查看证书”时,我收到“对象的数字签名未验证”消息。任何想法,可能是什么原因造成的?
猜你喜欢
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 2012-07-05
  • 2019-01-05
  • 2019-11-04
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多