用EJBCA构建自己的CA系统

随着互联网络应用的不断普及, 以及电子商务、电子政务、网上银行、网上证券等金融业网上交易业务的飞速发展,网络安全,特别是互联网通信的安全性令人瞩目。 互联网络中信息传递的安全问题日益受到人们的重视。人们在不断探求互联网络中安全问题的解决方法, 从而确保互联网络中信息传递的保密性、完整性、非否认性, 以使互联网络能够为人们提供更加广泛便捷的服务。PKI技术正是解决互联网络安全问题的良方, 越来越多的人开始关注它, 研究它。目前PKI 已经是公认的保障网络社会安全的最佳体系。

PKI(Public Key Infrastructure )即"公钥基础设施"较好地解决了Web 应用中的机密性、完整性、真实性和抗否认性等安全问题。但在Web 环境下,还必须证明公钥与其持有者之间的映射关系,并认证密钥持有者的身份。数字证书很好地解决了这个问题。同样,在分布式环境下,还应该建立起安全、有效的证书管理机制,实现证书的生成、存储、分发、吊销等操作,从而为Web 应用乃至网络通信提供必要的密钥和证书服务。公钥基础设施PKI 就是这样的一种提供安全服务的基础设施。PKI 的核心是对证书及其公/私钥对的管理。同时,PKI 也代表着一种分布式的信任模型关系,它首先要选择或定义证书格式及其操作过程,其次需要明确证书签发机构或个人之间的信任关系。

EJBCA 就是这样一个针对PKI 证书体系企业级的开源解决方案。它基于J2EE 技术,提供了一个强大的、高性能并基于组件的CA 体系。EJBCA 兼具灵活性和平台独立性,能够独立使用,也能和任何J2EE 应用程序集成。

1 绪 论

1.1 PKI基础

1.1.1 概述

PKI 是“Public Key Infrastructure”的缩写, 通常被译为“公钥基础设施”[1]。简单地说, PKI 技术就是使用公开密钥技术和数字证书来提供信息安全服务的基础设施。众所周知, 公开密钥技术是目前应用最广泛的一种加密技术, 其技术核心是非对称加密技术, 即使用公私密钥对,每对中的公私密钥是一一对的, 并且由其中任意一个密钥加密的文件, 只能由相对应的另一个密钥才能解密。在实际使用中公钥是公开的, 任何人都可以拥有; 而与其对应的私钥是唯一的,只能由所有者保管、使用。通过使用公开密钥技术, 我们可以实现身份认证,数保密等功能。但是为了确保用户的身份及其所持有密钥的正确匹配, 我们需要一个值得信赖而且独立的第三方机构充当认证中心CA(CertificationAuthority) 来确认公钥拥有人的真正身份。如同我们现实中使用的身份证一样, 认证中心发放一种叫"数字证书"的身份证明。这个数字证书包含了用户身份的部分信息及用户所持有的公钥。认证中心利用自己的私钥为每一个数字证书加上数字签名, 从而保证每个数字证书的权威性。每个用户通过证书及唯一拥有的私钥, 就可以在互联网络中实现身份识。

1.1.2 PKI现状

自1976年第一个正式的公共密钥加密算法诞生后,上世纪八十年代初期出现了非对称密钥密码体制,即公钥基础设施(PKI),但是前期一直处于探索发展阶段,直到最近几年,国外的PKI应用才开始快速的发展。我国引入PKI已经有五六年时间,作为一项与电子商务电子政务的发展密切相关的信息安全的新技术和基础设施,PKI受到业界的青睐和关注,在短期内涌现了大批以PKI技术产品为主业的安全技术企业,PKI的概念和应用得到了一定范围的普及,PKI建设取得的一定成就。引用中国金融认证中心总经理刘大隆的话是“奠定了技术基础,形成了一定的规模,积累了运营管理经验,探索了应用模式,培育了专业人才” 。然而,随着网络经济的回归理性,PKI建设也暴露了不少问题。用一句话来描述PKI的现状与未来就是:前途是光明的,道路是曲折的。

1.1.3 PKI技术的匮乏

众所周知, PKI 公钥基础设施是目前比较成熟、完善的互联网络安全解决方案。但PKI 实施起来比较繁琐, 并且当前实现PKI 的商用软件价格较为昂贵, 这都阻碍了PKI 的广泛应用。但是由于我国发展的晚,所以和发达国家在PKI方面的发展差距还很大。尤其是在民用领域更是匮乏。目前对CA的研究主要倾向于理论介绍,缺少对CA具体的应用研究,其中原因主要在于商业的认证中心在国内还不太成熟,向国外申请又太贵。若用Windows 来自己建立CA中心,同样也主要是理论介绍,而且用Windows 建立的CA 封装了其内部实现细节,不够灵活,可移植性差,而建立一个安全、灵活且具有实际应用价值的CA是实际搭建安全电子商务平台的核心。EJBCA 参照了Java 安全解决方案,使用纯Java语言搭建的一个CA 平台,从而可以做到跨平台使用,另外,EJBCA还集成了注册(RA)、证书发布等功能,基本实现了CA的全部功能。

1.2 PKI国内外研究现状与发展

1.2.1 PKI在欧美的发展

PKI是建立公钥加密技术基础之上的,PKI随着加密技术的发展而前进。1976年,美国的密码学专家Diffie和Hellman提出了著名的D—H密钥分发体制,第一次解决了不依赖秘密信道的密钥分发问题,允许在不安全的媒体上双方交换信息,安全地获取相同的用于对称加密的密钥,公钥则在电话簿中公布。1978年Kohnfelder提出了Certificate Agency(CA认证机构)的概念,在CA集中式管理的模式下,公钥以CA证书形式公布于目录库,私钥仍以秘密(物理)信道分发。1991年相继出现了PGP、PEM,第一次提出密钥由个人生成的分散式体制,以不传递私钥的方式避开了秘密信道。1996年出现SPKI解决方案。PKI设立了CA认证中心,以第三方证明的方式将公钥和标识绑定,并创立了层次化CA架构。

