如何使用时间戳签署 Excel 2016 年的 XLA?

How do I sign an XLA from Excel 2016 with a timestamp?

我正在努力签署一份来自 Excel 2016 的带有时间戳 的 XLA。这很重要,因为如果没有时间戳,当使用的代码签名证书过期时,签名将失效。不幸的是,默认情况下 Excel 不会将时间戳应用于签名。

Microsoft 的文档 (https://docs.microsoft.com/en-us/deployoffice/security/use-digital-signatures-with-office) 指出:

To use the time stamp functionality with digital signatures, you must complete the following tasks:

  • Set up a time stamp server that is compliant with RFC 3161

  • Use the Group Policy setting, Specify server name, to enter the location of the time stamp server on the network.

我的证书颁发者 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、安全设置、数字签名,其中可以找到相关的组策略设置。

我最初设置如下:

...然后当这些不起作用时(见下文),我还设置:

... 因为 XAdES-T "Adds a time stamp to the XML-DSig and XAdES-EPES sections of the signature, which helps protect against certificate expiration" - 这听起来正是我所需要的。

我正在 VBA 编辑器中使用 数字签名 工具 菜单中签名。

但是,当我检查签名时,我仍然没有看到时间戳

我正在检查签名如下(我不知道更简单的方法):

  1. 开发人员功能区中,单击宏安全、select添加-ins,然后勾选要求应用程序加载项由受信任的发布者签名。单击确定,然后关闭 Excel。 (我不是受信任的发布者,所以我故意导致我的加载项被禁用。)

  2. 重新启动 Excel,并创建一个空工作簿。 (我的加载项配置为自动加载。)由于步骤 1,显示安全警告。

  1. 根据提示点击了解更多详情,然后从启用内容菜单中选择高级选项

  1. Microsoft Office 安全选项 对话框中,向下滚动到已签名的加载项,然后单击 显示签名详细信息。这将打开数字签名详细信息对话框,其中显示签名时间Not available,表明缺少时间戳:

我的理解是带有时间戳的签名会显示在这里,例如

...但我无法使用 XLA 实现此目的。

根据您的 timestamp server's documentation

(Image Source)


更多信息:

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

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

...也有必要设置一些我之前发现但不能单独使用的注册表项:

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.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"

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

以上设置适用于我的证书颁发者 Comodo。所有对 timestamp.comodoca.com 的引用都需要适当更新。