标签: signtool

通过 MSI 安装后,可执行文件未签名

我们有一个应用程序,需要用户是管理员才能运行。所以,在app.manifest我们已经设置

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

我们有一个密钥来签署我们的程序集,我已经能够使用它来签署 MSI 和我们应用程序的可执行文件。应用程序的可执行文件是通过signtool.exe项目的构建后事件进行签名的。

如果我查看 bin 目录,可执行文件确实已正确签名,但将其打包到msi另一台计算机上并安装后,可执行文件不再签名。

这通常不会是一个大问题,除非我们需要管理员权限,因此当用户收到 UAC 提示时,它会显示未知的发布者。

打包成 MSI 后如何才能对可执行文件进行签名?

.net c# windows-installer signtool

3
推荐指数
1
解决办法
635
查看次数

C#:如何检测authenticode签名文件的篡改

我正在尝试编写一个C#程序来验证exe的数字签名.exe是用authenticode证书签名的,我想检测篡改.

我已经能够创建一个SignedCms实例,如下所述:从.NET中的Authenticode签名文件中获取时间戳

我假设SignedCms.CheckSignature可以做到这一点,但是这个方法永远不会引发异常......即使不是当我修改exe的某些部分时......

.net c# authenticode signtool

3
推荐指数
1
解决办法
3909
查看次数

使用 osslsigncode 进行代码签名 - 发行商未知

在尝试自动编译和签署特定的基于 NSIS 的二进制文件时,我遇到了一些奇怪的行为。即,makensis运行 来wine编译可执行文件,然后osslsigncode使用 来对二进制文件进行签名。

可执行文件似乎构建得很好,因为它可以在 Windows 系统上运行,但是签名存在问题(缺乏更好的词)。由于代码签名证书采用 PKCS#12 格式,因此使用的命令如下所示

osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \ -n "Your Application" -i http://www.yourwebsite.com/ \ -in yourapp.exe -out yourapp-signed.exe

我从 osslsigncode 收到“成功”消息,就好像签名顺利一样,但是当二进制文件在 Windows 上运行时(本例中为 Win 7),UAC 表示:

出版商:未知

奇怪的是,当我打开从原始.p12文件中提取的证书并查看其信息时,Windows 随后能够识别发布者和数字签名,就好像它以某种方式意识到了证书路径......?

任何意见,将不胜感激。

使用的编辑1
osslsigncode版本:1.5.2和1.7.1

编辑2
为了进行比较,我尝试使用 进行签名SignTool,显然它的工作没有任何问题。所以这看起来像证书+osslsigncode问题,但我不知道它到底是什么。

我还尝试osslsigncode使用另一个证书使用完全相同的 EXE,并且让事情变得更有趣,它起作用了......(我注意到这两个证书的认证路径不同)。

一些证书详细信息:

1)非工作证书
版本:V3
公钥:RSA 2048 位
签名哈希算法:sha1
签名算法:sha1RSA
认证路径:USERTrust -> Comodo Code Signing CA 2 -> …

openssl nsis code-signing signtool

3
推荐指数
1
解决办法
2669
查看次数

使用 Install4J 使用 EV-Certificate 签署可执行文件

我们公司从GlobalSign订购了 EV 证书。

之前我们有一个可以在 Install4J 中使用的 p12 文件形式的普通代码签名证书。

现在,有了新证书,我们就没有证书文件了,只有一个 USB 令牌。

是否有内置方法可以使用 USB 令牌来签署可执行文件/jar?或者我是否需要使用媒体向导的“可执行处理”步骤,如此处提到

也许有一种方法可以从一台机器(如 macos)上签署所有安装程序(win、mac、linux)?

java code-signing signtool install4j

3
推荐指数
1
解决办法
1090
查看次数

有没有办法使用过期的证书签署二进制文件?

我正在使用signtool 来签署我的exe 和dll 文件。出于测试目的,我想找到使用过期证书的方法。是否可以?如果无法使用signtool,我也可以使用其他工具。顺便提一句。我不想更改系统日期,因为稍后我想尝试添加时间戳。

这是与signTool一起使用的命令和参数来签署我的文件:

signTool sign /f expiredCert.pfx /p "pass" /v test.dll
Run Code Online (Sandbox Code Playgroud)

结果我得到:

