我不能让signtool找到我的证书.pfx文件适用于签名,我通过直接指定pfx文件和密码来检查它.但由于其他人可以访问代码库,我真的不想在那里存储证书+密码.
这就是我在"受信任的根证书颁发机构"中在构建服务器(作为本地计算机,而不是每个用户)上安装pfx(来自symantec)的原因.这是因为Jenkins是使用本地系统帐户启动的.
这就是我现在正在尝试的:
signtool sign /v /sm /s Root /n <thename> /t http://timestamp.digicert.com <thefile>
Run Code Online (Sandbox Code Playgroud)
/ sm/s Root - 这应该告诉signtool切换到"本地机器"商店,对吗?和Root应该指定"受信任的根证书颁发机构"?
/ n - 这里我使用证书中的"颁发给"值,即公司名称.
我遇到了以下错误:
"SignTool Error: No certificates were found that met all the given criteria."
Run Code Online (Sandbox Code Playgroud)
今天我已经浏览了这么多链接,试图找出我做错了什么.我已经使用mmc检查了本地计算机上的证书,并且证书已在"受信任的根证书颁发机构"中重新启动.
升级到VS 2017后,我收到"错误签名时出错:找不到SignTool.exe." 但是只在Visual Studio上使用MSbuild发布没有问题.
我已经检查了文件夹"C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin",实际上没有SignTool.exe存在.但是在安装VS2017之前有任何想法吗?
我按照这个问题但没有运气 如何为Windows 10安装SignTool.exe
在接受今天下午的 Windows 小更新后,我发现我无法再对我的 Visual Studio 应用程序进行签名构建。
深入研究这个问题,我发现了位于一个模糊目录 (C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64) 中的 signtool.exe 程序。使用命令提示符,我尝试手动运行它来签署我的应用程序,但是当我这样做时,什么也没发生:没有输出,没有错误消息。我也尝试在不带参数的情况下运行它,期待帮助消息或至少是错误,但同样,什么也没有。
我今天去了另一台尚未收到任何 Windows 更新的计算机,找到相同的文件并运行它:它运行良好。
我想我一定是第一台电脑上的 .exe 文件损坏了,我从另一台电脑上复制了这个版本,但它仍然失败。但是,如果我重命名文件,它就会运行。例如,如果我将其重命名为“signtool1.exe”,则可以从命令行运行它就好了,尽管 Visual Studio 由于名称更改仍然无法运行它。
在此过程中,我确实尝试了几次重新启动计算机,认为可能有它的副本卡在内存中,但没有。我也在任务管理器中搜索过它。
我以前从未见过这样的事情。根据可执行文件的名称,相同的程序会运行或不执行任何操作。还有一个细节,如果我将它复制到我的主目录,它实际上不管文件名如何运行。什么会导致这样的事情?
谢谢,弗兰克
在我的应用程序中,我需要验证它是否已签名.如果签名继续执行并退出应用程序,如果没有.signtool将用于签署应用程序.有没有C#代码可以做到这一点?
作为构建系统的一部分,我们使用带证书的signtool.exe在构建二进制文件后对其进行签名.签名失败时偶尔(很难判断它什么时候会发生):
error MSB3073: The command "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\signtool.exe" [...] exited with code 1.
Run Code Online (Sandbox Code Playgroud)
根据MSDN,退出代码为1意味着签署文件时出错.我可以验证文件没有签名.
我还注意到,有时候,时间戳部分会因为不同的错误消息而超时,尽管文件仍然会被签名(没有时间戳).
如何解决和修复这些看似随机,不一致的签名失败?
当用户安装我的应用程序时,我想避免这些可怕的消息:

