无法使用有效的 Sectigo 代码签名证书对 VBA 进行签名

use*_*521 5 excel vba certificate

我们正在使用 Sectigo 代码签名证书(仅限 OV - 组织验证,而不是 EV)来签署我们的 .exe 应用程序。近年来没有出现过问题。

现在我们尝试使用相同的证书在 Word/Excel 中签署 VBA,但没有成功。当我打开VBA editor -> Tools -> Digital Signature -> Select Sectigo cert -> ok -> close VBA and save Excel但随后收到错误:

数字证书有问题。无法签署 VBA 项目。签名将被取消

我无法解决这个问题。自签名证书工作得很好......

有任何想法吗?谢谢

Pᴇʜ*_*Pᴇʜ 3

代码签名证书需要包含证书路径中的所有证书。

\n

尝试使用以下选项导出原始证书certmgr(包括私钥!)

\n
    \n
  • “如果可能,请包含证书路径中的所有证书”
  • \n
\n

启用,然后再次将其导入到您的个人证书中。

\n
\n

添加时间戳

\n

正如您在链接中所示,可以通过在签署文件之前设置以下注册表项在 Excel 中完成此操作:

\n
reg add "HKCU\\Software\\Microsoft\\VBA\\Security" /v "TimeStampURL" /f /d "http://timestamp.sectigo.com"\nreg add "HKCU\\Software\\Microsoft\\VBA\\Security" /v "TimeStampRetryCount" /f /t REG_DWORD /d 2\nreg add "HKCU\\Software\\Microsoft\\VBA\\Security" /v "TimeStampRetryDelay" /f /t REG_DWORD /d 1\n
Run Code Online (Sandbox Code Playgroud)\n

在 Windows 命令行中运行命令。

\n
\n

检查时间戳

\n

我知道手动检查时间戳的唯一解决方法是:

\n
    \n
  1. 确保用于签署宏的证书不位于计算机上的“受信任的发布者”存储中(检查用户存储和计算机存储)。

    \n
  2. \n
  3. 在 Excel 的信任中心中,将宏设置设置为“禁用所有宏并发出通知”。

    \n
  4. \n
  5. 重新启动 Excel

    \n
  6. \n
  7. 打开已签名的文件。您应该看到黄色警告面板显示“宏已被禁用”。不要点击它。

    \n
  8. \n
  9. 转到“文件”\xe2\x80\xba“信息”,在该页面的顶部您应该看到“安全警告”块。单击“启用内容”\xe2\x80\xba“高级选项”。

    \n
  10. \n
  11. 您将看到一个新窗口,显示签名有效,但发布者不受信任。单击“显示签名详细信息”链接。

    \n
  12. \n
  13. 现在,当您在 Windows 资源管理器中查看可执行文件的属性时,我们会看到相同的窗口,该窗口显示可执行文件的数字签名。在“副署”部分,我们可以看到我们的时间戳。

    \n
  14. \n
\n