当前位置:文档之家› 基于EJBCA的证书状态查询系统的实现与优化

基于EJBCA的证书状态查询系统的实现与优化

基于EJBCA的证书状态查询系统的实现与优化
基于EJBCA的证书状态查询系统的实现与优化

基于EJBCA的证书状态查询系统的实现与优化

星论文网来源:https://www.doczj.com/doc/6c16881287.html, 发布时间:2010-05-30 18:23:36

1 引言

随着电子商务的迅速发展,PKI(Public Key Infrastructure,公钥基础设施)技术的应用将越来越广泛。在PKI框架中,CA(Certification Authority,认证中心)的主要功能是颁发和管理证书。证书有一定的生命期,而由于某些原因(私钥泄漏等)一些证书在到期之前会被撤销,证书将不再有效。证书状态查询是PKI系统中一个重要的问题。现有PKI 系统所提供的证书状态查询机制一般是基于CRL(Certificate Revoke List,证书撤销列表)的查询机制和基于OCSP协议(Online Certificate Status Protocol,在线证书状态协议)的实时查询机制。

CRL是一种最简单、最常用的证书撤销方法,CRL实质上是由颁发证书的CA定期签发的一个签名的数据结构,内含被该CA撤销的证书列表。CRL使用证书序列号来标识每一个被撤销的证书。使用证书的系统就可以通过查询“最近签发”的CRL 来查询证书的状态。由于CRL是定期发布的,所以不能保证证书撤销信息的实时性和准确性。

OCSP协议是PKIX工作组在RFC2560中提出的协议,给用户提供了一种方便快捷的数字证书状态查询通道,它可以满足那些要求提供比CRL更及时的证书撤销信息的操作要求,例如涉及大量资金的交易或者股票买卖。因而OCSP可以作为周期性的CRL的一种代替机制或补充机制,使得PKI体系能更有效、更安全地应用于各个领域。

目前,在校园网中部署CA系统的技术已经相对成熟,而且有许多开源的CA系统可供参考。使用独立的PKI系统,不仅有助于校园网统一管理,而且可以节省大量的费用。EJBCA用JAVA编写,是一个具有完整功能的证书认证体系,并提供了一个开放的、高性能的、具有独立平台和基于组件的CA。它包含有PKI中几乎所有重要的功能部件,比如RA (Registration Authority,注册中心)、CA、CSDB(Certificate Storage Database,证书存储数据库)、CRL、OCSP等。为了提高校园网安全性,这里使用EJBCA建立GDUFCA。

2 EJBCA系统的安装配置

在安装软件的配置上,这里选择最新版本的EJBCA软件,并经多方测试优化组合。相关软件均可通过开源网站下载得到。

表1 EJBCA系统的软件组合

软件名称及版本下载地址

JDK1.6.0_9 https://www.doczj.com/doc/6c16881287.html,/

JBOSS-4.2.2.GA https://www.doczj.com/doc/6c16881287.html,

EJBCA_3.7.2 https://www.doczj.com/doc/6c16881287.html,/download.htm

Apache-ant-1.7.0 https://www.doczj.com/doc/6c16881287.html,/ant/

MySQL 5.0 https://www.doczj.com/doc/6c16881287.html,

MySQL-connector-java-5.0.6 https://www.doczj.com/doc/6c16881287.html,/MyS QL/

Jce_policy-1_6_0 https://www.doczj.com/doc/6c16881287.html,/javase/downloads/index.j sp

MySQL-front-3.2 http://www.mysqlfront.de

部署EJBCA系统的过程如下:

(1)生成初步部署文件ejbca.ear。在%EJBCA_HOME%目录下,运行:ant bootstrap。生成完毕,运行%JBOSS_HOME%/run.bat文件,启动jboss。由于内存处理任务较繁重,为了防止内存溢出错误,设置ANT_OPTS变量,参数为:ANT_OPTS=-Xmx512m。

(2)安装管理CA并初始化EJBCA系统。首先启动MySQL数据库,然后在%EJBCA_HOME%/下,运行以下命令:ant install,安装管理CA并初始化EJBCA系统。安装时,将“CN=AdminCA1,O=EJBCA Sample,C=SE”设置为:“CN=GDUFCA,O=GDUF,C=CN”;将“CN=localhost,O=EJBCA Sample,C=SE”设置为:“CN=localhost,O=GDUF,C=CN”。安装完毕,停止JBOSS。

