`
923080512
  • 浏览: 190511 次
  • 性别: Icon_minigender_1
  • 来自: 商丘
社区版块
存档分类
最新评论

IE中自动安装根数字证书

阅读更多

 

IE中自动安装根数字证书

基本思路:

1、在XP、Windows 2003的IE上,通过XEnroll.dll控件来完成根数字证书的自动安装。

2、在Vista,Windows 2008,Windows 7 的IE上,需要使用CertEnroll.dll来自动完成根数字证书的自动安装。

3、XEnroll.InstallPKCS7只适用于自动安装根证书。XEnroll.acceptPKCS7 用于安装用户数字证书,但需要配合CSR(Certificate signing request)才能够使用。要实现自动安装用户证书:

在IE中:需要配合Enroll.createPKCS10CSR来生成CSR(Certificate signing request)

在Firefox中:需要配合使用html的keygen标签来生成CSR

4、如果只需要能够下载证书并安装,而不要在IE浏览器中完成证书注销、证书申请等功能,可以采用下载证书文件的方式,MIME Type可以采用

application/x-pkcs12、application/pkcs-12

几个与PKI证书相关的MIME Type:

application/x-x509-ca-cert、application/x-x509-user-cert、application/pkcs10、application/x-pkcs10、application/pkcs-12、

application/x-pkcs12、application/x-pkcs7-signature、application/pkcs7-mime、application/x-pkcs7-mime、

application/pkcs7-mime、application/x-pkcs7-mime、application/x-pkcs7-certreqresp、application/pkcs7-signature

  测试代码:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="java.lang.*,java.io.*" %>
<html>
<head>
<title>IE中自动安装数字证书测试</title>
</head>

<body>
IE中使用XEnroll.InstallPKCS7自动安装根数字证书<br/>
 备注:这里测试的根证书采用Base64编码 X.509格式(CER)<br/>
<%

StringBuffer server_cert =new StringBuffer();
try {
    String realPath = this.getClass().getClassLoader().getResource("liangchuan.cer").getPath();
    File file = new File(realPath);
    if (!file.exists()) {
        out.println("<HTML><BODY><P>");
        out.println("<h2>根证书文件不存在</h2> <br/>");
        out.println("</P></BODY></HTML>");
        out.flush();
        out.close();
    }else{
        BufferedReader bf=new BufferedReader(new FileReader(file));
        String line=null;
        while((line=bf.readLine())!=null)
            server_cert.append(line);

        bf.close();

    }
}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";

String sPKCS7=server_cert.toString();
%>

<% if(activexLib.equals("XEnroll"))
{ %>
    <object id="XEnroll" classid="clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1" codebase="xenroll.dll"></object>
    <SCRIPT language="VBSCRIPT">
        ON ERROR resume next
        sPKCS7 = "<%= sPKCS7 %>"
        //XEnroll.InstallPKCS7用于安装根证书。
        XEnroll.InstallPKCS7(sPKCS7)

        if err.Number <> 0 then
            if err.number = -2146885628 then
                MsgBox "Keyset does not exist"
            else
                MsgBox "证书下载时出错,错误号="&err.description
            end if
        else
            MsgBox "证书已成功装入"
        end if
</script>
<% } else {%>

//方法来源:
//http://blogs.msdn.com/alejacma/archive/2009/01/28/how-to-create-a-certificate-request-with-certenroll-javascript.aspx
//Vista下由于暂时没有测试环境,方法尚待验证

    <object id="objCertEnrollClassFactory" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>
    <script language="javascript">
    function InstallCert()
    {
        document.write("<br>Installing certificate...");
        try {
            // Variables
            var objEnroll = objCertEnrollClassFactory.CreateObject("X509Enrollment.CX509Enrollment")
            var sPKCS7 = "<%= sPKCS7 %>"
            objEnroll.Initialize(1); // ContextUser
            objEnroll.InstallResponse(0, sPKCS7, 6, ""); // AllowNone = 0, XCN_CRYPT_STRING_BASE64_ANY = 6
        }
        catch (ex) {
            document.write("<br>" + ex.description);
            return false;
        }

    return true;
    }

    InstallCert();

    </script>

<% } %>
<%
/*
out.println("用下载方式下载p12格式的文件下载后安装"); 
ClassLoader cl = this.getClass().getClassLoader();
try {
    InputStream is = cl.getResourceAsStream("liangchuan.p12");
    //response.setContentType("application/x-x509-ca-cert");
    response.setContentType("application/x-pkcs12");
    response.addHeader("Content-Disposition", "attachment; filename=liangchuan.p12");
    OutputStream os = response.getOutputStream();
    //InputStream is = new FileInputStream(fileName);
    while (is.available() > 0) {
        char c = (char) is.read();
        os.write(c);
    }
    os.flush();
    is.close(); 
} 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(); 

}
*/
%>
</body>
</html>
分享到:
评论
1 楼 zhonsir 2014-10-09  
好文章,学习中

相关推荐

    java在IE中下载证书并安装(根证书)

    总结来说,Java在IE中下载并自动安装根证书涉及到证书管理、系统API调用、安全策略等多个方面。正确理解和操作这些知识点,对于构建安全的网络环境至关重要。在实际应用中,应始终确保遵循最佳安全实践,并充分测试...

    数字证书的概念

    在某些情况下,如微软操作系统,即使用户删除了预先安装的根证书,在访问相关网站时系统也会自动恢复这些证书的信任状态。 #### 证书吊销列表(CRL) X.509标准还包括了一个证书吊销列表(CRL)实施标准,这对于...

    系统的安装与安装的注意事项.pptx

    综上所述,安装"网上出口核销报审系统"不仅需要满足特定的硬件和软件条件,还需要正确执行每一步安装过程,并确保数字证书的安装无误,这样才能保证系统在财务管理中安全、高效地运行。在日常维护中,定期检查更新和...

    (2021-2022年收藏)新图书馆无线网络接入使用说明.doc

    4. 默认情况下,数字证书会被安装到注册表中,但某些802.1x客户端可能不信任注册表中的证书,此时可能需要重新下载证书。 5. 完成安装后,可以在IE浏览器的"证书"设置中确认"SJTU.EDU.CN CA Root Certificate"证书已...

    新图书馆无线网络接入使用说明.docx

    ##### 步骤一:安装上海交通大学网络信息中心数字根证书 1. **下载证书**: - 访问提供的链接下载上海交通大学网络信息中心数字根证书。 - 下载完成后,会出现一个对话框,选择[打开]。 - 出现的新对话框中,...

    免费 SSL 安全证书

    对于有高安全需求的用户,可通过CAcert保证计划(Assurance Programme)获得更长的证书有效期、在证书中包含个人信息等额外权益。 **WebofTrust** WebofTrust是CAcert的一项独特功能,要求参与者面对面进行身份...

    IIS使用eToken实现网站CA认证登录

    网站CA认证登录是一种增强安全性的方法,它通过数字证书来验证用户的身份,从而提高系统的安全性。本文将详细介绍如何在IIS上配置eToken实现网站的CA认证登录。 #### 二、关键技术概念 1. **IIS (Internet ...

    CAu-key使用说明

    CAu-key,全称为Certification Authority User Key,是一种用于身份认证的安全设备,通常是一个物理USB设备,内含数字证书,用于保障网络通信的安全。湖南CA(湖南省数字认证服务中心)提供的统一U-KEY客户端是为了...

    邮件加密和签名的原理

    数字证书是用于在网络通信中验证一方的身份的一种电子文档,它由权威机构(CA)签发,确保了公钥所有者的身份与证书中记录的信息相匹配。 **步骤**: 1. **安装证书服务器**:在服务器上安装证书服务,例如在...

    E-CERT CONTROL MANAGER

    **E-CERT CONTROL MANAGER**是一款专门用于管理智能卡及其数字证书的应用程序。它为用户提供了对智能卡进行安全管理和使用的工具,使得个人能够有效地保护自己的数字身份。本指南将详细介绍E-CERT CONTROL MANAGER的...

    Windows Server 2008 活动目录视频课程csdn.txt

    2-9验证数字证书漫游08:16 2-10创建保存的查询02:42 2-11使用CSVDE批量导入用户05:52 2-12使用CSVDE导出域用户04:13 2-13使用CSVDE导出域用户04:13 2-14使用CSVDE导出域用户04:13 2-15查看域中内置的组02:36 2-16域...

    IIS6.0 IIS,互联网信息服务

    四、在Vista系统中安装IIS7.0相对于早先的版本,IIS 7.0 带来了许多引人注目的新特色新功能,比如基于 Microsoft .NET Framework 的全局配置文件,可简单地通过文本编辑器或 Microsoft Visual Studio 编辑;...

    青果校园兼职网,阿赛企业网站管理

    注意:根目录有空数据库,替换asaidata文件夹中的数据库即可删除搜索调试中的数据,替换后,需要从后台添加12+的产品,及其他信息方能完美显示前台页面。 ★★★★★★★★★★ 二、系统的优势 1、专业美工操刀,...

Global site tag (gtag.js) - Google Analytics