1

我正在尝试通过任何代码和脚本创建一个网页,以.cer自动下载文件并将其导入任何客户端的受信任根目录。

例如:一个.cer从我的网络服务器目录下载文件并自动将其导入到客户端的受信任根目录的 java 脚本。

我已经通过客户端本地的 VBScript 代码进行了尝试,但现在我想通过网页自动完成这项工作,而不通知浏览用户。

4

2 回答 2

0

添加受信任的根证书是一项极其危险的操作。“不通知浏览用户”绝对没有办法做到这一点,也不应该有。

于 2012-11-24T17:31:06.527 回答
0

嗨,亲爱的,我搜索了许多页面和库以找到通过 javascript 导入 seft 签名 ca 的最佳方法,并找到两种方法之一:

` `
>    <html> 
> <头部>
> <title>证书安装test2</title>
> </head>
> <正文>
> <object id='CertEnroll' name='CertEnroll'></object>
> <object id='XEnroll' name='XEnroll'></object>

> <脚本语言="javascript">

            var CERT_ENROLL_CLASSID = "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09";

            功能 InstallCertChainCEnroll(pkcs7){
                CertEnroll.classid = CERT_ENROLL_CLASSID;
                varenrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
                注册对象。初始化(1);
                for (var i=0;i<pkcs7.length;i++){
                    enrollObj.InstallResponse(4, pkcs7[i], 6, "");
                }
                返回真;
            }

            document.write("<br>正在安装证书...");
            尝试{
                var pkcs7Chain = 新数组();

                pkcs7链[0] =                                                     
                "-----开始证书-----" +
                "MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
                "AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
                ……
                "QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
                "NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
                “-----结束证书-----”

                InstallCertChainCEnroll(pkcs7Chain);
            } 抓住(前){
                document.write("<br>" + ex);
                document.write("<br>" + ex.message);
            }            
> </脚本>
> </正文>
> </html>

` `

和两个:

` `
>    <html> 
> <头部>
> <title>证书安装test2</title>
> </head>
> <正文>
> <object id='CertEnroll' name='CertEnroll'></object>
> <object id='XEnroll' name='XEnroll'></object>

> <脚本语言="javascript">

            var CERT_ENROLL_CLASSID = "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09";

            功能 InstallCertChainCEnroll(pkcs7){
                CertEnroll.classid = CERT_ENROLL_CLASSID;
                varenrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
                注册对象。初始化(1);
                for (var i=0;i<pkcs7.length;i++){
                    enrollObj.InstallResponse(4, pkcs7[i], 6, "");
                }
                返回真;
            }

            document.write("<br>正在安装证书...");
            尝试{
                var pkcs7Chain = 新数组();

                pkcs7链[0] =                                                     
                "-----开始证书-----" +
                "MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
                "AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
                ……
                "QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
                "NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
                “-----结束证书-----”

                InstallCertChainCEnroll(pkcs7Chain);
            } 抓住(前){
                document.write("<br>" + ex);
                document.write("<br>" + ex.message);
            }            
> </脚本>
> </正文>
> </html>

` `

但问题是第一个代码的使用会导致此错误:消息:CertEnroll::CX509EnrollmentWebClassFactory::CreateObject: The operation was cancelled by the user。0x800704c7 (WIN32: 1223) 请看: microsoft msdn blog

当我使用第二个代码时,在中间证书颁发机构区域安装我的 cer 文件!!!!!!!!!发生的事情是 pkcs7Chain 变量中的这个证书是根证书,并且 IstallResponse 方法应该将这个家伙安装在受信任的根证书颁发机构中,但它是否安装在中间证书颁发机构区域。!?我可以通过网页中的 javascript 启动 cmd 并将 ca 从中间更改(替换)为受信任的根吗?(我可以在 ie 中启动 cmd)

于 2012-12-24T16:33:42.427 回答