我们有新的代码签名证书。这次是 GlobalSign 的 EV 代码签名证书。该证书现在仅在 Azure Key Vault 中以 RSA-HSM 形式提供。
我确实设法使用 AzureSignTool 对 dll 和可执行文件进行签名,我还问了这个问题
托多:
这个问题:
在了解了 VBA 签名是什么之后,我发现对 VBA 文件进行签名实际上是由 SignedCms 完成的。查看 EPPlus 的源代码,我发现它就是这样做的。 除了我们没有直接的私钥外,Azure Key Vault 有。一段代码可以在访问密钥库时获取它,但只能获取 RSA 私钥。
也许这个问题是相关的?
dotnet/runtime#24707dotnet/corefx#29219以及 Azure HSM 支持的代码签名证书,通过 VBA 宏对 Office 文件进行签名。 请按照以下步骤操作:
git clone https://github.com/vcsjones/AzureSignTool.git
cd AzureSignTool/src/AzureSignTool
dotnet run sign "D:\signtest.xlsm" -kvm -kvu https://contoso-codesigning.vault.azure.net/ -kvc contoso-codesigning-ov -tr http://timestamp.acs.microsoft.com/ -r win-x86
dotnet run sign "D:\signtest.xlsm" -kvm -kvu https://contoso-codesigning.vault.azure.net/ -kvc contoso-codesigning-ov -tr http://timestamp.acs.microsoft.com/ -r win-x86
dotnet run sign "D:\signtest.xlsm" -kvm -kvu https://contoso-codesigning.vault.azure.net/ -kvc contoso-codesigning-ov -tr http://timestamp.acs.microsoft.com/ -r win-x86
-kvm
-kvm|--azure-key-vault-managed-identity UseManagedIdentity
) 替换为 -kvi <clientid> -kvs <clientsecret> -kvt <tenantid>
实际上需要运行相同的命令3次,首先创建旧签名,然后创建敏捷签名,然后创建V3签名。请参阅 Office SIP 的自述文件。info: AzureSignTool.SignCommand[0]
=> File: D:\signtest.xlsm
Signing file.
info: AzureSignTool.SignCommand[0]
=> File: D:\signtest.xlsm
Signing completed successfully.
info: AzureSignTool.SignCommand[0]
Successful operations: 1
info: AzureSignTool.SignCommand[0]
Failed operations: 0
signtool verify /pa D:\signtest.xlsm
File: D:\signtest.xlsm
Index Algorithm Timestamp
========================================
0 sha256 RFC3161
Successfully verified: D:\signtest.xlsm