如何使用时间戳签署 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、安全设置、数字签名,其中可以找到相关的组策略设置。
我最初设置如下:
- 指定时间戳服务器名称到
http://timestamp.comodoca.com
- 将时间戳服务器超时设置为
20
...然后当这些不起作用时(见下文),我还设置:
- 指定数字签名生成的最低 XAdES 级别 到
XAdES-T
- 请求生成签名的 XAdES 级别 到
XAdES-T
... 因为 XAdES-T "Adds a time stamp to the XML-DSig and XAdES-EPES sections of the signature, which helps protect against certificate expiration" - 这听起来正是我所需要的。
我正在 VBA 编辑器中使用 数字签名 从 工具 菜单中签名。
但是,当我检查签名时,我仍然没有看到时间戳。
我正在检查签名如下(我不知道更简单的方法):
在开发人员功能区中,单击宏安全、select添加-ins,然后勾选要求应用程序加载项由受信任的发布者签名。单击确定,然后关闭 Excel。 (我不是受信任的发布者,所以我故意导致我的加载项被禁用。)
重新启动 Excel,并创建一个空工作簿。 (我的加载项配置为自动加载。)由于步骤 1,显示安全警告。
- 根据提示点击了解更多详情,然后从启用内容菜单中选择高级选项。
- 在 Microsoft Office 安全选项 对话框中,向下滚动到已签名的加载项,然后单击 显示签名详细信息。这将打开数字签名详细信息对话框,其中显示签名时间:
Not available
,表明缺少时间戳:
我的理解是带有时间戳的签名会显示在这里,例如
...但我无法使用 XLA 实现此目的。
根据您的 timestamp server's documentation:
RFC 3161 timestamping is used by SignTool (using the /tr
parameter) and other applications (such as jarsigner).
Our time stamping server (http://timestamp.comodoca.com
) automatically selects the appropriate signature algorithm (RSA/SHA-1
, RSA/SHA-256
or RSA/SHA-384
) with which to sign each timestamp, based on the hash algorithm you specify (e.g. via SignTool's /td
parameter).
更多信息:
我发现 除了 我的问题中详述的组策略更改外:
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 的引用都需要适当更新。
我正在努力签署一份来自 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、安全设置、数字签名,其中可以找到相关的组策略设置。
我最初设置如下:
- 指定时间戳服务器名称到
http://timestamp.comodoca.com
- 将时间戳服务器超时设置为
20
...然后当这些不起作用时(见下文),我还设置:
- 指定数字签名生成的最低 XAdES 级别 到
XAdES-T
- 请求生成签名的 XAdES 级别 到
XAdES-T
... 因为 XAdES-T "Adds a time stamp to the XML-DSig and XAdES-EPES sections of the signature, which helps protect against certificate expiration" - 这听起来正是我所需要的。
我正在 VBA 编辑器中使用 数字签名 从 工具 菜单中签名。
但是,当我检查签名时,我仍然没有看到时间戳。
我正在检查签名如下(我不知道更简单的方法):
在开发人员功能区中,单击宏安全、select添加-ins,然后勾选要求应用程序加载项由受信任的发布者签名。单击确定,然后关闭 Excel。 (我不是受信任的发布者,所以我故意导致我的加载项被禁用。)
重新启动 Excel,并创建一个空工作簿。 (我的加载项配置为自动加载。)由于步骤 1,显示安全警告。
- 根据提示点击了解更多详情,然后从启用内容菜单中选择高级选项。
- 在 Microsoft Office 安全选项 对话框中,向下滚动到已签名的加载项,然后单击 显示签名详细信息。这将打开数字签名详细信息对话框,其中显示签名时间:
Not available
,表明缺少时间戳:
我的理解是带有时间戳的签名会显示在这里,例如
...但我无法使用 XLA 实现此目的。
根据您的 timestamp server's documentation:
RFC 3161 timestamping is used by SignTool (using the
/tr
parameter) and other applications (such as jarsigner).Our time stamping server (
http://timestamp.comodoca.com
) automatically selects the appropriate signature algorithm (RSA/SHA-1
,RSA/SHA-256
orRSA/SHA-384
) with which to sign each timestamp, based on the hash algorithm you specify (e.g. via SignTool's/td
parameter).
更多信息:
我发现 除了 我的问题中详述的组策略更改外:
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 的引用都需要适当更新。