续订证书后是否需要重新编码签名 Excel 宏

dlp*_*too 4 excel vba code-signing code-signing-certificate

几年前,我在 Excel 中创建了 20 到 30 个表单,并添加了一个 Excel 加载项来处理这些表单。表单和加载项包含我们使用 GoDaddy 的证书进行编码签名的 VBA 代码。该证书本月到期,该公司要求我帮助他们完成任何需要做的事情,以确保表单仍然有效,并且不会提示企业用户信任宏。

证书将由原始提供商 GoDaddy 更新。

我是否需要对每个文件中的 VBA 项目重新进行代码签名,或者代码签名是否足够智能,能够意识到证书已更新并且无论如何都可以使用它?看来,最坏的情况是,我必须打开每个 VBA 项目并重新签署代码、保存文件,然后将它们重新部署到用户在使用表单时打开表单的服务器。

我可能可以通过反复试验来解决这个问题,但我不再在公司工作,直到下周进入办公室才能获得表格和证书。不过,我想做好准备,因此任何重新签名/重新部署都需要尽可能少的时间。

谢谢!

Nza*_*all 6

您很可能必须放弃所有文件,因为签名本质上是说“此代码由与随附证书相关的创建者批准,并由这家值得信赖的公司证明”。由于证书过期,您无法继续使用同一个证书。这是为了防止有人在废弃的硬盘驱动器或其他什么地方找到旧证书并用假名签署代码。

\n\n

但是,您应该做的是为您的代码签名请求添加“时间戳”。对代码加时间戳有效地表示“此代码此时已由创建者批准,并且此后没有更改”。但是,为了给 VBA 项目添加时间戳,您需要手动启用相关外部服务的使用,因此您需要互联网。

\n\n

Godaddy 的这篇文章对此过程进行了解释:

\n\n

https://www.godaddy.com/help/code-signing-microsoft-office-macros-and-visual-basic-for-applications-4779

\n\n
\n

如果您希望允许人们在证书过期后继续使用您签名的 Visual Basic\xc2\xae for Applicaions (VBA) 代码,请修改代码签名计算机上的注册表,以在签名时添加时间戳,使用以下按键:

\n\n
    \n
  • 创建键:HKEY_CURRENT_USER\\Software\\Microsoft\\VBA\\Security
  • \n
  • 创建字符串:HKEY_CURRENT_USER\\Software\\Microsoft\\VBA\\Security\\TimeStampURL
  • \n
  • 创建 DWORD:HKEY_CURRENT_USER\\Software\\Microsoft\\VBA\\Security\\TimeStampRetryCount
  • \n
  • 创建 DWORD:HKEY_CURRENT_USER\\Software\\Microsoft\\VBA\\Security\\TimeStampRetryDelay
  • \n
\n\n

将新字段设置为以下值:

\n\n \n
\n\n

在那之后:

\n\n
\n

编码签署文档

\n\n
    \n
  1. 打开您要签名的文件。
  2. \n
  3. 单击“工具”菜单,突出显示“宏”,然后单击“Visual Basic 编辑器”。
  4. \n
  5. 在“项目资源管理器”窗口中,选择要签名的 VBA 宏项目。
  6. \n
  7. 从“工具”菜单中,选择“数字签名”。
  8. \n
  9. 单击选择并选择您的代码签名证书.0
  10. \n
  11. 单击“确定”关闭。
  12. \n
\n
\n\n

此过程应该允许您在证书过期后继续使用 VBA 宏。

\n