Excel 数字签名VBA代码的信任链未按预期工作
我创建了2个自签名证书:Excel 数字签名VBA代码的信任链未按预期工作,excel,vba,certificate,code-signing,Excel,Vba,Certificate,Code Signing,我创建了2个自签名证书: 根证书:MyRootCA自签名 代码签名证书:mycdesign签名人MyRootCA 现在,我将MyRootCA添加到Excel的信任中心中的受信任发布者,并使用myDesign对我的VBA代码进行签名(该代码未添加到信任中心) 现在我相信,因为我信任签名为MyDesign的MyRootCA,Excel也应该信任所有签名为MyDesign的代码(信任链)。但事实并非如此。仅当我将MyDesign添加到信任中心时,我的代码才受信任 有人知道我哪里想错了吗?或者,如果父证
MyRootCA
自签名mycdesign
签名人MyRootCA
MyRootCA
添加到Excel的信任中心中的受信任发布者,并使用myDesign
对我的VBA代码进行签名(该代码未添加到信任中心)
现在我相信,因为我信任签名为MyDesign的MyRootCA,Excel也应该信任所有签名为MyDesign的代码(信任链)。但事实并非如此。仅当我将MyDesign添加到信任中心时,我的代码才受信任
有人知道我哪里想错了吗?或者,如果父证书受信任,Excel是否不信任子签名代码
下面您可以看到A
是MyRootCA
和B
是MyCodeSign
发布的A
:
现在我认为,当我信任信任中心中的A
时,所有用B
签名的代码也应该被信任。但是Excel仍然要求信任/启用宏
所以也许有人可以证实这个问题(所以我知道这不是我的错)或者反驳它?我正在开发最新版本的Office 2016 x64版本。如果有必要的话
(很抱歉看到了德语屏幕截图)看起来您必须信任出版商,即使您拥有有效的证书: 请看以下三个选项卡: 可信CA |可信发布者|不可信发布者
很明显,Excel让我抓狂,并将选项从
- 禁用除数字签名宏以外的所有宏
- 禁用带有通知的所有宏 使用此选项,即使数字签名的VBA代码也会收到安全警告,并要求您激活宏
- 专业方面:Excel启用宏,不再要求数字签名宏
- 缺点:Excel禁用宏,不再对未签名的宏进行查询
“使用通知禁用所有宏,,数字签名宏除外”
这完全符合我的愿望。转到数字签名设置,然后单击“详细信息…”检查您的认证路径选项卡。它应该显示证书和根目录之间的关系。@谢谢您的输入,证书路径看起来不错。我添加了一些截图,这应该会让它更清晰。当然,我信任出版商。不是签署代码(B)的人,而是签署签署代码(B)的证书的根用户(A)。因此,信任链应该是有效的,但Excel不遵循证书路径。拥有根目录使您的证书有效。否则,您将收到无效证书警告。我的意思是,你也必须信任每一个出版商,即使他们有一个有效的签名。这有记录在案吗?如果这是真的,那就违背了整个信任链的概念。如果这是真的,那么与自签名证书相比,拥有来自受信任CA的证书没有任何优势。信任根证书的好处是,您不必信任每个子证书。@Pᴇʜ拥有有效证书不同于信任出版商。我们是否应该信任任何可以购买有效证书的人编写的软件?不,我们不应该。对于使用自签名证书进行代码签名,您确实有一个有效的参数。除非你想分发软件,否则你需要确保没有人能假装成你。这就是为什么你要买一个可信的证书。所以它们是两个不同的问题。