我可以使用根证书签署ActiveX控件吗?

时间:2010-11-10 09:02:10

标签: activex certificate openssl code-signing ca

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

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

它写道,

  

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

并在“查看证书”中:

  

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

如果我使用子证书进行签名而根证书是可信的,那么eberything就可以了。

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

2 个答案:

答案 0 :(得分:1)

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

您应该为密钥签名设置自己的自签名根证书,并且应该为代码签名设置子证书。然后,只要您的根证书位于浏览器的可信密钥存储区中,您的ActiveX签名就可以了。通常,密钥签名证书应设置为以进行密钥签名,并且代码签名证书应仅设置为 以进行代码签名,因此您不能将这些密钥用于任何其他目的。

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

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

答案 1 :(得分:0)

使用自签名证书对二进制文件进行数字签名几乎违反concept of using digital certificates程序。基本思想是证明代码是由您创建的(真实性),并且自您发布以来未完全修改(完整性)。必须使用由受信任的证书颁发机构(CA)签名的签名证书来完成此操作。

我在下面的问题中更详细地回答了这个问题。

creating a key and signing executable with signtool