(3)重新部署整个系统。在%EJBCA_HOME%目录下,运行命令:ant deploy。将重新部署整个系统,并用密钥库配置Sevlet容器。

(4)安装管理员证书。将%EJBCA_HOME%/p12/superadmin.p12证书导入浏览器,默认密码是ejbca。方法为:选择证书文件,并单击右键,在弹出的对话框中选择“安装PFX”,就会打开导入证书的对话框。(5)重新启动JBOSS。登录http://localhost:8080/ejbca/。如果可以进入管理员(administrator)页面(要提示证书)说明安装成功。管理地址为:https://localhost:8443/ejbca/adminweb/index.jsp。分别单击左侧的“系统配置”、“个人选项”,在右侧的管理员首选项中设置Web界面默认语言为“ZH”(中文)。

CRL使用证书序列号来标识每一个被撤销的证书。使用证书的系统就可以通过查询“最近发布”的CRL 来查询证书的状态。“最近发布”的意思是可能随着本地策略改变,但是它通常意味着最近一次发行的CRL。EJBCA下产生CRL是在图形界面下完成的。首先通过管理员身份,进入“基本功能”界面,单击该界面中的“创建CRL”按钮即可创建新的CRL,并能够生成最新的*.CRL文件。CRL的完整性和可靠性由它本身的数字签名保证,签名者一般就是证书的签发者。如图1所示。

图1 创建CRL的界面

CA按照正常周期(例如,每隔一小时、每天或者每周)发行一次新的CRL,这就有可能出现新的撤销是在一个正常CRL发布周期之后不久,而远离下一次发布的周期。由于CRL是定期发布的,所以不能保证证书撤销信息的实时性和准确性。

在EJBCA的CRL中,包含一个列表的颁发日期“最新日期”以及下一个CRL的颁发日期“到期日期”,由这两个日期信息,用户可以判断当前拥有的CRL是否是最新的。系统本身也应用这些信息帮助管理CRL缓冲区,即在下一个CRL颁布之前,用户可以一直使用原来CRL的数据结构。第2版的CRL扩展域其内容为一个或多个CRL扩展的序列,可以创建完全CRL,以便将某个CA域内的所有撤销信息都包括在一个CRL中。完全CRL严格按照下次更新时间进行颁布,因此在同一个时刻只有一个有效的CRL可以提供撤销的信息。

CRL具有两个缺陷:第一,在校园网络环境中,随着CRL规模的增加,在下载和保存的过程中会耗费大量的时间和存储资源;第二,在CRL的发布周期中会出现时间间隔,使得被撤销的证书仍能够通过验证,形成潜在的安全漏洞。在这种情况下,OCSP协议应运而生。OCSP协议即在线证书状态协议,是用于OCSP请求者(客户端)和OCSP响应者(服务器)之间的请求/相应协议。OCSP客户端发送一个证书状态查询请求给OCSP服务器,并且等待直到服务器返回一个响应。这个协议描述了在客户端检查证书状态和服务器提供状态之间所需要交换的数据。在合理的实现方式下,OCSP可以解决CRL的两个问题。

OCSP协议对OCSP客户端和OCSP响应器之间所需要交换的数据进行了描述。一个OCSP请求包含以下数据:协议版本、服务请求、目标证书标识和可选的扩展项等。OCSP响应器在接收到一个请求之后,首先应检查这个请求的编码格式是否正确,然后再根据响应器的配置和请求中所包含的信息,向客户返回一个响应(确定回复或出错信息)。

首先,OCSP响应器返回确定的回复时,该响应必须进行数字签名。被用来签名响应信息的密钥必须属于下列中的一个:颁发所涉及证书的CA,是一个信任的响应器(它的公钥被请求者信任),是CA指派的响应器(被授权的响应器,它具有一张由CA直接颁发的用来表示此响应器可以为本CA发布OCSP响应的特别标记证书)。一个确定的回复信息由以下几部分组成:版本号、响应器名称、对每一张被请求证书的回复、可选扩展项、签名算法、对象标识和签名值。在对每一张被请求证书的

