当前位置:首页 > 关于CNNIC > CNNIC通讯 > CNNIC通讯第二十七期 >> 正文

用OpenCA构建自己的PKI
作者:毛 伟,孔 宁
 
    摘 要:随着互联网络的飞速发展,网络中的安全问题日益受到人们的重视。众所周知,PKI公钥基础设施是目前比较成熟、完善的互联网络安全解决方案,但PKI实施起来比较繁琐,并且当前实现PKI的商用软件价格较为昂贵,这都阻碍了PKI的广泛应用。本文针对这一现状,重点介绍实现PKI技术的开源软件OpenCA。由于OpenCA的配置、使用过程比较繁杂,并且相关文档比较缺乏,因此本文通过讲解笔者用OpenCA搭建的一套PKI系统,详细介绍了OpenCA的配置、使用方法,为PKI的推广以及发展起到了抛砖引玉的作用。

    关键词:OpenCA; 公钥基础设施PKI; 认证中心CA; 数字证书


    Abstract :With the explosive growth of Internet, increasingly importance has been attached to the security problem of Internet. As we all know, PKI(Public Key Infrastructure) is a mature and consummate formula for settling the security problem of Internet at present, but it’s very complicated to put into practice, and the commercial software which performs PKI is expensive, those retard the progress of the widespread use of PKI. In face of this actual state, this dissertation briefly introduces the open source software: OpenCA which realizes the technology of PKI. As the configuration and use of OpenCA is rather complicated, and lack of associated file, so this paper gives a detailed account of the configuration and use of OpenCA by explaining a PKI system built by author with OpenCA, and it will have some effect on improving the extension and development of PKI.

    Key words :OpenCA ; PKI; CA; digital certificate

1 引 言

    随着互联网络应用的不断普及,以及电子商务、电子政务的呼之欲出,互联网络中信息传递的安全问题日益受到人们的重视。人们在不断探求互联网络中安全问题的解决方法,从而确保互联网络中信息传递的保密性、完整性、非否认性,以使互联网络能够为人们提供更加广泛便捷的服务。PKI技术正是解决互联网络安全问题的良方,越来越多的人开始关注它,研究它。目前PKI已经是公认的保障网络社会安全的最佳体系。那么PKI技术到底是什么?它又是如何来实施的呢?

2 PKI简介

    PKI是“Public Key Infrastructure”的缩写,通常被译为“公钥基础设施” [1]。简单地说,PKI技术就是使用公开密钥技术和数字证书来提供信息安全服务的基础设施。众所周知,公开密钥技术是目前应用最广泛的一种加密技术,其技术核心是非对称加密技术,即使用公私密钥对,每对中的公私密钥是一一对应的,并且由其中任意一个密钥加密的文件,只能由其相对应的另一个密钥才能解密。通过使用公开密钥技术,可以实现身份认证,数据保密等功能。但是为了确保用户的身份及其所持有密钥的正确匹配,需要一个值得信赖而且独立的第三方机构充当认证中心(Certification Authority,CA),来确认公钥拥有人的真正身份。

3 PKI与DNSSEC

    利用PKI可以提高现有DNS的安全性。DNSSEC(Domain Name System SECurity,域名系统的安全协议)是在普通DNS服务基础上,利用PKI技术,通过对DNS消息及数据进行数字签名,为DNS体系提供安全保护的一种机制。

    DNSSEC在普通DNS服务的基础上,利用PKI技术,通过对于包含在DNS中的信息创建密码签名,提供了两种功能:数据认证和事务交互认证功能。数据认证是保证解析器收到的应答中的资源记录是完整的。事务交互认证是保证解析器收到的消息是从请求的服务器返回的,并且该应答是和请求相对应的。

4 OpenCA简介

    OpenCA Labs开源组织一直在致力于开发一套完善的PKI免费软件:OpenCA ,通过使用OpenCA可以构建自己的PKI系统。下面将以OpenCA 0.9.1- 8版为例进行介绍。

    首先简单介绍一下OpenCA的结构布局,如图1所示:

用OpenCA构建自己的PKI-1


                                                         图一


    具体而言,OpenCA由四个主要部分组成,即CA,RA,PUB,NODE 。简单来说PUB是对外提供服务的接口,用户可以在PUB界面提交自己的注册请求、查询请求等等。RA主要负责来处理经由PUB提交过来的用户请求,来决断是否批准这些请求。CA则根据RA批准的请求来最终签发证书。NODE负责在RA和CA之间传输数据。

5 用OpenCA来构建自己的PKI

    接下来将介绍OpenCA的安装、配置和使用。

5.1  OpenCA的安装

    在安装OpenCA前,首先需要准备两台计算机,并且确保其系统中正确安装了apache ,mod_ssl ,  openssl , mysql, perl 。为了使OpenCA的安装相对简单,apache,openssl的安装路径建议采用默认路径,即位于/usr/local/目录下。这些软件的具体安装过程本文不再介绍。

    然后下载OpenCA:openca-0.9.1-8.tar.gz 。选择其中的一台机器作为CA server,在其上安装CA。安装步骤如下:

(1)tar xvfz openca-0.9.1-8.tar.gz

(2)cd openca-0.9.1-8

(3)./configure       
    
    --with-openssl-prefix=/usr/local/ssl --with-web-host=localhost --with-ca-organization=”your orgname” --with-ca-country=CN --with-ca-locality=BJ --with-httpd-user=root --with-httpd-group=root --with-hierarchy-level=ca --with-service-mail-account="your email"