我知道我必须购买认证或类似的东西.你能告诉我在哪里可以买到它,以后我该怎么办?我想自动签署我的exe应用程序.此外,我使用InnoSetup,我想在创建新包时自动添加签名(EXE文件)
我正在尝试使用Visual Studio 2012 Express为我的appx文件签署Windows应用商店应用程序,但是收到以下错误:
SignTool Error: The specified algorithm cannot be used or is invalid
Run Code Online (Sandbox Code Playgroud)
我正在通过STORE-> Create App Packages菜单运行该过程,因此我无法直接访问SignTool的参数.
起初我以为是因为它使用了我们其他开发人员的自签名证书,所以我改为使用我们的真实证书,但仍然遇到同样的问题.
什么可能导致这个以及如何解决它?
编辑:怀疑问题是我们的普通证书不支持SHA-256,所以我在Visual Studio中创建了一个新的测试证书,但得到了相同的结果.
EDIT2:验证我的appx包中的哈希算法是SHA256,尝试使用以下命令手动运行SignTool:
SignTool sign /a /f My_TemporaryKey.pfx /fd SHA256 /v /debug MyAppPackage.appx
Run Code Online (Sandbox Code Playgroud)
同样的错误,控制台消息中没有有用的信息.
由于Windows更改了他们的安全策略,我们计划使用SHA-256算法而不是SHA-1开始代码签名驱动程序文件.但是,我们仍然希望能够支持仍需要SHA-1签名的旧操作系统.
使用Microsoft,signtool.exe我们可以使用/ fd标志使用SHA-1和SHA-256摘要算法成功编码签名文件.但是,如果可能,我们希望同时使用两种算法对文件进行签名.这甚至可能吗?我们希望避免使用不同算法签名的多组驱动程序,并根据操作系统确定要安装的设置 - 这将是我们的替代方法.
如果有人有完成此任务的经验,请解释您采取的方法.如果这是不可能的,那么可以理解为什么不可能的解释.
我需要使用company.pfx 中存储的证书对Application.exe 文件进行签名。所以,我使用了signtool:
signtool.exe sign /p password /f company.pfx /t http://timestamp.verisign.com/scripts/timestamp.dll /v Application.exe
The following certificate was selected:
Issued to: Company, Inc.
Issued by: Thawte Code Signing CA - G2
Expires: Wed Aug 27 02:59:59 2014
SHA1 hash: A2A0BD7C4516BF8C88AECC3A568CE9BB5D63902D
Done Adding Additional Store
Successfully signed and timestamped: App1_old.exe
Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
Run Code Online (Sandbox Code Playgroud)
Signtool 说没有错误。但在数字签名详细信息中,有一条消息“无法验证签名中的证书”。并且没有认证路径。
在“详细信息”中,有一个属性“扩展错误信息”,表示“吊销状态:吊销功能无法检查吊销,因为吊销服务器已离线”。
为了调查这个问题,我在应用程序上使用了 sigcheck(-a key),它显示“已验证:无法为受信任的根颁发机构构建证书链。”
然后我将 pfx 文件导入存储库,看起来证书没问题。
我在 stackoverflow 上搜索了有关我的主题的信息,找到了一些链接,它很有帮助。 …
我按照这个链接 签署了我的exe应用程序.
我在Windows 7上安装了SDK工具,
跑 C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin>makecert.exe -sv App-O.pvk -n "CN=MY DIGITAL KEY" App-O.cer
对话框打开以提供密码:

我写了密码:'fess'
新窗口打开:

我进来了:'fess'
#Succeeded
文件App-O.cer和App-O.pvk creaded.
现在我生成pfx:
pvk2pfx.exe -pvk App-O.pvk -spc App-O.cer -pfx App-O.pfx
Run Code Online (Sandbox Code Playgroud)
对话框打开以提供密码:
我粘贴'fess'
文件pfx已创建.
现在我运行signtool:
C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin>signtool.exe sign /f "App-O.pfx" /p fess "C:\Output\setup.exe"
Run Code Online (Sandbox Code Playgroud)
我在这里得到了错误:
SignTool Error: The specified PFX password is not correct.
Number of files successfully Signed: 0
Number of warnings: 0
Number of errors: 1
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
顺便说一句,我从Windows SDK的CMD shell得到的同样的错误.
谢谢,
signtool ×10
code-signing ×2
.net ×1
appx ×1
c# ×1
certificate ×1
inno-setup ×1
openssl ×1
pfx ×1
sha1 ×1
sha256 ×1
vb.net ×1
verification ×1