美国作为最早提出PKI概念的国家,于1996年成立了美国联邦PKI筹委会,其PKI技术在世界上处于领先地位,与PKI相关的绝大部分标准都由美国制定。2000年6月30日,美国总统克林顿正式签署美国《全球及全国商业电子签名法》,给予电子签名、数字证书以法律上的保护,这一决定使电子认证问题迅速成为各国政府关注的热点。美国联邦政府的PKI体系建设形成了以下信任层次和信任域:

· 策略批准机构(PAA):这是联邦PKI的根节点,负责批准二级节点的安全策略;

· 策略产生机构(PCA):也叫策略认证机构,是联邦PKI的二级节点,定义下级产生公钥证书节点的安全策略;

· 认证机构(CA):是联邦PKI的三级节点,依据PCA定义的安全策略,为下级用户(可能是下级CA)签发和维护数字证书、CRI‘结构等;

· 用户:数字证书及相应私有密钥的持有害,用户利用数字证书和私有密钥进行数据保护、身份鉴别等安全行为。

除上述层次外,联邦PKI体系还包含一个目录系统,用于存放有效证书和已经作废的证书。美国联邦政府在研究各联邦政府已建成的PKI体系的基础之上,为解决各种不同认证系统之间的交叉认证问题,于1998年提出了桥接CA的概念,旨在解决了不同信任域之间的信息传递问题,避免形成信任孤岛。

加拿大在1993就已经开始了政府PKI体系雏形的研究工作,到2000年已在PKI体系方面获得重要的进展,已建成的政府PKI体系为联邦政府与公众机构、商业机构等进行电子数据交换时提供信息安全的保障,推动了政府内部管理电子化的进程。加拿大与美国代表了发达国家PKI发展的主流。

欧洲在PKI基础建设方面也成绩显著。已颁布了93/1999EC法规,强调技术中立、隐私权保护、国内与国外相互认证以及无歧视等原则。为了解决各国PKI之间的协同工作问题,它采取了一系列措施:积极资助相关研究所、大学和企业研究PKI相关技术;资助PKI互操作性相关技术研究,并建立CA网络及其顶级CA。并于2000年10月成立了欧洲桥CA指导委员会,于2001年3月23日成立了欧洲桥CA。

1.2.2 PKI在亚洲的发展

在亚洲,韩国是最早开发PKI体系的国家。韩国的认证架构主要分三个等级:最上一层是信息通讯部,中间是由信息通讯部设立的国家CA中心,最下一级是由信息通讯部指定的下级授权认证机构(LCA)。日本的PKI应用体系按公众和私人两大类领域来划分,而且在公众领域的市场还要进一步细分,主要分为商业、政府以及公众管理内务、电信、邮政三大块。PKI技术在整个亚洲虽然有了一定的发展,但处于一个相对落后的水平,还存在着许多亟需解决的问题。

此外,许多国外的企业开展了PKI的研究。较有影响力的企是有Baltimore和Entrust,其产品如Entrust/PKI 5.0,已经能较好地满足商业企业的实际需求。VeriSign公司也已经开始提供PKI服务,Internet上很多软件的签名认证都来自VeriSign公司。

1.2.3 PKI在中国

我国的PKI技术从1998年开始起步,由于政府和各有关部门近年来对PKI产业的发展给予了高度重视,2001年PKI技术被列为“十五”863计划信息安全主题重大项目,并于同年10月成立了国家863计划信息安全基础设施研究中心。国家计委也在制定新的计划来支持PKI产业的发展,在国家电子政务工程中明确提出了要构建PKI体系。目前,我国已全面推动PKI技术研究与应用。2004年8月28日,十届全国人大常委会第十一次会议28日表决通过了电子签名法,规定电子签名与手写签名或者盖章具有同等的法律效力。这部法律的诞生将极大的推动我国的PKI建设。

自从1998年国内第一家以实体形式运营的上海CA中心(SHECA)成立以来,PKI技术在我国的商业银行、政府采购以及网上购物中得到广泛应用。目前,国内的CA机构分为区域型、行业型、商业型和企业型四类;截至2002年底,前三种CA机构已有60余家,58%的省市建立了区域CA,部分部委建立了行业CA。其中全国性的行业CA中心有中国金融认证中心CFCA、中国电信认证中心CTCA等。区域型CA有上海CA中心、广东电子商务认证中心等。但是,我国的PKI建设还是处于起步阶段,存在不少亟需解决的问题,主要是以下几个方面:

·缺乏国家统一指导,管理问题突出,至今尚未建立权威的管理部门。分散的CA规模小,利用率低,低估了建设CA的社会责任和经济责任。

·各种来源不同、层次不齐的技术供应厂商大量涌现,亟待研究具有我国自主知识产权的基础技术和标准体系。在尚未确立国家标准的情况下,各家在建立CA的过程中对技术标准和管理规范的理解有较大差距,并且各家CA基本处于互相分割状态,成为互不关联的信任孤岛,尚未形成完整的国家PKI体系。

·缺乏有力的法律支持。可喜的是电子签名法的确立让我们看到了希望。

我国正在拟订全面发展国内PKI建设的规则,其中包括国家电子政务PKI体系和国家公共PKI体系的建设。从2003年1月7日在京召开的中国PKI战略发展与应用研讨会可知,我国将组建一个国家PKI协调管理委员会来统管国内的PKI建设,由它来负责制订国家PKI管理政策、国家PKI体系发展规划,监督、指导国家电子政务PKI体系和国家公共PKI体系的建设、运行和应用。据有关机构预测,电子政务的外网PKI体系建设即将展开,在电子政务之后,将迎来电子商务这个PKI建设的更大商机,中国的PKI建设即将迎来大发展。

1.2.4 PKI的应用前景

由于PKI是重大国家利益和网络经济的发展的制高点,也是推动互联网发展、保障事务处理安全、推动电子政务、电子商务的支撑点。因此,建立健全的国家PKI体系,将有力地促进我国电子政务以及整个国家信息化的发展。这样,政府和企业都十分重视PKI建设,PKI应用有着巨大的发展前景。

