数字签名 VBA 代码的信任链未按预期工作

Chain of trust at digitally signed VBA code not working as expected

我创建了 2 个自签名证书:

  1. 根证书:MyRootCA 自签名
  2. 代码签名证书:MyCodeSignMyRootCA
  3. 签名

现在我将 MyRootCA 添加到 Excel 信任中心的 受信任的发布者 并使用 [=12 签署我的 VBA 代码=](未添加到信任中心)。

现在我相信,因为我信任签署 MyCodeSignMyRootCA,所以 Excel 也应该信任所有 MyCodeSign 签署的代码(信任链) .但事实并非如此。仅当我将 MyCodeSign 添加到信任中心时,我的代码才受信任。

有谁知道我哪里错了?还是 Excel 如果其父证书是可信的,则只是不信任子签名代码?

下面你看到 AMyRootCABMyCodeSign 发布者 A:

现在我认为当我在信任中心信任 A 时,所有用 B 签名的代码也应该被信任。但是 Excel 仍然要求 trusting/enable 宏。

所以也许有人可以证实这个问题(所以我知道这不是我的错)或反驳它?
我正在开发最新版本的 Office 2016 x64 版。 如果这很重要。

(抱歉德国截图)

看起来您必须信任发布者,即使您拥有有效证书也是如此:

https://www.groovypost.com/howto/howto/office-2010-outlook-self-signed-digital-certificate/

看看这三个选项卡:

受信任的 CA |值得信赖的出版商 |不受信任的发布者

很明显 Excel 快把我逼疯了,我把选项从

改了
  • 禁用除数字签名宏之外的所有宏

回到默认值(可能是在更新期间发生的。):

  • 通过通知禁用所有宏

    使用此选项,即使是经过数字签名的 VBA 代码也会收到安全警告,并要求您激活宏。

当然,对于“禁用除数字签名宏之外的所有宏”,信任链是有效的,我不需要信任每一个证书。正如我所料,信任根 CA 就足够了。

  • Pro 方面:Excel 启用宏并且不再询问数字签名的宏。
  • 反对方:Excel 禁用宏并且不再询问 un-signed 宏。

尽管如此,我还是想念这两个选项的组合,例如:
通过通知禁用所有宏,除了数字签名的宏
完全符合我的愿望。