数字签名 VBA 代码的信任链未按预期工作
Chain of trust at digitally signed VBA code not working as expected
我创建了 2 个自签名证书:
- 根证书:
MyRootCA
自签名
- 代码签名证书:
MyCodeSign
由 MyRootCA
签名
现在我将 MyRootCA
添加到 Excel 信任中心的 受信任的发布者 并使用 [=12 签署我的 VBA 代码=](未添加到信任中心)。
现在我相信,因为我信任签署 MyCodeSign
的 MyRootCA
,所以 Excel 也应该信任所有 MyCodeSign
签署的代码(信任链) .但事实并非如此。仅当我将 MyCodeSign
添加到信任中心时,我的代码才受信任。
有谁知道我哪里错了?还是 Excel 如果其父证书是可信的,则只是不信任子签名代码?
下面你看到 A
是 MyRootCA
而 B
是 MyCodeSign
发布者 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 宏。
尽管如此,我还是想念这两个选项的组合,例如:
“通过通知禁用所有宏,除了数字签名的宏”
完全符合我的愿望。
我创建了 2 个自签名证书:
- 根证书:
MyRootCA
自签名 - 代码签名证书:
MyCodeSign
由MyRootCA
签名
现在我将 MyRootCA
添加到 Excel 信任中心的 受信任的发布者 并使用 [=12 签署我的 VBA 代码=](未添加到信任中心)。
现在我相信,因为我信任签署 MyCodeSign
的 MyRootCA
,所以 Excel 也应该信任所有 MyCodeSign
签署的代码(信任链) .但事实并非如此。仅当我将 MyCodeSign
添加到信任中心时,我的代码才受信任。
有谁知道我哪里错了?还是 Excel 如果其父证书是可信的,则只是不信任子签名代码?
下面你看到 A
是 MyRootCA
而 B
是 MyCodeSign
发布者 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 宏。
尽管如此,我还是想念这两个选项的组合,例如:
“通过通知禁用所有宏,除了数字签名的宏”
完全符合我的愿望。