PKI支持SSL、IP over VPN、S/MIME等协议,这使得它可以支持加密Web、VPN、安全邮件等应用。而且,PKI支持不同CA间的交叉认证,并能实现证书、密钥对的自动更换,这扩展了它的应用范畴。一个完整的PKI产品除主要功能外,还包括交叉认证、支持LDAP协议、支持用于认证的智能卡等。此外,PKI的特性融入各种应用(如防火墙、浏览器、电子邮件、群件、网络操作系统)也正在成为趋势。基于PKI技术的IPSec协议,现在已经成为架构VPN的基础。它可以为路由器之间、防火墙之间,或者路由器和防火墙之间提供经过加密和认证的通信。目前,发展很快的安全电子邮件协议是S/MIME,S/MIME是一个用于发送安全报文的IETF标准。它采用了PKI数字签名技术并支持消息和附件的加密,无须收发双方共享相同密钥。目前该标准包括密码报文语法、报文规范、证书处理以及证书申请语法等方面的内容。基于PKI技术的SSL/TLS是互连网中访问WEB服务器最重要的安全协议。当然,他们也可以应用于基于客户机/服务器模型的非WEB类型的应用系统。SSL/TLS都利用PKI的数字证书来认证客户和服务器的身份。

随着Internet应用的不断普及和深入,政府部门需要PKI支持管理;商业企业内部、企业与企业之间、区域性服务网络、电子商务网站都需要PKI的技术和解决方案;大企业需要建立自己的PKI平台;小企业需要社会提供商业PKI服务。此外,作为PKI的一种应用,基于PKI和虚拟专用网市场也随着B2B电子商务的发展而迅速膨胀。总的来说,PKI的市场需求非常巨大,基于PKI和应用包括了许多内容,如WWW安全、电子邮件安全、电子数据交换、信用卡交易安全、VPN。从行业应用来看,电子商务、电子政务、远程教育等方面都离不开PKI技术。

随着PKI技术应用的不断深入,PKI技术本身也在不断发展与变化,比如近年来比较重要的变化有属性证书、漫游证书、无线PKI(WPKI)等。随着PKI技术的应用与发展,无论是在有线网络,还在无线世界,PKI必将发挥巨大作用。

1.3 本设计所研究工作及成果和意义

针对目前PKI在国内的应用不够丰富,而商业化的CA一般费用比较昂贵,对广大有兴趣研究PKI的爱好者来说要有研究环境比较困难。特此介绍开源软件EJBCA,对它的基本功能进行介绍。同时详细写出利用EJBCA构建一个基本完整CA的过程。供以后研究PKI的人参考借鉴,普及PKI知识。着重介绍动手过程,目前理论性的研究很多,但是具体怎么建立一个CA的过程还是很少。本文的目的在于探索一些常用的PKI过程。让人在看完本文后能够根据本文的指引,能实际的构建出一个能与自己所需系统集成的CA系统。旨在普及PKI建设的动手能力。

本设计研究工作和成果包括以下几个方面:

1)研究PKI的主要内容,实例EJBCA的组成,各部分功能。

2)动手构建一个用EJBCA构建的CA系统,生成构建说明书。

3)对EJBCA的安全性等进行分析。

2  PKI的标准内容

一个标准的PKI域必须具备以下主要内容。

2.1 认证机构CA(Certificate Authority)[2]

CA是PKI的核心执行机构,是PKI的主要组成部分,业界人士通常称它为认证中心。从广义上讲,认证中心还应该包括证书申请注册机构RA(Registration Authority),它是数字证书的申请注册、证书签发和管理机构。图1是中国金融CA和RA结构图。

图1

wps_clip_image-28931[3][1]wps_clip_image-13618[3][1]

CA的主要职责包括:

验证并标识证书申请者的身份。对证书申请者的信用度、申请证书的目的、身份的真实可靠性等问题进行审查,确保证书与身份绑定的正确性。

确保CA用于签名证书的非对称密钥的质量和安全性。为了防止被破译,CA用于签名的私钥长度必须足够长并且私钥必须由硬件卡产生,私钥不出卡。

管理证书信息资料。管理证书序号和CA标识,确保证书主体标识的惟一性,防止证书主体名字的重复。在证书使用中确定并检查证书的有效期,保证不使用过期或已作废的证书,确保网上交易的安全。发布和维护作废证书列表(CRL),因某种原因证书要作废,就必须将其作为“黑名单”发布在证书作废列表中,以供交易时在线查询,防止交易风险。对已签发证书的使用全过程进行监视跟踪,作全程日志记录,以备发生交易争端时,提供公正依据,参与仲裁。

由此可见,CA是保证电子商务、电子政务、网上银行、网上证券等交易的权威性、可信任性和公正性的第三方机构。

图2是CA的结构功能图:

wps_clip_image-18724[3][1] 图2CA的功能结构图

 

CA模式的主要流程:

1.证书所有者向证书注册机构提出申请。

2.证书注册机构对证书所有者的身份确认。

3.证书注册机构向证书认证机构提出发行申请。

4.证书认证机构对证明书所有者发行证明书。

5.证书认证机构在仓库里面公开发行的证明书和失效队列。

6.证书所有者和证书信赖者通信。

7.证书信赖者通过仓库来检验证书的有效性。然后利用证书就可以验证电子签名和进行数据加

2.2 证书和证书库

证书是数字证书或电子证书的简称,它符合X.509标准,是网上实体身份的证明。证书是由具备权威性、可信任性和公正性的第三方机构签发的,因此,它是权威性的电子文档。

证书库是CA颁发证书和撤消证书的集中存放地,它像网上的“白页”一样,是网上的公共信息库,可供公众进行开放式查询。一般来说,查询的目的有两个:其一是想得到与之通信实体的公钥;其二是要验证通信对方的证书是否已进入 “黑名单”。证书库支持分布式存放,即可以采用数据库镜像技术,将CA签发的证书中与本组织有关的证书和证书撤消列表存放到本地,以提高证书的查询效率,减少向总目录查询的瓶颈。

2.3 密钥备份及恢复

