0

我有一个 ActiveX 控件,应该在第一次访问网页时安装。

我有使用 OpenSSL 创建的自签名证书及其子证书。问题是,如果我使用根证书签署一个 activeX 控件,Windows 在检查 activex 时无法验证它,即使它是作为受信任安装的。

它写道,

“未遵守证书的基本扩展”

并在“查看证书”中:

“证书无效,因为似乎不允许证书路径中的一个证书颁发机构颁发证书,或者该证书不能用作最终实体证书”。

如果我在根证书受信任的情况下使用子证书进行签名,那么 eberything 就可以了。

我想根证书只能签署与证书相关的东西,而不是文件等,但是要确定这一点。

4

2 回答 2

1

我认为该错误消息试图告诉您的是您为密钥生成的证书不包含正确的证书扩展名。代码签名需要已代码签名生成的证书。其他类型的证书——例如为签署数据而生成的证书——受到 CA 的审查较少,因此提供了代码签名所需的较低级别的安全性。

应为密钥签名设置您自己的自签名根证书,并为代码签名设置子证书。那么您的 ActiveX 签名应该没问题,只要您的根证书在浏览器的受信任密钥库中。通常,密钥签名证书应用于密钥签名,而代码签名证书应设置为用于代码签名,因此您不能将这些密钥用于任何其他目的。

该解决方案在组织内是可以的,您可以提前在每个用户的 PC 上安装您的根密钥。如果您想在公共 Internet 上的网页上使用 ActiveX 控件,则必须说服用户信任您的证书(即使他们可能没有充分的理由这样做),或者您必须购买代码签名证书来自其根证书已为普通浏览器所知的商业 CA 之一。

最后,我真的建议不要对任何东西使用 ActiveX 控件,因为它们只能在 Windows 上运行,并且只有在它们受到信任的情况下才能运行。大多数有意识的人都会设置浏览器的安全性来拒绝它们。使用不同的技术(例如Javascript)制作您的活动内容将获得更大的成功

于 2010-11-16T15:16:45.023 回答
0

使用自签名证书对二进制文件进行数字签名几乎违背了在程序中使用数字证书的概念。基本思想是证明代码是由您创建的(真实性)并且自您发布以来没有被修改(完整性)。这必须通过使用由受信任的证书颁发机构 (CA) 签名的签名证书来完成。

我已经在以下问题上更详细地回答了这个问题。

使用 signtool 创建密钥并签署可执行文件

于 2010-11-17T03:27:37.337 回答