回复中都包含有证书状态。“正常”状态表示这张证书没有被撤销,“撤销”状态表示证书已被撤销,“未知”状态是表示响应器不能判断请求的证书状态。

EJBCA软件在用户通过客户端程序或者浏览器递交OCSP证书查询请求的时候,在线查询服务器先加载CA证书到缓存中,然后根据用户请求内容来确定OCSP响应器,再获得所要查询的证书的状态,并返回响应信息给客户。系统的安全管理员可以决定授权和撤销一个OCSP响应器。在EJBCA的公共界面中,单击左侧的“Fetch CA&OCSP Certificates”链接,即可了解最新的证书撤销信息。以IE浏览器为例。单击“For Internet Explorer”下的“OCSPResponder Certificate”,可以看到当前的撤销证书。如图2所示。

图2 OCSP在线查询

用户发送一个application/ocsp-request请求,服务器接收并验证是不是application/ocsp-request类型的用户请求。通过后,根据用户请求获取对应的响应器证书并产生一个基本的响应信息。该响应信息会根据不同的证书状态进行扩充,然后查询和获取用户需要查询的证书状态,形成最终的响应信息后签发该信息返回给用户。当管理员需要更新或撤销OCSP证书时,使用超级管理员登录到管理界面。这里以广东金融学院的肇庆分CA为例。单击“CA功能”下的“编辑CA”,在出现的网络界面中,对肇庆子CA(GDUFZQCA)进行编辑。在其中的“OCSP 服务”中,单击“撤销并删除OCSP证书”即可进行设置。如图4-13所

示。

图3 撤销并更新OCSP证书

其次,当OCSP响应器返回出错信息时,该响应不用签名。出错信息包括:请求编码格式不正确、内部错误、稍后再试、请求需要签名、未授权等。

5 OCSP系统的改进

实际应用中,尽管OCSP能够提供实时和最新的证书状态信息,但这并不意味着来自OCSP的响应和证书当前撤消状态相比就是零延迟。针对OCSP协议的一些局限性,本文提出了针对EJBCA的OCSP系统改进方案。对于这些参数的设置优化,可以打开/ejbca/conf安装目录,将

ocsp.properties.sample重命名为:ocsp.properties,然后对配置参数进行修改。在本方案中,将OCSP作为一个独立的服务器来实现。如图4-14所示。

图4 OCSP系统体系结构图

本系统主要由以下部分组成:(1)OCSP服务器,实现对OCSP协议消息流的处理。它直接接受OCSP客户端的证书状态查询请求,通过查询OCSP数据库的信息生成对查询请求的响应,并调用加密机对响应进行签名,然后将响应返回给OCSP客户端。(2)OCSP数据库。存储证书的状态信息,其内容和CA数据库中必须同步。(3)证书状态信息接收器,实现同步OCSP数据库和CA数据库中的证书状态信息。每当CA系

统有证书发布或者证书撤销时,该接收器就可以接收到这些证书状态信息,并更新OCSP数据库中的相应信息。(4)证书状态信息发送器。每当CA系统有证书发布或者证书撤销时,CA系统就实时地通过该发送器向OCSP响应器发送相关的证书状态信息。(5)OCSP客户端。通过执行标准的OCSP协议向OCSP响应器提出查询请求。通过上述部件的有机组合,构成一个完整的OCSP体系。

6 结束语

本文介绍了PKI的相关知识,结合实际在校园网中部署了开源EJBCA系统,建立学校CA认证中心,实现了CRL和OCSP两种证书状态查询方式并对它们的优缺点进行了论述,提出了一个改进的的实现方案。

参考文献:

[1] 谢冬青,冷健.PKI原理与技术.北京:清华大学出版社,2004.

[2] IETF. RFC 2560 X.509 Internet Public Online Certificate Status Protocol OCSP.

[3] 邓晓军 . 证书撤销机制的分析与研究 . 计算机工程与设

计 ,2007,28(7):1538-1540.

[4] EJBCA:readm.txt[EB/OL].

https://www.doczj.com/doc/6c16881287.html,/do-cs/frame.htm.

[5] 林锵,余婧,曹政等.高性能OCSP服务器的实现.计算机工

程 ,2005, 31(4):74-76.

相关主题
文本预览
相关文档 最新文档