密钥备份及恢复是密钥管理的主要内容,用户由于某些原因将解密数据的密钥丢失,从而使已被加密的密文无法解开。为避免这种情况的发生,PKI提供了密钥备份与密钥恢复机制:当用户证书生成时,加密密钥即被CA备份存储;当需要恢复时,用户只需向CA提出申请,CA就会为用户自动进行恢复。

2.4  密钥和证书的更新

一个证书的有效期是有限的,这种规定在理论上是基于当前非对称算法和密钥长度的可破译性分析;在实际应用中是由于长期使用同一个密钥有被破译的危险,因此,为了保证安全,证书和密钥必须有一定的更换频度。为此,PKI对已发的证书必须有一个更换措施,这个过程称为“密钥更新或证书更新”。

证书更新一般由PKI系统自动完成,不需要用户干预。即在用户使用证书的过程中,PKI也会自动到目录服务器中检查证书的有效期,当有效期结束之前,PKI/CA会自动启动更新程序,生成一个新证书来代替旧证书。

2.5 证书历史档案

从以上密钥更新的过程,我们不难看出,经过一段时间后,每一个用户都会形成多个旧证书和至少一个当前新证书。这一系列旧证书和相应的私钥就组成了用户密钥和证书的历史档案。

记录整个密钥历史是非常重要的。例如,某用户几年前用自己的公钥加密的数据或者其他人用自己的公钥加密的数据无法用现在的私钥解密,那么该用户就必须从他的密钥历史档案中,查找到几年前的私钥来解密数据。

2.6 客户端软件

为方便客户操作,解决PKI的应用问题,在客户装有客户端软件,以实现数字签名、加密传输数据等功能。此外,客户端软件还负责在认证过程中,查询证书和相关证书的撤消信息以及进行证书路径处理、对特定文档提供时间戳请求等。

2.7 交叉认证

交叉认证就是多个PKI域之间实现互操作。交叉认证实现的方法有多种:一种方法是桥接CA,即用一个第三方CA作为桥,将多个CA连接起来,成为一个可信任的统一体;另一种方法是多个CA的根CA(RCA)互相签发根证书,这样当不同PKI域中的终端用户沿着不同的认证链检验认证到根时,就能达到互相信任的目的。

本章小结

本章主要介绍了PKI的主要组成,以及各个部分的主要功能。

3  EJBCA的主体功能结构

3.1 EJBCA 包含的内容

EJBCA 是一个完整功能的证书认证程序,完全用Java 编写,使用J2EE(Java2 Enterprise Edition,Java2 企业版)技术。它建造在J2EE 平台之上,是一个开放的、健壮的、高性能的、平台独立的、灵活的和基于组件的CA,可以被单独使用或集成到其它J2EE 应用程序中,并且它还提供了一个灵活强大的基于Web 的用户图形界面。由于它实现了WPKI 中的几乎所有重要的部件,比如RA(Registration Authority,注册中心)、CA(Certification Autohrity,认证中心)、CRL(Certification RemoveList,证书撤销列表)和证书存储数据库等,因此得到了广泛的应用。

3.2 EJBCA 框架模型

EJBCA 系统模型包括注册机构RA、CA 服务器、LDAP目录服务器和数据库服务器等

如下图所示:

wps_clip_image-19580[3][1]

安全服务器面向普通用户,用于提供证书申请、浏览、证书撤消列表以及证书下载等安全服务。安全服务器与用户的通信采取安全信道方式(如SSL 的方式)。用户首先得到安全服务器的证书(该证书可由EJBCA 中的CA 颁发),然后用户与服务器之间的所有通信,包括用户填写的申请信息以及浏览器生成的公钥均以安全服务器的密钥进行加密传输,只有安全服务器利用自己的私钥解密才能得到明文,这样可以防止其他人通过窃听得到明文,从而保证了证书申请和传输过程中的信息安全性。

CA 服务器:EJBCA 的CA 服务器是整个证书机构的核心,EJBCA 的CA 服务器可建立根CA 密钥对、存储证书、发布证书列表、建立子CA、发送证书请求、负责证书的签发等功能。建立CA 服务器首先产生自身的私钥和公钥(密钥长度至少为1024 位),然后生成数字证书,并且将数字证书传输给安全服务器。CA 还负责为操作员、安全服务器、子CA 及注册机构服务器生成数字证书。安全服务器的数字证书和私钥也需要传输给安全服务器。CA 服务器是整个结构中最为重要的部分。

注册机构RA:登记中心服务器面向登记中心操作员,在EJBCA 体系中,用户注册操作简单,RA 管理员可直接通过命令行注册,另外还通过浏览器方便地管理注册用户的添加、删除、显示、吊销等操作。RA 在CA 体系结构中起承上启下的作用,一方面向CA 转发安全服务器传输过来的证书申请请求,另一方面向LDAP 服务器和安全服务器转发CA 颁发的数字证书和证书撤消列表。

LDAP 服务器:LDAP 服务器提供目录浏览服务,负责将注册机构服务器传输过来的用户信息以及数字证书加入到服务器上。这样其他用户通过访问LDAP 服务器就能够得到其他用户的数字证书。在EJBCA 体系里,LDAP 服务器的配置是可选的,通过在配置文件的修改可使证书、证书列表放在相匹配的LDAP 服务器上。

数据库服务器:数据库服务器是认证机构中的核心部分,用于认证机构中数据(如密钥和用户信息等)、日志合统计信息的存储和管理。

3.3 EJBCA 的构架体系

完整的部署方案

wps_clip_image-8919[3][1]

EJBCA 本身对负载均衡、高可用等有较好的支持,完整的部署方案描述了典型的完整的部署方案的部署形式。将RA和目录服务器放置于防火墙保护的内部,可以提高安全性,有效的将服务操作和数据存储分开。

CA 与RA 分离(External RA )部署模式

wps_clip_image-25803[3][1]

CA 与RA 分离(External RA )的部署模式,还可以退化成CA 与RA 部署在一起的模式,初期在安全性要求不高的情况下,基于成本及管理的方便,可以采用CA 与RA 一体化部署的模式。

在本次演示中我们采用CA与RA一起部署的方法,并且本机还充当Server服务器。

本章总结:

