IE中自动安装根证书

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.lang.*,java.io.*,sun.misc.BASE64Encoder" %>
<html>
<head>
<title>IE中自动安装根证书</title>
</head>

<body>

IE中使用XEnroll.InstallPKCS7自动安装根数字证书<br/>备注:这里测试的根证书采用Base64编码 X.509格式(CER)<br/>
<%     
String strCert = "";
try {  
    String realPath = this.getClass().getClassLoader().getResource("RootAgency.cer").getPath();
    File file = new File(realPath);
    if (!file.exists()) {
        out.println("<HTML><BODY><P>");
        out.println("<h2>根证书文件不存在</h2> <br/>");
        System.out.println(realPath);
        out.println("</P></BODY></HTML>");
        out.flush();
        out.close();
    }else{
    	
    	FileInputStream fis = null;
		try {
			fis = new FileInputStream("D:/xinocom.cer");
			int len = fis.available();
			byte[] usercert = new byte[len];
			fis.read(usercert);
			fis.close();
			BASE64Encoder encl = new BASE64Encoder();
			strCert = encl.encode(usercert);
			strCert = "-----BEGIN CERTIFICATE-----" + strCert;
			strCert += "-----END CERTIFICATE-----";
			System.out.println(strCert);
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
    	
        out.print("<textarea rows=\"\" cols=\"\" id = \"mycert\">" + strCert + "</textarea>");
        
    }
}catch(Exception e){          
    out.println("<HTML><BODY><P>");
    out.println("<h2>读取证书文件出错</h2> <br/>");
    out.println(e.toString());
    out.println("</P></BODY></HTML>");
    out.flush();
    out.close();
}

String Agent = request.getHeader("User-Agent");
StringTokenizer st = new StringTokenizer(Agent,";");
st.nextToken();
String userBrowser = st.nextToken();
String userOS = st.nextToken(); 
out.println("你的操作系统为:");
out.println(userOS);
String activexLib="XEnroll";

//检查是否是Windows Vista,Windows 2008,Windows 7,在Vista,Windows 2008,Windows 7上,需要使用 CertEnroll.dll
//Windows 2008 Server, IE7 User-Agent header: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;...
//Windows Vista, IE7 User-Agent header: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;...
//Windows 7,IE8 User-Agent header: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;...

if(userOS.equals("Windows NT 6.0") || userOS.equals("Windows NT 6.1")|| userOS.equals("Windows NT 5.2"))
    activexLib="CertEnroll";
%>

<% if(activexLib.equals("XEnroll")) 
{ %>
    <object id="XEnroll" classid="clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1" codebase="xenroll.dll"></object>
    <script>
      document.write("正在安装证书");
      var enroll = document.getElementById("XEnroll");  
      var cer = document.getElementById("mycert").innerText;
      enroll.InstallPKCS7(cer);
      document.write("<br>证书安装成功");
	</script>
<% } else {%>
	//win7没测试过,因为没环境,自己尝试
    <object id="objCertEnrollClassFactory" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>    
    <script>
    function InstallCert() 
    {        
        document.write("<br>开始安装");                      
        try {
            var certEnroll = document.getElementById("objCertEnrollClassFactory");
            var objEnroll = certEnroll.CreateObject("X509Enrollment.CX509Enrollment")
            var cer = document.getElementById("mycert").innerText;
            objEnroll.Initialize(1); // ContextUser
            objEnroll.InstallResponse(4, sPKCS7, 6, ""); // AllowNone = 0, XCN_CRYPT_STRING_BASE64_ANY = 6
            document.write("<br>证书安装成功");  
        }
        catch (ex) {
            document.write("<br>" + ex.description);
            return false;
        }

    return true;
    }

    InstallCert(); 

    </script>

<% } %>
</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值