我公司从赛门铁克购买了EV证书,用于我们生产的软件产品.具体来说,它被称为:Symantec Class 3扩展验证代码签名CA-G2.
要开发和构建此产品,我们使用Visual Studio 2013,并使用ClickOnce作为发布和安装程序机制.我们遇到的问题是ClickOnce无法使用它的内置签名机制来应用EV证书.ClickOnce可以很好地查看证书,并允许我们使用"从商店中选择..."按钮进行选择.它在"证书"窗口中显示所有正确的信息.但是当我们发布时遇到以下错误:
" 签名时出错:无法签署bin\Release\app.publish\setup.exe.SignTool错误:发生了意外的内部错误."
请注意,我们可以使用SignTool.exe从命令行应用EV证书,因此问题不在于该程序.
有没有人有过EV证书和ClickOnce组合的经验?是否有我们应该购买的不同的EV证书,使用ClickOnce更好?
因此,我正在使用Windows SDK 8.1中的signtool对二进制文件进行签名:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /a /i Symantec /ac C:\utils\MSCV-VSClass3.cer /ph /t "http://timestamp.verisign.com/scripts/timstamp.dll" "foo.exe"
Done Adding Additional Store
Successfully signed: foo.exe
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /a /i Symantec /ac C:\utils\MSCV-VSClass3.cer /ph /fd sha256 /tr "http://timestamp.geotrust.com/tsa" /td sha256 /as "foo.exe"
Done Adding Additional Store
Successfully signed: foo.exe
Run Code Online (Sandbox Code Playgroud)
当我在文件属性中查看它时,可以看到正确的结果。
但是,当我使用它时verify,signtool我会根据传递的参数获得:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" verify /all "foo.exe"
File: foo.exe
Index Algorithm Timestamp
========================================
SignTool Error: A certificate chain processed, but terminated in a root …Run Code Online (Sandbox Code Playgroud) 有关尝试使用SHA1/SHA256进行双重签名时遇到的故障的问题.
我现在已经过了几年SHA256代码签名证书,但在新的一年(2016)之前,我开始使用/ FD SHA256的哈希算法是符合SHA1微软弃用.
这工作正常,但当然签名哈希不会在旧操作系统上验证.我不关心XP,但我仍然关心Vista.
我首先使用以下代码签署SHA1:
signtool sign /fd SHA1 /f "cert.pfx" /p "password" /t http://timestamp.verisign.com/scripts/timsetamp.dll "file"
Run Code Online (Sandbox Code Playgroud)
然后我尝试我的双重签名:
signtool sign /as /fd SHA256 /f "cert.pfx" /p "password" /tr http://timestamp.globalsign.com/?signature=sha2 "file"
Run Code Online (Sandbox Code Playgroud)
而signtool给了我这个:
Done Adding Additional Store
SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024846/0x80070032)
现在我可以使用单个算法(SHA1或SHA256)成功签名文件,但我无法添加第二个签名.我唯一的猜测是,因为我使用的是两种算法的SAME证书,所以不喜欢这样.我是否需要为每种算法使用不同的物理证书?
只是想知道,因为在新的一年之前,我使用SHA1算法多年来一直使用SHA256证书,并且它在所有操作系统上都经过验证.
在我们的构建服务器上使用signtool进行代码签名时,jenkins显示以下错误消息:
Done Adding Additional Store
Error information: "Error: SignerSign() failed." (-2147023673/0x800704c7)
SignTool Error: An unexpected internal error has occurred.
Run Code Online (Sandbox Code Playgroud)
我们在USB令牌上使用EV代码签名证书。所有工具都是实际可用的最新工具。
有任何想法吗?
使用相同的构建任务并在运行jenkins的同一台计算机(如下所述的用户)上手动运行它,以及在相同的环境/目录下根本不是问题。
Jenkins服务以具有管理员权限的简单用户身份(而不是本地系统)在Windows 10 pro VM上运行。
有关更多详细信息,请参阅Jenkins日志的以下摘录:
Signiere FlinkySchule.FormularEditor.exe:
Verbindung zu Token auf- bzw. abbauen
***** code signing *****
Aktueller Pfad des signtool:
c:\JW\FS\Production\Deployment\Tools\signtool\kits
Zu signierende Datei:
c:\JW\FS\Production\Application\Assemblies\FlinkySchule.FormularEditor\bin\Release\\FlinkySchule.FormularEditor.exe
The following certificate was selected:
Issued to: Dirk W.
Issued by: GlobalSign CodeSigning CA - SHA256 - G3
Expires: Fri Apr 03 15:58:51 2020
SHA1 hash: 4187Cxyxyxyxyxyxyxyxyxyxyx7978C4
Done Adding Additional Store
EXEC …Run Code Online (Sandbox Code Playgroud) 我们将使用 AWS CloudHSM 服务来确保所有代码签名证书的安全并在我们的构建服务器上执行代码签名。我们的构建服务器是 Windows Server 2010,所以我在那里安装了 AWS CloudHSM 客户端。我激活了集群,所有命令行工具都按预期工作:我可以登录、添加密钥、查找密钥等。我们想继续使用 signtool 来签署我们的二进制文件,所以我认为我们可以使用密钥存储提供程序 (KSP)对于 AWS CloudHSM,与其他工具一起安装。
Cavium KSP 和 CNG 提供程序已成功安装,并且在 Windows 加密提供程序的列表中可见。我在这里定义了环境变量(https://docs.aws.amazon.com/cloudhsm/latest/userguide/ksp-library-prereq.html)。
我通过 certutil 添加了证书到 HSM 存储:
Certutil -CSP "Cavium Key Storage Provider" -user -importPFX "certificate.pfx"
SDK Version: 2.03
Enter PFX password:
Certificate "myCertificate" added to store.
CertUtil: -importPFX command completed successfully.
Run Code Online (Sandbox Code Playgroud)
证书已成功添加,当我从 key_mgmt_util.exe 控制台执行 findKey 命令时出现。
之后,我尝试使用证书对二进制文件进行签名,如https://docs.microsoft.com/en-us/windows-hardware/test/hlk/user/hlk-signing-with-an-hsm 中所述:
signtool_64 sign /n myCertificate "test.exe"
Run Code Online (Sandbox Code Playgroud)
或者
signtool sign /sha1 4F555EF9FAB8E86A2F84ACF325362A29FB64AF66 "test.exe"
Run Code Online (Sandbox Code Playgroud)
但我遇到了一个无法解决的错误
SDK Version: 2.03
Done Adding …Run Code Online (Sandbox Code Playgroud) 我尝试使用存储在金雅拓HSM中的EV证书签署WPF ClickOnce应用程序。我已经配置了持续部署(CD),并且我希望在没有用户交互的情况下自动签名,就像以前的PFX文件一样。
通过文章“ 自动扩展验证(EV)代码签名”和Austin Morton的回答,我使它可以通过signtool.exe进行签名而无需输入密码。但是我的问题是:
如何在mage.exe的帮助下签署清单?是否也可以像使用signtool一样传输令牌密码?还是有其他可能进行这项工作?
我们正在努力使用signtool.exe 摘要选项来优化数字签名过程。到目前为止,工作流程如下所示:
有没有办法在签名服务器上执行时间戳?
我的问题与此有关。las,这个问题是关于不同的CA(Symantec),并且使用了不同的硬件令牌(来自Safenet),并且尽管此处提供的解决方案与错误代码匹配,但我的情况与(智能卡不一样)提供给我的似乎没有在HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Providers)下注册其自己的提供程序。
我正在使用来自certum.pl的开放源代码签名证书。我正在使用signtool.exeWindows SDK中的10.0.18362.0,看到以下错误(带有signtool sign /v /debug):
signtool.exe sign /v /debug /a /i Certum /ph /du "https://my.url" /d "short description" /fd sha256 /tr "http://timestamp.digicert.com" /td sha256 "mysoftware.exe"
The following certificates were considered:
Issued to: Open Source Developer, ...
Issued by: Certum Code Signing CA SHA2
Expires: ...
SHA1 hash: ...
Issued to: Open Source Developer, ...
Issued by: Certum Code Signing CA SHA2
Expires: ...
SHA1 hash: ...
After EKU filter, …Run Code Online (Sandbox Code Playgroud) 尝试使用Visual Studio 生成任务对从 Azure Devops 编译和发布的应用程序进行签名时,我收到以下错误消息:
An error occurred while signing: SignTool.exe was not found at path
e:\<my app name>\(...)\signtool.exe. [e:\<my-project>\24\s\(...)\MyProjecName.csproj]
Run Code Online (Sandbox Code Playgroud)
我检查了一下,发现SignTool.exe在以下位置找到了......
C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool
Run Code Online (Sandbox Code Playgroud)
...但我不知道如何告诉 VS Build 任务在那里寻找它。
我有什么方法可以告知构建任务正确的路径,或者有什么方法可以覆盖它?如果没有,我可能会考虑在每次运行时将 SignTool 复制到当前目录中,但这感觉像是一个肮脏的黑客行为。
我有一个从第三方 CA 购买的数字证书,我想用它来签署包含大量库文件/包 (.bpl) 的软件。但是,一一签署需要花费很多时间,我想知道有什么方法可以让我用更短的时间签署所有文件?
我当前用来签署文件的命令如下:
signtool.exe sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a "Insert_path_to_the_file_you_wish_to_sign"
signtool ×10
code-signing ×5
certificate ×3
windows ×3
clickonce ×2
authenticode ×1
azure-devops ×1
c# ×1
hsm ×1
jenkins ×1
mage ×1
msbuild ×1
sha1 ×1
sha256 ×1
symantec ×1
wpf ×1