我正在努力使用时间戳从 Excel 2016 签署 XLA 。这很重要,因为如果没有时间戳,当使用的代码签名证书过期时,签名就会失效。不幸的是,默认情况下 Excel 不会对签名应用时间戳。
微软的文档(https://docs.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 编辑器。
但是,当我检查签名时,我仍然看不到时间戳。
我正在检查签名如下(我不知道更简单的方法):
在Developer功能区中,单击Macro Security,选择Add-ins,然后选中Require Application Add-ins to be signed by Trusted Publisher。单击确定,然后关闭 Excel。(我不是受信任的发布者,所以我故意使我的加载项被禁用。)
重新启动 Excel,并创建一个空工作簿。(我的加载项配置为自动加载。)由于第 1 步而显示安全警告。
- 根据提示单击以获取更多详细信息,然后从“启用内容”菜单中选择“高级选项”。
- 在Microsoft Office 安全选项对话框中,向下滚动到已签名的加载项,然后单击显示签名详细信息。这将打开数字签名详细信息对话框,其中显示签名时间:
Not available
,表示缺少时间戳:
我的理解是带有时间戳的签名会在这里显示,例如
...但我无法用我的 XLA 实现这一目标。