导入客户端证书在IE浏览器中使用javascript

问题描述:

我试图导入/安装客户端证书到IE中,但我在我的js代码中收到以下错误。导入客户端证书在IE浏览器中使用javascript

function ImportClientCertificate() 
     {   
      try { 
       var objCertEnrollClassFactory = document.getElementById("objCertEnrollClassFactory"); 

       var objEnroll = objCertEnrollClassFactory.CreateObject("X509Enrollment.CX509Enrollment"); 

       var sPKCS7 = "-----BEGIN CERTIFICATE-----" +    
       "MIIDADCCAmkCCQ..." + 
       "-----END CERTIFICATE-----" 

       objEnroll.Initialize(1); 

       //->this line causes the exception 
       objEnroll.InstallResponse(3, sPKCS7, 1, "correctpassword"); 
      } 
      catch (ex) { 
       alert(ex.description); 
       /*Exception being thrown: CertEnroll::CX509Enrollment::InstallResponse: Access is denied. 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)*/ 
      } 
     } 

什么可能是这种例外的原因?我已经尝试将IE中的安全级别设置为低,但这并没有帮助。手动将证书安装到用户专用证书存储区中可以正常工作。

任何帮助,高度赞赏。

+0

你是否管理过还用javascript导入pfx? – madduci 2017-04-05 12:29:30

经过两天的网络研究,我终于找到了如何让这个脚本工作。我发现IE 11的唯一解决方案是在IE设置框中启用以下选项。

ActiveX settings

我很惊讶这对你有用!

我发现我不得不改变(在实施例3)的restrictions参数是0或4.这是基于MSDN文档上在https://msdn.microsoft.com/en-us/library/windows/desktop/aa378051(v=vs.85).aspx

E_ACCESSDENIED

此方法从网络调用,AllowNoOutstandingRequest或AllowUntrustedCertificate已在限制参数中指定。