如何获取/访问浏览器的证书状态/信息(IE等)

时间:2012-10-31 06:54:17

标签: javascript xmlhttprequest certificate activex

我想安装受信任的根证书。现在,我创建了一个batch / exe文件,只需单击即可安装证书。现在,我想将文件附加到一个网页,该网页将自动下载/运行exe/batch并安装它。现在,这部分也是通过以下代码完成的(它作为activex对象):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<!-- saved from url=(0014)about:internet -->


<SCRIPT Language="JScript">



function fnShellExecuteJ()

{

var objShell = new ActiveXObject("Shell.Application");

objShell.ShellExecute("D:\\New folder\\New folder\\RootInstaller.exe", "", "", "open", 1);

}

<HTML>

</SCRIPT> 

<BODY>


<body onLoad="javascript:fnShellExecuteJ();"> 

</BODY>

</HTML>

现在,我想检查证书是否已安装?如果根证书安装在“IE&gt;工具&gt; Internet选项&gt;内容&gt;证书&gt;受信任的根证书颁发机构”中,则它将不会尝试打开安装程序并跳过。但是,如果没有安装,那么它将尝试安装。

总之,我想要检查已安装的证书状态,然后根据该状态继续下一步。

感谢您阅读本文(我的英语太可怕了)。任何建议/提示/写作都会对这位新人有所帮助。谢谢你......

1 个答案:

答案 0 :(得分:0)

这取决于你想要如何实现它。

使用CertOpenStore打开特定存储后,使用API​​: CertFindCertificateInStore 来确定证书是否存在于特定证书库中的“规范”方法(Windows上有多个证书存储区) )。

现在,问题是这是C / C ++代码,您必须将其嵌入ActiveX(或类似代码)中。对于Windows 7和8,我认为你无法避免这种情况。

对于Windows 7之前的版本(Windows XP,Windows Vista),Microsoft有一个名为CAPICOM的组件,它允许脚本访问加密。如果您的客户只是XP / Vista,您可以使用它,然后从您页面上的JavaScript调用CAPICOM(您的用户必须安装它)。

但是,如果您在用户的计算机上运行可执行文件(以安装证书),为什么不安装可信的ActiveX对象(或BHO) - 您可以在JavaScript页面中测试它是否存在。

那是:

var MyObj;
try {
    MyObj = new ActiveXObject( "MyActiveX" );
    alert( 'my object exist' );
} catch( err ) {
    alert( 'my object do not exist' );
}