我构建了一个.NET类库项目,在调用时(从JavaScript)访问mshtml.HTMLDocument
。由于我将可信站点的.NET配置中的权限更改为具有完全访问权限,因此我的计算机上的一切正常。
但对于最终用户,我希望Internet Explorer能够提示它们,就像Windows Update一样。
我使用强名称和自动签名证书来烧毁程序集,并且我声明了非托管代码SecurityPermission
,但仍然没有“黄色条”询问用户。
有人知道如何触发此提示吗?感谢
稍后编辑:更多细节:
我将组件嵌入<object classid="dllname.dll#namespace.classname" ><object>
并且它可以工作,但没有安全权限。
如果我像<object classid="clsid:..guid.." codebase="dllname.dll#-1,-1,-1,-1"></object>
一样嵌入它,则会出现安装弹出窗口的权限,但对象无法实例化。
更新:我让我的类成为一个COM,实现了Safe-for-scripting,我用它制作了一个MSI并将它放在一个.CAB文件中。如果用户在“受信任的根”中拥有我的证书,它就会安装,并且可以正常运行。
它不起作用,但是如果它不受信任(对用户没有问题,只是'..已阻止以下activex从...'。那真的意味着我必须放我的钱进了SSL证书?!?
答案 0 :(得分:4)
我假设您的问题是:您是否可以强制IE提示用户安装(以前未知的)证书,以便在页面上运行其他已签名且安全的ActiveX控件? (如果这不是你的问题,评论我可以修改。)
简短回答:否。您需要为受信任机构的代码签名证书支付$$$。 (即AFAIK,与常规SSL证书不同)
答案很长:
从安全角度来看,使用未知证书进行签名与未签名证书类似,因为没有可信任的权限告诉客户端他可以信任该代码。 IE的默认设置不允许下载和使用未签名的ActiveX控件。
如果你想要做的事情被允许,那么一个精明的攻击者可以简单地创建一个证书,签名,从而使用户更容易运行他们的攻击代码。
肯定有解决方法,但都涉及客户采取措施更改其IE设置,或者(在Intranet设置中)让管理员推出对客户端设置的更改。
以下是TechNet(http://technet.microsoft.com/en-us/library/cc505863.aspx)的更多相关信息:
Internet Explorer未配置为 信任证书颁发机构 任何人,包括攻击者,都可以 创建自己的CA和问题 证书。因此,互联网 资源管理器不信任所有CA. 默认。相反,Internet Explorer 只信任少数公共CA. 如果证书是由。颁发的 不受信任的CA和网站上 公共互联网,服务器 管理员应该获得一个 来自可信CA的证书。如果 网站在您的内部网上,一个客户端 管理员应该配置 Internet Explorer信任发布 CA