EJBCA是典型的三层结构的组合,客户端,服务端,和数据端。标准部署的时候服务器和数据分开部署并且应该在安全的环境中,而客户端可以在外部。在要求高的地方应该把RA数据和CA中心分开部署,而成要求低时可以把服务端和数据端部署在一个服务器上。

4 EJBCA的环境搭建

4.1 软件环境

1.jdk 1.5 下载地址:http://java.sun.com/

2.jboss-4.2.2.GA 下载地址:http://www.jboss.com/

3.jce_policy-1_5_0:下载地址:http://java.sun.com/

4.apache-ant-1.7.0:http://ant.apache.org/

5.ejbca 3.4.5: 下载地址:http://ejbca.sourceforge.net

6.oracle 10G:

7.ojdbc14.jar,classes12.jar:

约定 EJBCA 及相关软件都安装在C:\biyesheji\目录下。

4.2 用EJBCA搭建自己CA中心

4.2.1 jdk的安装

本次构建中我使用的jdk 1.5,在读者自己搭建的时候应遵循向上兼容的原则。版本一定要比先前安装的高以兼容以前的jdk版本高。如果以前安装的要比现在版本高得先卸载了,并清除环境变量,重新安装。

注意:在进行EJBCA搭建的时候一定要把JAVA_HOME下的jre目录下的lib下的security包中的内容用java安全无限包替换,就是上面的jce_policy-1_5_0;相应的如果是JDK1.6的话就要用jce_policy-1_6_0来替换;这样做的目的是撤除java虚拟机的安全包限制可以进行更大位数的运算满足安全长度位数限制。

JCE(Java 密码扩展)为应用程序采用Java 加密和数字签名提供了一种统一和一致的方式。

如果在EJBCA 中使用高强度的加密方式或者当数字证书的用户密码大于7 个字符时候,必须

安装JCE 包,否则在ejbca 中会报类似如下的错误:

Exception:

java.io.IOException: exception encrypting data ‐ java.security.InvalidKeyException: Illegal key size

at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.wrapKey(JDKPKCS12KeyStore.java:602)

at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineStore(JDKPKCS12KeyStore.java:1108)

at java.security.KeyStore.store(KeyStore.java:1117)

at org.ejbca.ui.web.pub.CertReqServlet$RequestInstance.sendP12Token(CertReqServlet.java:574)

at org.ejbca.ui.web.pub.CertReqServlet$RequestInstance.doPost(CertReqServlet.java:273)

at org.ejbca.ui.web.pub.CertReqServlet.doPost(CertReqServlet.java:726)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)

at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)

at java.lang.Thread.run(Thread.java:619)

JDK的安装就不做介绍了。重点介绍一下环境变量的设置,环境变量一旦没设好就永远走不通。环境变量的设置如下由于java具有跨平台性,所以安装在linux其实和windows下差不多。Windows环境下安装如下:

wps_clip_image-23890[3][1]

wps_clip_image-20552[3][1]

远程调试JRE的配置:

wps_clip_image-23224[3][1]

把JAVA_HOME和JRE_HOME都添加到PATH下:

wps_clip_image-26271[3][1]

打开命令行窗口敲入javac出现如下画面则安装成功,否则检查前面的配置:

wps_clip_image-440[3][1]

还可以用java -verbose查看加载的是哪个java版本和程序。

4.2.2 JBoss的安装

JBoss只要上官方网下一个,但是使用ejbca_3_9_*以上的都要JBoss 4.2以上的版本,4.2.3以上如果是用JDK1.5的话还要安装补丁包,按时用JDK1.6就没事了。我们下载的JBoss包只要解压缩就可以直接用。我们直接设置环境变量就行了如下图;

wps_clip_image-29358[3][1]

再往PATH中添加%JBOSS_HOME%\bin就行。

测试cd到JBoss目录下执行run命令看JBoss的启动信息,要看到JBoss启动没有什么错误才行。启动情况图下图:

wps_clip_image-7419[3][1]

由于与Orcle同用所以要把JBoss的服务端口换一下,我的是换成80的;我的目录是在C:\biyesheji\jboss-4.2.2.GA\server\default\deploy\jboss-web.deployer,只需要换成对应的目录找到其中的Server.xml文件更改如下段:

<!-- A "Connector" represents an endpoint by which requests are received

and responses are returned. Documentation at :

Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

Java AJP  Connector: /docs/config/ajp.html

APR (HTTP/AJP) Connector: /docs/apr.html

Define a non-SSL HTTP/1.1 Connector on port 8080

-->

<Connector port="8080" address="0.0.0.0"

maxThreads="250" maxHttpHeaderSize="8192"

emptySessionPath="true" protocol="HTTP/1.1"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" />

把其中的8080改成自己想用的端口就行。我的是改成下面这样:

<Connector port="80" address="0.0.0.0"

maxThreads="250" maxHttpHeaderSize="8192"

emptySessionPath="true" protocol="HTTP/1.1"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" />

否则会出现如下图所示的错误,显示8080端口被占用。

wps_clip_image-6838[3][1]

修改jboss启动参数

cd到jboss‐4.2.3.GA/bin/run.conf,修改如下:

JAVA_OPTS="‐Xms1024m –Xmx1024m –server –XX:MaxPermSize=512m

–XX:PermSize=256m ‐XX:MaxNewSize=512m ‐Dsun.rmi.dgc.client.gcInterval=3600000

‐Dsun.rmi.dgc.server.gcInterval=3600000"

由于在一些平台上ejbca 和jboss  版本的组合方式在安装时候存在一些问题,推荐使用

jboss 4.2.2 + ejbca3.9.5版本。

4.2.3 Ant安装

Ant的安装其实和jboss是一样的,上ant的官方网下一个ant,然后配置一个环境变量和前面两步操作是一样的,就不再赘述。

修改ant启动参数在环境变量中加入如下变量:

wps_clip_image-3856[3][1]

在命令行下键入ant出现如下画面就说明安装成功:

wps_clip_image-32533[3][1]

有其他的情况就检查前面的步骤。

修改jboss和ant的启动的参数都是因为ejbca要进行大数运算需要大内存,要不会使效率变的很低。运行的时间长。