SignTool Error: No certificates were found that met all the given criteria.
Run Code Online (Sandbox Code Playgroud)

certificate digital-signature signtool

3
推荐指数
1
解决办法
2310
查看次数

如何使用osslsigncode执行代码签名

您能帮我弄清楚如何使用证书对软件进行签名吗?您知道signtool只能在Windows机器上工作,但是我需要在linux服务器上对文件进行签名。现在,系统像这样工作,文件建立在linux服务器上,然后移动到win服务器进行签名,然后再次返回linux。

我尝试使用google,并发现了使用osslsigncode程序签名的新方法。

我现在的问题是如何将证书从MS转换为osslsigncode格式。所以现在我要做的步骤是永久拥有两个文件:cert.crt和key.blob首先,我需要将它们转换为.pfx格式:

openssl rsa -inform MS/PRIVATEKEYBLOB -in key.blob -outform PEM -out key.pem
openssl rsa -in key.pem -outform PVK -pvk-strong -out key.pvk
pvk2pfx -pvk key.pvk -pi 1234 -spc cert.crt -pfx cert.pfx
Run Code Online (Sandbox Code Playgroud)

然后我可以用命令签名我的软件

signtool.exe sign /v /f cert.pfx /p 1234 soft.exe
Run Code Online (Sandbox Code Playgroud)

您能告诉我使用osslsigncode程序需要执行哪些转换步骤吗?

openssl code-signing signtool

2
推荐指数
1
解决办法
3090
查看次数

如何在Post Build Event中签署ClickOnce应用程序?

我有通过ClickOnce部署的WinForms应用程序.我有使用SignTool签署程序集的Post Build Event.我将应用程序发布为ClickOnce安装程序,我在VS输出中看到文件已签名,但在安装后没有签名的程序集.我如何签署将包含在ClickOnce包中的程序集?

c# clickonce signing signtool

1
推荐指数
1
解决办法
1380
查看次数

Windows 10 SDK中的signtool.exe位于何处?

我正在寻找最新版本的签名工具.已安装最新的Windows 10 SDK,但signtool.exe日期没有改变.

signtool

1
推荐指数
2
解决办法
4515
查看次数

使用自签名证书对Windows应用程序签名是否没有用?

我已经对NWjs Windows应用程序(Chromium应用程序)进行了编码,并使用Inno Setup,并使用自签名证书对其进行了签名。但是,尝试从Web上安装它时,出现“ Windows保护您的PC”消息。我现在想知道使用此自签名证书对应用程序进行签名是否没有用,因为当我不对应用程序进行签名并按原样打包时,会得到相同的结果。

当我单击“更多信息”时,当我使用自签名证书和不使用自签名证书对应用程序进行签名时,都表示发布者是未知的。

我想知道,有时在应用程序分发到Internet上之后,证书的数据(例如主题的CN)是否有助于获得一定的声誉。我想知道自签名证书是否有时会有助于摆脱“ Windows保护您的PC”消息。

在此处输入图片说明

windows inno-setup code-signing self-signed signtool

0
推荐指数
1
解决办法
192
查看次数

如何使用多个时间戳对符号进行编码-我的邮票被覆盖

问题

虽然我在Windows可执行文件上的详细SignTool(手动)命令上没有出现任何错误,但时间戳被覆盖了,我希望有多个时间戳,这可能吗?

  • 如果可能,那怎么办?
  • 如果没有可能,我只使用1个单时间戳,那么你会从长远来看,推荐哪个服务器?(DigiCert现在浮现在我的脑海。)

这是我尝试过的

PowerShell功能

function sign32exe([string]$arg)
{
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' sign /fd sha256 /a $arg
    Start-Sleep -Seconds 5
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://timestamp.globalsign.com/?signature=sha2 /td sha256 /v $arg
    Start-Sleep -Seconds 5
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v $arg
    Start-Sleep -Seconds 5
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://time.certum.pl /td sha256 /v $arg
}
Run Code Online (Sandbox Code Playgroud)

PowerShell输出

我从SignTool得到了肯定的输出,但是每次调用都会覆盖时间戳(为了更好的可读性而对其进行了重组):

签名过程进行顺利:

Done Adding …
Run Code Online (Sandbox Code Playgroud)

timestamp code-signing signtool

-1
推荐指数
1
解决办法
275
查看次数