EJBCA简介

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

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

EJBCA简介
图中,安全服务器面向普通用户,用于提供证书申请、浏览、证书撤消列表以及证书下载等安全服务。安全服务器与用户的通信采取安全信道方式(如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服务器上。 数据库服务器:数据库服务器是认证机构中的核心部分,用于认证机构中数据 (如密钥和用户信息等)、日志合统计信息的存储和管理。

证书申请

当证书申请时,用户使用浏览器通过Internet访问安全服务器,下载CA的数字证书(又叫做根证书),然后用户通过浏览器访问注册机构服务器,注册机构服务器对用户进行身份审核,认可后便批准用户的证书申请,然后操作员对证书申请表进行数字签名,并将申请及其签名一起提交给CA服务器。CA操作员获得注册机构服务器操作员签发的证书申请,发行证书或者拒绝发行证书,然后将证书通过硬拷贝的方式传输给注册机构服务器。注册机构服务器得到用户的证书以后将用户的一些公开信息和证书放到LDAP服务器上提供目录浏览服务,并且通过电子邮件的方式通知用户从安全服务器上下载证书。用户根据邮件的提示到指定的网址下载 自己的数字证书,而其他用户可以通过 LDAP服务器获得他的公钥数字证书。

证书撤销

用户向注册机构操作员CRLManager发送一封签名加密的邮件,声明自己自愿撤消证书。 这册机构同意证书撤消,操作员键入用户的序列号,对请求进行数字签名。CA查询证书撤消请求列表,选出其中的一个 ,验证操作员的数字签名,如果正确的话,则同意用户的证书撤销 申请,同时更新 CRL列表,然后将 CRL以多种格式输出。 注册机构转发证书撤消列表。操作员导入CRL,以多种不同的格式将 CRL公布于众。 用户可通过浏览器浏览安全服务器或通过LDAP数据库查看、下载或浏览CRL。

密钥和证书的管理

密钥的产生:
密钥对的产生是证书申请过程中重要的一步,其中产生的私钥由用户保留,公钥和其他信息则交于 CA中心进行签名,从而产生证书。根据证书类型和应用的不同,密钥对的产生也有不同的形式和方法。对普通证书和测试证书,一般由浏览器或固定的终端调用相应的加密应用程序接口应用来产生,由于美国算法出口保护发的限制,这样产生的密钥强度较小,不适合应用于比较重要的安全网络交易。而对于比较重要的证书,如商家证书和服务器证书等,密钥对可由EMCA的CA中心直接产生,CA中心产生密钥对的算法是由BouncyCastte提供的,BouncyCastle Java加密应用程序接口(API)由BouncyCastle联盟开发,产生密钥的强度大,并且BoucyCastle是开源的,随着版本更新将产生密钥强度大的算法提供可能性。另外,根据密钥的应用不同,也可能会有不同的产生方式。比如签名密钥可能在客户端或 RA中心产生,而加密密钥则需要在 CA中心直接产生。

证书的产生:
EJBCA可以使用两种形式来生成证书,一种是从注册服务器传送过来的证书请求文件进行验证后,根据证书请求文件来生成。另一种是直接在 CA服务器本地生成 自签名的证书。由于bouncycastle作为JCE的一个安全提供者,同样继承了SUN提供的证书生成类,因此证书的生成也是用bouncyc-astle提供的算法来完成。

证书的更新:
证书更新是因为两种情况,一种是由于EMCA颁发的证书都有有效期,当有效期到了,证书要重新更新,还有一种是私钥泄漏,此时也需要密钥更新。当用户的私钥被泄漏或证书的有效期快到时,用户应该更新私钥。这时用户可以废除证书,产生新的密钥对,申请新的证书。根CA证书除了重新产生密钥对和证书外,还可以用原来的密钥对来重新产生证书。

EJBCA作为CA的安全性

EJBCA建立的CA安全性主要体现在两方面,一方面是EJBCA本身的体系结构,另一方面是JCE的安全服务提供者boubcycastle提供的加密应用程序接口。

EJBCA是一个开放源代码的项目,因此它具有公开性、开放性和灵活性,同样其对安全上的配置也很方便和灵活.,可以有多种方法来保证 EJBCA安全性,比如,可以设置对其内部Bean的访问设置权,使得仅有应用服务器上的管理员能访问到CA中心;另外还可以对运行 EMCA的服务器 MOSS进行配置,使得MOSS只用SSL层与外部建立安全连接,从而来保证 CA的安全性。

Boubcycastle是以Java实现的比较优秀加密算法接口,其提供的加密应用程序接口是 EJBCA安全的核心组件,因为它提供了密钥和证书的生成及证书发布等功能。boubcycastle提供的加密应用程序接口同样是开发源代码的,因此其算法也是公开的,bouncycastle集成了用于产生密钥对的RSA算法,多种消息摘要算法如MD算法、SHA-1算法、RIPEMD-160算法等,另外bouncycastle还将目前安全性较高的椭圆曲线加密算法(ECC)也作为其的一个 API,通过对其公开算法验证,可保证其理论上的安全性。

你可能感兴趣的:(ejb)