4.2.4 Orcle的安装

安装Orcle没什么特别要求,要注意的是看以前有没有安装过。如果有安装的过的话,一定是要正常卸载的,要不然会安装不上。如果出现了安装不上的状况,就直接重装一个纯净的系统好多了。网上也有办法清理可是方法很复杂,实现起来比较麻烦。

需要特别注意的是,在本次构架中不要安装Orcle9i因为9i对blog和clog型的数据操作有bug即使是更换驱动程序也解决不了,这点我已经我试过了。安装Orcle只要按默认的安装就行了,设置实例名和密码就搞定。但是Orcle的linux的安装有些麻烦。参照Orcle的官方网一步步的安装就行。

在数据库中创建ejbca用户,用Plsql连上数据库,执行下面的脚本:

CREATE TABLESPACE EJBCA DATAFILE 'EJBCA.dbf' SIZE 100m ;

create user EJBCA identified by "EJBCA" default tablespace users temporary tablespace temp profile default;

grant aq_administrator_role to EJBCA with admin option;

grant dba to EJBCA with admin option;

grant unlimited tablespace to EJBCA with admin option;

然后换ejbca的用户名,密码默认ejbca登上,如果登录成功就确认创建工作完成。

4.2.5 EJBCA的安装

4.2.5.1 环境配置:

添加一个环境变量如下:

wps_clip_image-18108[3][1]

添加ejbca的应用目录,这个目录是ejbca用来发布应用的目录必须用来发布的jboss目录:

wps_clip_image-27603[3][1]

4.2.5.2 配置文件的修改

找到EJBCA的conf目录下面有很多*.properties.sample文件

�� 修改 ejbca.propterties.sample 配置文件

内容如下:

appserver.type=jboss

appserver.home=${env.APPSRV_HOME}

java.ver=15

ca.name=Cystc Root CA

ca.dn=CN=CystcRoot CA,O=Cystc,C=CN

web.contentencoding=GBK(设置中文编码)

其他采用缺省值

改完后改名为ejbca.propterties

��  修改 database.properties.sample配置文件

内容如下:

datasource.jndi-name=EjbcaDS

datasource.jndi-name-prefix=java:/

database.name=oracle

datasource.mapping=Oracle9i

database.url=jdbc:oracle:thin:@127.0.0.1:1521:CYSTC

database.driver=oracle.jdbc.driver.OracleDriver

database.username=ejbca

database.password=ejbca

注:datasource.mapping需要选择与oracle实际版本最接近的版本。

其他采用缺省值

改完后改名为database.properties

��  修改 web.properties.sample 配置文件

内容如下:

java.trustpassword=cystcAdmin(此处的密码必须在六位以上要不生不成truststore.jks文件)

superadmin.password=cystcAdmin

httpsserver.hostname=localhost(此处的主机名是你自己部署EJBCA的主机)

httpserver.pubhttp=80(端口必须和jboss中的Server改的端口一样)

web.availablelanguages=ZH,EN,FR,IT,ES,SE(设置显示中文界面)
web.contentencoding=GBK(设置中文编码)

其他采用缺省值

改完后改名为web.properties

注意在进行web.properties的时候不要把superadmin.dn=CN=SuperAdmin改变否则在进入管理员界面的时候会出现未被授权的情况。

删除所有的ejbca\adminweb中的jsp(%EJBCA_HOME%\src\adminweb*.jsp)中的
<%@ page pageEncoding="ISO-8859-1"%>  以解决中文乱码问题,下一步也是解决此类问题。

如果要使用中文管理界面则需要修改EJBCA下\src\adminweb\WEB-INF下的web.xml文件

<env-entry>
<description><![CDATA[Defines the available languages by languagecodes separated with a comma]]></description>
<env-entry-name>AVAILABLELANGUAGES</env-entry-name>
<env-entry-value>ZH,EN</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry><env-entry>
<description><![CDATA[Default content encoding used to display JSP pages]]></description>
<env-entry-name>contentEncoding</env-entry-name>
<env-entry-value>GBK</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

<env-entry>

<description><![CDATA[Port used by EJBCA public webcomponents. i.e that doesn't require           client authentication]]></description>

<env-entry-name>PUBLICPORT</env-entry-name>

<!--此处修改端口为原来jboss的访问端口是公共页面的访问端口-->

<env-entry-value>80</env-entry-value>

<env-entry-type>java.lang.String</env-entry-type>

</env-entry>

添加数据库驱动:向\jboss-4.2.2.GA\server\default\lib目录下添加数据库的驱动包。

注意:此处添加的数据库驱动包必须是Orcle10g以上的驱动包,要不在存储blog,clog数据的时候会有BUG,出现严重错误,存储不了数据。不用Orcle9i的原因是因为用高版本的驱动包驱动Orale9i会出现连接重置的问题。

4.2.5.3 主要安装步骤:

1.windows命令cd到EJBCA_HOME目录下运行ant bootstrap命令执行ant构建。注意本步骤一定要执行成功无任何错误。还有在ejbca3.4.*和ejbca3.5.*的版本要修正一些bug才能执行成功。具体参照EJBCA官方的解释。

2.开一个新的命令行cd到JBOSS_HOME\bin目录下运行run命令启动jboss发布一下这个ejbca的工程连上数据库,然后回到第一步的命令行窗口执行ant install命令安装ejbca;

注意:在这步中如果驱动程序不对的话会出错误,推荐使用Orcle10g+classes12.jar的组合。

3.在jboss的命令行窗口中按Ctrl+C键组合停止jboss,回到ejbca窗口运行ant deploy命令。

注意:如果在web.properties 中设置的java.trustpassword 不够六位数长的话就不会再\p12文件夹下生成 truststore.jks 这样会导致发布不成功。

4.然后再回到jboss命令行窗口运行run命令,执行发布,要看着启动信息没有错误 直到启动完成截止。

Linux下的安装:

修改~/.bash_profile,内容如下:

export JAVA_HOME=/biyesheji/jdk

export JBOSS_HOME=/biyesheji/jboss‐4.2.3.GA

export APPSRV_HOME=/biyesheji/jboss‐4.2.3.GA

export J2EE_HOME=/biyesheji/jboss‐4.2.3.GA

export ANT_HOME=/biyesheji/ant

export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$JBOSS_HOME/bin:$ANT_HOME/bin:.

export EJBCA_HOME=/biyesheji/ejbca_3_9_5

export ANT_OPTS=‐Xmx640m

其他的安装都和windows下的安装差不多。

到此ejbca的安装已经完成。

4.3 重装ejbca

在测试系统中,如果要重装ejbca,请按照如下步骤重装ejbca。

重建数据库:

用PLsql以ejbca用户和密码连上数据库删除Tables下的所有表格就行。

或者直接把用户删了再重建一个也行,删用户的时候要以超级管理员登录。

清空ejbca:

ant clean

按照前面的安装步骤重新安装ejbca

ant bootstrap

当然在生产系统中就不要轻易重新安装。

本章总结:

在安装的时候要注意细节,遇到问题的时候不要急着毁了重建。在我的实践过程中就碰到了很多问题。有些看起来很容易的事情其实并不容易,一定要动手实践才能获得真正的知识。笔者遇到的主要问题有数据库的兼容问题,jboss的端口使用问题,页面语言使用的问题,证书的生成权限问题。这些在上面的书写中都做好了说明,稍加注意就行。

大部分的问题都能在官方网上找到答案网址如下:http://ejbca.sourceforge.net/

 

5 EJBCA系统使用

5.1 管理员使用指南

5.1.1 根证书的导入

首先要进入管理员页面必须在浏览器安装根证书,否则进入不到管理员用户界面。

导入证书其实很简单过程如下:

1)双击证书文件出现如下画面:

wps_clip_image-32476[3][1]

2)点击下一步:

