【问题标题】:Do I need to re-code sign Excel macros after renewing the certificate更新证书后是否需要重新编码签名 Excel 宏
【发布时间】:2019-08-24 04:42:46
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    如果您希望人们在证书过期后继续使用您签名的 Visual Basic® for Applicaions (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. 在“项目资源管理器”窗口中,选择您要签名的 VBA 宏项目。
    4. 从“工具”菜单中,选择“数字签名”。
    5. 单击选择并选择您的代码签名证书.0
    6. 点击确定关闭。

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

    【讨论】:

    • Nzall,感谢您快速而彻底的回答!我怀疑我需要辞职文件。上次我们没有给它们加上时间戳(不知道这样做),但这次会这样做。再次感谢!
    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多