我该如何在Excel 2016中使用时间戳签署XLA?

7
我正在努力用Excel 2016签署带有时间戳的XLA文件。这很重要,因为如果代码签名证书过期,则没有时间戳的签名将变得无效。不幸的是,默认情况下,Excel不会对签名应用时间戳。Microsoft的文档(https://learn.microsoft.com/en-us/deployoffice/security/use-digital-signatures-with-office)说明:
要使用数字签名的时间戳功能,您必须完成以下任务: - 设置符合RFC 3161的时间戳服务器 - 使用组策略设置“指定服务器名称”来输入网络上时间戳服务器的位置。
我的证书颁发机构Comodo表示,他们的时间戳服务器(http://timestamp.comodoca.com)支持RFC 3161(https://support.comodo.com/index.php?/Knowledgebase/Article/View/68/0/time-stamping-server)。
我从https://go.microsoft.com/fwlink/p/?LinkID=626001下载并安装了Office 2016管理模板文件(ADMX / ADML),以应用组策略设置。在本地组策略编辑器中,我可以访问用户配置,管理模板,Microsoft Office 2016,安全设置,数字签名,其中包含相关的组策略设置。
我最初进行了以下设置:
  • 指定时间戳服务器名称http://timestamp.comodoca.com
  • 设置时间戳服务器超时20
然后当这些不起作用时(见下文),我还设置了:
  • 指定数字签名生成的最小XAdES级别XAdES-T
  • 要求的数字签名生成XAdES级别XAdES-T
因为XAdES-T“将时间戳添加到签名的XML-DSig和XAdES-EPES部分,有助于防止证书过期” - 这听起来像是我需要的。
我正在使用“工具”菜单中的“数字签名”在VBA编辑器中进行签名。
然而,当我检查签名时,我仍然看不到时间戳。
我按照以下方式检查签名(我不知道更简单的方法):
1. 在“开发人员”选项卡中,单击“宏安全性”,选择“加载项”,然后选中“要求应用程序加载项由可信发布者签名”。单击“确定”,然后关闭Excel。(我不是可信发布者,所以我有意使我的加载项被禁用。) 2. 重新启动Excel,并创建一个空工作簿。(我的加载项已配置为自动加载。)由于步骤1,会显示SECURITY WARNING。

Excel security warning

点击提示以获取更多详细信息,然后从“启用内容”菜单中选择“高级选项”。

File  Info

Microsoft Office安全选项对话框中,向下滚动到已签名的插件并单击显示签名详细信息。 这将打开数字签名详细信息对话框,其中显示签名时间:不可用,表示缺少时间戳:

no signing time

我的理解是带有时间戳的签名将在此处显示,例如:

signature with timestamp

...但是我使用XLA无法实现这一点。


“Microsoft Office Security Options dialog”在哪里?这个签名对话框在VBA编辑器中没有出现。没有提到时间戳。我真的很想知道它是否正常工作。 - Tuntable
2个回答

4

除了我在问题中详细描述的组策略更改外,我发现:

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\Digital Signatures\

Group Policy Editor

Timestamp server name

......还需要设置一些注册表键(我之前已经找到,但单独使用没有效果):

reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampURL" /f /d "http://timestamp.comodoca.com/authenticode"
reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampRetryCount" /f /t REG_DWORD /d 2
reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampRetryDelay" /f /t REG_DWORD /d 1

请注意,组策略更改只是编辑注册表,因此可能可以进行上述注册表更改和以下操作:
reg add "HKCU\Software\Policies\Microsoft\office\16.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office\12.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office\14.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office\15.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"

(支持一些较旧的Excel版本)。

上述设置适用于我的证书颁发机构Comodo。所有关于timestamp.comodoca.com的引用都需要根据实际情况进行更新。


1
根据您的时间戳服务器文档

         

          (图片来源)


更多信息:


我认为我无法使用signtool来签署XLA文件?我们已经成功地使用时间戳为EXE和DLL文件签名,但我相当确定XLAs必须在Excel中签名。 - davidm_uk
https://stackoverflow.com/questions/47933788/command-line-tool-or-code-to-sign-and-or-check-digital-signature-on-an-excel-f - davidm_uk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接