wps_clip_image-7044[3][1]

3)点击下一步:

wps_clip_image-28215[3][1]

输入我们创建根证书时候所设的密码。启用了强私钥保护的话,以后每次使用私钥的时候都会提示输入私钥口令。安全起见不要选第二项。

4)点击下一步:

wps_clip_image-15948[3][1]

5)点击下一步:

wps_clip_image-28399[3][1]

6)点击完成会有如下画面:

wps_clip_image-19985[3][1]

这里你可以设置你自己的安全级别。

7)选定玩过后点击确定:

wps_clip_image-8822[3][1]

第一次安装时会有提示点击是:

wps_clip_image-16664[3][1]

证书导入完毕。

8)安装完成后,在“受信任的根证书颁发机构”有颁发给“Cystc Root CA“的记录“个人”中有颁发给“Cystc Super Admin”的记录。如果没有,再次手动导入。

导入完成在IE的选项里面可以看到下面的画面

wps_clip_image-32304[3][1]wps_clip_image-30365[3][1]

5.2 管理员界面介绍

5.2.1 管理员界面系统使用

访问https://localhost:8443/ejbca/adminweb/index.jsp 如果在properties中没有设置的话这里必须使用https才能进入。

wps_clip_image-20013[3][1]

上图是中文界面管理首页的主页显示,我们可以看到大部分的功能都用中文标识出来了。这样使我们管理起来比较容易。

管理员界面分为四个模块:

1)CA功能模块

2)RA功能模块

3)监察员功能模块

4)系统功能模块

5.2.2 CA功能模块使用

5.2.2.1 基本功能

在基本功能菜单中可以查看CA的状态等信息,并且可以下载证书。

wps_clip_image-21802[3][1]

5.2.2.2 CAACTIVATION

在这里可以改变CA的状态。

wps_clip_image-26267[3][1]

5.2.2.3 编辑证书模版

在这里可以编辑证书的摸版,用以生成特定的类型的证书。但是标识为Fixed的不能编辑。

wps_clip_image-4286[3][1]

5.2.2.3 编辑发布器

在本菜单下可以编辑发布器:

wps_clip_image-16866[3][1]

5.2.2.4 编辑CA

CA管理模块增加CA

本次讲解中使用的示例CA系统结构如下图

wps_clip_image-32509[3][1]

示例证书体系

示例证书体系分为3 级:

第一级:用于证书授权(Certificate Authority)

Cystc Root CA,示例 证书体系的根证书。

第二级:用于证书发放审核

CA1, CA2,实际上就是用于签发示例证书体系普通证书的CA

第三级:普通用户或商户的个人证书(未画出)

在CA功能的子目录下点击编辑CA如下图:

wps_clip_image-30856[3][1]

输入CA名单击创建:

对应的各条目选择自己需要的:

其中最主要的是主题的填写,必须是CN=  ,O= ,C= ,的格式。

签发者确定此CA的上级CA是谁,有效期的选择。其他的选择默认的就行。

wps_clip_image-20989[3][1]

创建完成后就会看到CA列表中有CA1:

wps_clip_image-10576[3][1]

添加CA2的过程也类似。

5.2.3 RA模块功能介绍

5.2.3.1 添加终端实体模版

RA功能—>编辑终端实体模版 在添加模版中输入名字点击添加:

wps_clip_image-5745[3][1]

在当前终端实体模版中选中刚才添加的模版—>点击编辑终端实体模版

wps_clip_image-23344[3][1]

主要的是在主题字段中要点击下拉列框添加CN(通用户名), UID(唯一识别符) ,O(组织)

要为那个CA添加模版就要在 莫认CA 和 可用CA 选中相应的CA。(本次中选中是CA1)

还有默认的签名格式。即默认token和可用的Tokens的选择。(本次选中的都是P12)

其他的各个选项按照自己的要求来填写即可,点击保存完成模版编辑。

5.2.3.2 增加一个CA1的普通用户

上步中我们为CA1编辑了实体模版本步中就要用到。

RA功能—>添加终端实体,添加一个CA1的普通用户 testCA1 终端实体模版选中刚才新增的CAtest End Entity Profile

Token:

P12 File用于存放个人证书/私钥,包含保护密码,存储方式为2进制形式

PEM File用于存放个人这书,不包含私钥,存放方式是ASCII形式

JKS  File如果要用于Web Service及Java程序,选用此项

