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

问题描述 投票:3回答:1

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

证书将与原始提供商Go Daddy续签。

我是否需要在每个文件中重新编码VBA项目的代码,或者代码签名是否足够智能以确认证书已更新并且只是使用它?看起来,最糟糕的情况是,我必须打开每个VBA项目并重新签名代码,保存文件,然后将它们重新部署到用户打开表单时使用它们的服务器。

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

谢谢!

excel vba code-signing code-signing-certificate
1个回答
3
投票

您很可能不得不重新签名所有文件,因为签名实质上是说“此代码由附带证书的创建者批准,正如这家值得信赖的公司所证实的”。由于证书过期,您不能继续使用相同的证书。这是为了防止有人在丢弃的硬盘驱动器上找到旧证书或者在虚假名称下签名代码。

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

Godaddy的这篇文章解释了这个过程:

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

如果您希望允许人们在证书过期后继续使用您签名的VisualBasic®forApplicaions(VBA)代码,请修改代码签名计算机上的注册表,以便在签名时使用以下键添加时间戳:

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

将新字段设置为以下值:

之后:

编码签名文件

  1. 打开要签名的文件。
  2. 单击工具菜单,突出显示宏,然后单击Visual Basic编辑器。
  3. 在Project Explorer窗口中,选择要签名的VBA宏项目。
  4. 从“工具”菜单中,选择“数字签名”。
  5. 单击“选择”,然后选择“代码签名证书”
  6. 单击“确定”关闭。

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

© www.soinside.com 2019 - 2024. All rights reserved.