如何修复 VBA 中的“没有可用的签名证书”?

如何修复 VBA 中的“没有可用的签名证书”?

Outlook 中有一个 VBA 脚本,在发送外部电子邮件时会生成一个弹出窗口。显然,该脚本的签名已在周末过期。签名者已不复存在。我在我们的 DC 上的 CA 中看到了证书,但没有续订选项。

我已生成代码签名证书并将其导入我的计算机,但 VBA 编辑器一直显示No usable signing certificates are available。我在我的证书存储中看到了该证书。模板显示“代码签名”,而不是原始证书“%ORG% 代码签名”(如果这很重要的话)。

我真的不知道自己在做什么,花了几个小时在网上搜索和研究才走到这一步。我走投无路了,需要一些帮助才能重新签名。如果有更好的、更现代的替代方案来让用户提示外部收件人,请告诉我。

答案1

抱歉,我不是这方面的专家,但仍然会尽力提供我的意见...

首先,你试过自签名证书吗?它更容易调试,将帮助你在本地进行测试。 https://social.technet.microsoft.com/Forums/lync/en-US/6b06b276-4266-4f29-ae22-2a3c86c4238f/certificate-for-digital-signature?forum=outlook

接下来,您确定您已将私钥与证书一起导入了吗?据我了解,签名机制很可能需要它(如果我误导了您,请见谅;如果您相信私钥的概念,请检查如何安装它:https://security.stackexchange.com/questions/25996/how-to-import-a-private-key-in-windows- 您需要 PFX 而不是 CER,否则不会导入私钥)。

最后,您将证书导入到证书存储中的哪个容器中?这也可​​能影响结果。 https://answers.microsoft.com/en-us/msoffice/forum/all/vba-i-installed-digital-signing-certificate-but/231529b1-8099-4c7b-9bb6-2c36aeba00a4

获取签名证书的步骤

  1. 在签名计算机上,打开Manage User Certificates
  2. 右击Personal> All Tasks>Request New Certificate
  3. 选择Active Directory Enrollment Policy>Next
  4. 选择一个Code Signing模板并点击Enroll

VBA 编辑器现在应该可以看到该证书并允许您对脚本进行签名。

如果在域中使用签名的脚本,则需要导出证书,然后将其添加到组策略中,以便在每台使用该脚本的机器上导入。

答案2

我能够通过 Internet 选项/内容/证书界面将证书导入以下三个存储区来解决这个问题:个人、受信任的发布者、受信任的根证书颁发机构。

以前,我已通过“管理计算机证书”(机器级别)和“管理用户证书”(用户级别)将证书导入到所有三个位置,但尽管证书出现在所有六个位置(三个位置机器,三个位置用户),但 Excel 却无法识别它。

但是,通过“Internet 选项”UI 可以解决问题。

相关内容