无法使用有效的 Sectigo 代码签名证书签署 VBA
Unable to sign VBA with valid Sectigo Code Signing certificate
我们正在使用 Sectigo 代码签名证书(仅 OV - 组织验证,而非 EV)来签署我们的 .exe 应用程序。最近几年没问题
现在我们正在尝试使用相同的证书在 Word/Excel 中签署 VBA 但没有成功。当我打开 VBA editor -> Tools -> Digital Signature -> Select Sectigo cert -> ok -> close VBA and save Excel
但随后收到错误消息:
There is a problem with the digital certificate. The VBA project could
not be signed. The signature will be canceled
我无法解决这个问题。自签名证书工作得很好...
有什么想法吗?谢谢
代码签名证书需要包含证书路径中的所有证书。
尝试使用选项
导出certmgr
中的原始证书(包括私钥!)
- “如果可能,在证书路径中包含所有证书”
已启用,然后再次将其导入您的个人证书。
添加时间戳
如您在 link 中所示,可以在 Excel 中完成,方法是在签署文件之前设置以下注册表项:
reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampURL" /f /d "http://timestamp.sectigo.com"
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
运行 windows 命令行中的命令。
检查时间戳
我知道手动检查时间戳的唯一解决方法是:
确保用于签署宏的证书不在计算机上的“可信发布者”存储中(检查用户存储和机器存储)。
在Excel的信任中心,将宏设置设置为“禁用所有宏并通知”。
重启Excel
打开签名文件。您应该会看到黄色警告面板,上面写着“宏已被禁用”。 不要点击它。
转到“文件”›“信息”,在该页面的顶部您应该看到“安全警告”块。单击“启用内容”›“高级选项”。
你会得到一个新的 window 说明签名有效,但发布者不受信任。单击“显示签名详细信息”link。
现在我们得到相同的 window,当您在 Windows 资源管理器中查看可执行文件的属性时,它会显示可执行文件的数字签名。在“会签”部分,我们看到了我们的时间戳。
我们正在使用 Sectigo 代码签名证书(仅 OV - 组织验证,而非 EV)来签署我们的 .exe 应用程序。最近几年没问题
现在我们正在尝试使用相同的证书在 Word/Excel 中签署 VBA 但没有成功。当我打开 VBA editor -> Tools -> Digital Signature -> Select Sectigo cert -> ok -> close VBA and save Excel
但随后收到错误消息:
There is a problem with the digital certificate. The VBA project could not be signed. The signature will be canceled
我无法解决这个问题。自签名证书工作得很好...
有什么想法吗?谢谢
代码签名证书需要包含证书路径中的所有证书。
尝试使用选项
导出certmgr
中的原始证书(包括私钥!)
- “如果可能,在证书路径中包含所有证书”
已启用,然后再次将其导入您的个人证书。
添加时间戳
如您在 link 中所示,可以在 Excel 中完成,方法是在签署文件之前设置以下注册表项:
reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampURL" /f /d "http://timestamp.sectigo.com"
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
运行 windows 命令行中的命令。
检查时间戳
我知道手动检查时间戳的唯一解决方法是:
确保用于签署宏的证书不在计算机上的“可信发布者”存储中(检查用户存储和机器存储)。
在Excel的信任中心,将宏设置设置为“禁用所有宏并通知”。
重启Excel
打开签名文件。您应该会看到黄色警告面板,上面写着“宏已被禁用”。 不要点击它。
转到“文件”›“信息”,在该页面的顶部您应该看到“安全警告”块。单击“启用内容”›“高级选项”。
你会得到一个新的 window 说明签名有效,但发布者不受信任。单击“显示签名详细信息”link。
现在我们得到相同的 window,当您在 Windows 资源管理器中查看可执行文件的属性时,它会显示可执行文件的数字签名。在“会签”部分,我们看到了我们的时间戳。