wps_clip_image-30786[3][1]

5.2.3.3 增加一个CA1 (RA) 的管理员test1并且授予管理员的权限

超级管理员增加的CA1(RA)的管理员test1授予管理员权限后,test1就可以作为RA的管理员,对所属的RA用户证书注册等操作进行操作。

RA功能—>增加终端实体增加一个CA1的管理员test1类似上一步。

系统功能—>编辑管理员权限—>添加

wps_clip_image-28686[3][1]

添加完后会有下图:

wps_clip_image-10453[3][1]

点击刚刚添加的CA1 CA Administrator Group后面的ADMINS进入下图:

wps_clip_image-13933[3][1]

点击编辑访问控制规则:

wps_clip_image-23692[3][1]

返回管理员组输入test1单击添加:

wps_clip_image-22892[3][1]

添加test1的RA管理员成功。

本章总结:

本章演示了EJBCA的后台使用,添加子CA,创建用户,创建终端实体模版,创建指定模版的终端实体,创建了RA管理员并且实进行了授权分组。由于在前面的搭建中成功的使用了中文操作界面。而使得现在的操作变得比较简单易懂。通过操作讲解使大家对EJBCA的使用流程有了比较完整的了解。当然还有很多功能我没有去尝试,大家有时间可以吧环境搭起来过后一个个慢慢研究。

6 客户端使用简介

6.1 下载客户端证书

在上一张中我们在CA1下添加了一个普通的证书使用用户testCA1,也就是说testCA1可以使用证书了。现在显示获取证书的过程。

进入系统的公共页面http://localhost/ejbca,本页面主要是用来给用户来获取证书等。

点击Creat Keystore 以上章中testCA1的用户名和密码进入

wps_clip_image-16709[3][1]

wps_clip_image-10689[3][1]

Keylength是前面所设的1024位

点击OK即可获得证书。此证书在客户端安装使用。注意跟这个过程只支持一次,要想创建别的证书就必须将申请状态改变为New,已颁发的状态是不能再执行的。状态的改变要在Administrator页面的RA管理中才能实现。

6.2 基于EJBCA证书系统的应用研究

上面我们已经获取了证书,现在可以使用了。主要有两种

(1)SSL安全传输通道的实现

当用户获取了数字证书,他便可以将其用于实现与Web服务器之间的安全连接。为了实现安全连接,Web应用程序所在的服务器必须实现设置好服务器的配置文件,以支持基于数字证书的SSL安全通道。以Tomcat 6.0为例,需要对其server.xml文件进行配置。其中用到两个文件,keystoreFile和truststoreFile,它们是与根证书对应的两个文件,其中keystoreFile对应于私有密钥存储库,truststoreFile对应于信任存储库。它们从EJBCA的公共页面获得,用于服务器与浏览器链接时验证证书是否为相同CA所颁发。

当用户通过浏览器提出HTTPS访问请求后,应用服务器通过本地储存的CA信任存储库确定与用户所使用的证书是相同CA签发的,之后实现双向数据的加密传输。

(2)基于数字证书的身份认证

在通常的J2EE应用中,用户大多是使用用户名和密码方式进行用户登录验证,这种方式最大的缺点便是用户名密码易被破解或截取,而是用数字证书认证方式,则不需要担心证书被破解或者截取。当用户选择使用数字证书登录应用程序,Web应用程序端会对浏览器发出一个请求,要求提供数字证书,随后,浏览器会将其证书库中与Web应用服务器相同CA的证书列出,随后用户选取相应的证书,发送给服务器端,应用服务器获取证书后对其解析,首先是与颁发证书的CA所提供的最新CRL列表文件进行比对,如果该用户证书的序列号存在于CRL文件中,则说明给证书已作废,则该用户不能通过认证。之后再比对证书的颁发日期与有效期,如果在有效期内,则解析该证书的DN (Distinguished Name,识别名)中的Common Name属性,并将其作为当前用户的用户名予以认证并授权。

6.3 EJBCA 建立的CA 的安全性分析

EJBCA 建立的CA 安全性主要体现在两方面,一方面是EJBCA 本身的体系结构,另一方面是JCE 的安全服务提供者boubcycastle 提供的加密应用程序接口。EJBCA是一个开放源代码的项目,因此它具有公开性、开放性和灵活性,同样其对安全上的配置也很方便和灵活,可以有多种方法来保证EJBCA 安全性,比如,可以设置对其内部Bean 的访问设置权,使得仅有应用服务器上的管理员能访问到CA 中心;另外还可以对运行EJBCA 的服务器JBOSS 进行配置,使得JBOSS只用SSL 层与外部建立安全连接,从而来保证CA 的安全性。Boubcycastle 是以Java 实现的比较优秀加密算法接口,其提供的加密应用程序接口是EJBCA 安全的核心组件,因为它提供了密钥和证书的生成及证书发布等功能。boubcycastle 提供的加密应用程序接口同样是开发源代码的,因此其算法也是公开的,bouncycastle 集成了用于产生密钥对的RSA 算法,多种消息摘要算法如MD 算法、SHA-1 算法、RIPEMD-160 算法等,另外bouncycastle 还将目前安全性较高的椭圆曲线加密算法(ECC)也作为其的一个API,通过对其公开算法验证,可保证其理论上的安全性。

6.4 EJBCA研究总结

EJBCA 是一个基于组件的结构,用户甚至可以自己开发一些秘密的加密算法,并作为EJBCA 的一个组件添加到EJBCA中,使得密钥对用自己的加密算法产生,同时也可以按照X509 协议,开发自己的证书和证书列表等。另外,随着密码学的发展,可能会有更好的加密算法出现,根据EJBCA 基于组件的体系,可以很容易将新算法集成到新的组件中,并把它嵌入到EJBCA 体系中。EJBCA 装配简单、灵活、易于管理,可以通过它建立的CA方便地管理企业内部局域网的安全,并且在适当的配置之后,也可应用于电子政务和电子商务的安全构架上。EJBCA 是一个很有价值的开源系统,对于目前国内PKI 技术和产品有借鉴的意义。

来源:互联网

发表评论