(4)make

(5)make install-ca

    自此CA安装完毕,此安装尽量采用默认配置安装。启动apache,在浏览器中访问/ca/index.html页面。

    接下来在另一台机器上安装RA,PUB。安装步骤基本同上,不同之处是:(3)中“--with-hierarchy-level=ca”改为“--with-hierarchy-level=ra”, (5) 改为:make install-ra ;make install-pub ;make install-node 。

5.2  OpenCA的初始化

(一)初始化CA。

    CA的初始化分三步:(1)CA自身初始化 (2)CA管理员初始化 (3)RA证书初始化 。如图2所示:

用OpenCA构建自己的PKI-2

                                               图二


    (1)CA自身初始化主要是完成CA自签发根证书。CA自身初始化依次由“Initialize Database”执行到“Generate Self Signed CA Certificate (from already generated request)”为止,此时完成了根CA自签名证书的生成工作,然后点击“Rebuild CA Chain”,完成CA链的设置。

    (2) CA管理员初始化,实际是为CA操作员颁发证书。通过 “Create the initial administrator” 可以完成该操作。注意颁发证书时,证书请求中Role选择“CA Operator”。最后颁发的证书由CA操作员下载保存,推荐下载格式为PK#12。下载的文件默认名为ca.p12,可以导入浏览器。

    (3)RA证书初始化。其作用是为RA操作员颁发证书,以及为RA server颁发服务器端安全证书。RA操作员颁发证书和CA操作员颁发证书操作类似,只是证书请求中Role要选择为“RA Operator”,以及RA操作员证书需要导入RA操作员的浏览器中。在颁发RA server服务器端安全证书时,证书请求中Role要选择为“Web Server”,另外在证书请求中要正确填写该服务器的域名,这样才能使证书正确的表明服务器的身份。最后在下载证书时,格式要选为“SSLeay(mod_ssl)”。

(二)初始化RA。

    首先将一张软盘插入上一步已初始化完成的CA server机器中,注意更改软驱的权限使得可以进行读取、写入操作。然后点击图4中的“Export Configuration”,将CA中的配置文件导入软盘。接下来将该软盘插入RA server中,同样注意更改RA server中软驱的权限。访问RA server中的ra_node/index.html页面,点击“Server Init”,出现图3页面:

用OpenCA构建自己的PKI-3

                                             图三



    依次点击这两个链接,即初始化RA数据库、导入CA配置信息,这样就完成了RA的初始化。

5.3  OpenCA的使用

    现在OpenCA已经可以为用户提供基本的PKI服务了。下面以用户申请证书为例,讲解OpenCA的工作过程。首先用户通过访问RA server上的pub/index.html,点击“Request a Certificate” ,选择“Basic Request”,然后填写完成证书申请表单,提交。这时RA操作员可以对该请求进行审核。具体做法是,RA操作员通过访问ra/index.html ,点击“Certificate Requests”,在这里可以看到用户提交的证书申请。RA操作员对该申请进行审核后,如果批准该申请的话,可以点击“Approve and Sign Request”按钮,然后用CA颁发给自己的RA操作员证书进行签名,提交。

    下一步RA操作员将批准的申请上传给CA server,这是通过NODE来完成的。具体作法是,RA操作员访问ra_node/index.html页面,点击“Data exchange”链接,然后点击Upload data to a higher level of the hierarchy中的“Requests”链接,将该申请导入软盘。然后将该软盘交给CA操作员。接下来CA操作员将软盘插入CA server的软驱中,进入ca_node/index.html页面,点击“Data exchange”链接,然后点击Receive data from a lower level of the hierarchy中的“Requests”链接,从软盘中导出请求。

    CA操作员进入ca/index.html页面,点击“Approved Certificate Requests”链接,选择该证书请求,可以看到该批准的请求是经过签名的,点击可以查看签名证书。由于签名是由自己颁发给RA操作员的证书,所以此请求的批准是具有可信性的,此CA操作员可以为此请求颁发证书。然后CA操作员通过NODE将该证书导入软盘。RA操作员得到该软盘之后,再由NODE从软盘中导出证书,此过程与证书请求的传递类似,不再赘述。由于请求证书的类型是“Basic Request”,此时私钥是在服务器端生成的,为了确保安全,因此用户不可能在pub/index.html页面下载证书。在这种情况,需由RA操作员在ra/index.html页面,点击Information中的“Certificates”链接,然后点击“Valid Certificates”,即可选择下载该证书。另外,如果用户通过pub/index.html页面提供的是PKCS#10格式的证书请求,即私钥是在用户端生成的,那么用户可以在pub/index.html页面下载证书。

6 结束语

虽然OpenCA还有许多不足之处,但是它为大家学习研究PKI提供了一个良好的环境。OpenCA的开发一直没有终止,OpenCA Labs组织在持续不断地完善着OpenCA。希望本文能够起到一个抛砖引玉的作用,让更多的人使用OpenCA软件,了解PKI技术,从而推动PKI在我国互联网应用中的发展。

参考文献

1  关振胜,公钥基础设施PKI与认证机构CA,2002年1月1日

2  陈铁明,OpenCA体系结构。2003年11月

3  Michael Bell, Chris Covell, Harald Wallus, The OpenCA Guide, February 13,2003





[ 2006年9月14日 ] 
 
ICP备案编号:京ICP备010225号 版权所有:中国互联网络信息中心