如何自动导入.cer文件

时间:2012-11-24 17:02:50

标签: web-applications import certificate

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

亲爱的,我搜索了许多页面&库找到通过javascript导入seft签名ca的最佳方法,并找到两个方法:

` `
>    <html> 
>    <head> 
>        <title>Certificate install test2</title> 
>        </head> 
>        <body> 
>            <object id='CertEnroll' name='CertEnroll'></object> 
>            <object id='XEnroll' name='XEnroll'></object> 

>            <script language="javascript"> 

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

            function InstallCertChainCEnroll(pkcs7){
                CertEnroll.classid = CERT_ENROLL_CLASSID;
                var enrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
                enrollObj.Initialize(1);
                for (var i=0;i<pkcs7.length;i++){
                    enrollObj.InstallResponse(4, pkcs7[i], 6, "");
                }
                return true;
            }

            document.write("<br>Installing certificate...");
            try{
                var pkcs7Chain = new Array();

                pkcs7Chain[0] =                                                     
                "-----BEGIN CERTIFICATE-----" +
                "MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
                "AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
                ....
                "QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
                "NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
                "-----END CERTIFICATE-----"

                InstallCertChainCEnroll(pkcs7Chain);
            } catch (ex){
                document.write("<br>" + ex);
                document.write("<br>" + ex.message);
            }            
>            </script> 
>        </body> 
>    </html> 

` `

和两个:

` `
>    <html> 
>    <head> 
>        <title>Certificate install test2</title> 
>        </head> 
>        <body> 
>            <object id='CertEnroll' name='CertEnroll'></object> 
>            <object id='XEnroll' name='XEnroll'></object> 

>            <script language="javascript"> 

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

            function InstallCertChainCEnroll(pkcs7){
                CertEnroll.classid = CERT_ENROLL_CLASSID;
                var enrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
                enrollObj.Initialize(1);
                for (var i=0;i<pkcs7.length;i++){
                    enrollObj.InstallResponse(4, pkcs7[i], 6, "");
                }
                return true;
            }

            document.write("<br>Installing certificate...");
            try{
                var pkcs7Chain = new Array();

                pkcs7Chain[0] =                                                     
                "-----BEGIN CERTIFICATE-----" +
                "MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
                "AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
                ....
                "QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
                "NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
                "-----END CERTIFICATE-----"

                InstallCertChainCEnroll(pkcs7Chain);
            } catch (ex){
                document.write("<br>" + ex);
                document.write("<br>" + ex.message);
            }            
>            </script> 
>        </body> 
>    </html> 

` `

但问题是使用第一个代码会导致此错误: 消息:CertEnroll :: CX509EnrollmentWebClassFactory :: CreateObject:操作已被用户取消。 0x800704c7(WIN32:1223) 请参阅: microsoft msdn blog

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