IE中自动安装根数字证书

Share

上一篇日志中介绍了tomcat+openssl实现双向认证,但第6步需要用户手工将个人证书及根证书手工导入到IE中去。
这里介绍一种自动导入根证书到IE中去的方法。

  • 只自动导入根证书,在原有那篇文章的基础上不需要做什么改动,直接读出根证书内容即可实现。
  • 即自动导入根证书,又要自动导入个人证书,这种情况下,创建证书请求的工作要交给IE控件完成。

微软的ICEnroll接口中提供了createPKCS10acceptPKCS7方法来创建证书,安装证书功能。
在ICEnroll3接口中提供了InstallPKCS7,可以使用它来安装根证书。

只自动导入根证书。

<%
   StringTokenizer st = null;
   String line = null;

   // ————————————————————- 返回CA证书内容 >>>
   String server_cert = "开始用openssl生成的根证书内容";
   if (StringUtils.isBlank(server_cert)) {
       throw new BusinessException("读取CA证书失败");
   }

   // 这里的这些操作,是为了生成vbscript中证书内容的变量定义
   String pkcs7ca = "sPKCS7ca=\"\" & vbcrlf\r\n";
   st = new StringTokenizer(server_cert, "\r\n");

   while (st.hasMoreTokens()) {
       line = st.nextToken();
       if (line.equals("\r\n"))
           continue;
       pkcs7ca += "sPKCS7ca=sPKCS7ca & \"" + line + "\" & vbcrlf\r\n";
   }
%>

<OBJECT id=XEnroll classid=clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1 codebase="xenroll.dll"></OBJECT>

<script type="text/vbscript">
   ON ERROR resume next
   <%=pkcs7ca%>
   XEnroll.InstallPKCS7 sPKCS7ca
   If err.number = 438 then
       msgbox err.description & err.number
   Elseif err.number <> 0 then
       msgbox err.description & err.number
   Else
       msgbox "根证书安装成功"
   End If
</script>