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

时间:2018-06-01 23:27:34

标签: excel-vba code-signing xla vba excel

我正在努力使用时间戳从Excel 2016 签署XLA。这很重要,因为没有时间戳,当使用的代码签名证书到期时,签名将变为无效。不幸的是,默认情况下,Excel不会对签名应用时间戳。

Microsoft的文档(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编辑器。

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

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

  1. Developer 功能区中,单击宏安全性,选择加载项,然后选中需要应用程序添加 - ins由Trusted Publisher签名。单击确定,然后关闭Excel。 (我不是受信任的发布者,因此我故意导致我的加载项被禁用。)

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

  3. Excel security warning

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

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

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

        signature with timestamp

        ...但我的XLA无法实现这一目标。

2 个答案:

答案 0 :(得分:1)

根据您的timestamp server's documentation

  

SignTool's

更多信息:

答案 1 :(得分:0)

我发现除了 组策略外,我的问题中也有详细更改:

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 的所有引用都需要进行适当的更新。