PKI体系更多的是一个概念模型,初学者在理解了概念后,如果想实际操作一下,往往失去了头绪。一来各种商业实现的版本令人眼花缭乱,二来要搭建一个PKI系统需要安装不少东西,比如OpenSSL、密钥管理、LDAP、工作流等等。这些困难实在是让新手无从下手。
其实,抛开众多的商业PKI解决方案,在开源社区,已经有人开始致力于统一PKI实现了。从1999年开始,一个名为OpenCA的项目就开始了开发,这个框架集合了所有开源的安全产品,提供一个”比较”简洁的安装方式,然而这个简洁只是比较而言的,由于它的框架太过通用(比如证书不一定考虑X509格式),致使其安装还是不能非常方便。不过这个项目目前正在开发NG(Next Generation)版本,只是还没有发布版本。
后来,从OpenCA项目分离出了一个项目,叫做OpenXPKI,这个项目在OpenCA的基础上,更加缩小了范围,旨在提供基于X.509证书的企业级PKI开源解决方案。我们可以从 www.openxpki.org 这个主页上了解到它的信息。不过,这个项目目前也还没有稳定版发布,仍然处于开发阶段。但是,它提供了一个Live CD的发布,我们可以在它的下载页面里找到这个Live CD的iso文件下载(目前是600多兆)。这个Live CD实用了光盘版本的Linux发布制作而成,极大地方便了我们使用和安装(你可以想想Ubuntu Linux的发布和安装,那个也是Live CD方式)。
好,那么对于希望对PKI体系有个感性认识的人来说,用OpenXPKI那简直是最简单不过了。实际上,你根本不需要安装任何软件,你所需要的仅仅是两样东西:
好,下面我们简要来看看如何使用这个Live CD。首先,创建一个新的虚拟机,你可以不在这个新的虚拟机上安装任何操作系统。由于OpenXPKI Live CD是建立在Debian的基础上的,所以在选择新虚拟机的类别时选Debian或者Ubuntu都可以,内存给个512M吧。然后把光驱设置成ISO,并导入下载的Live CD的ISO。
启动虚拟机,系统会自动从光盘加载操作系统,并设置一些OpenXPKI的初始环境(比如产生一个CA的证书等):
一段时间后,系统初始化完毕,进入一个图形界面,并自动打开一个Firefox浏览器,进入一个页面,上面有简单的使用说明:
好,开始体验PKI了,直接点击”webinterface”这个连接,进入用户登录页面:
这里,由于OpenXPKI是框架型软件,所以它提供可供扩展的用户登录方式,这里我们选择”External Dynamic”方式,这个方式是专门用来给我们测试的,在这个登陆方式中,用户名可以任意,而登陆后的用户角色则根据密码来确定。分别有
这几个角色。
好,我们首先用”caop”,密码”CA Operator”来登陆,注意,用户名无关紧要,关键是密码,这个决定了你的角色:
好,我们进入了CA操作员的页面,可以看到,我们的上面有几大类操作可做:
在我们这个CA Operator的任务列表里,可以看到有一个CA证书处于Incomplete状态,这个就是我们开机时系统生成的用于CA的证书,但我们必须手动来启用它。好我们点击”Login”来启用吧:
要启用这个CA证书,我们必须输入用于打开这个证书私钥的保护密码,这里我们使用第一栏填”1″,第二栏填”1234567890″,这个是系统生成这个测试秘钥时的密码,然后点击OK,新的CA证书就生成了。作为正式系统,操作员要绝对保证这个证书的私钥的安全:
点击OK后,CA证书就初始化完成,可以看到其状态为Ready了。
接下来,CA操作员的任务就完成了,我们可以点击上面的Logout,注意你如果点击CA证书的Logout,系统会问你是否清楚该秘钥的保护密码,点OK就可以了。这样,系统就要求我们重新登陆,想想,应该用一个普通用户登录,然后申请证书了吧,所以我们用用户名”user”,密码”User”,没忘吧,这个密码说明我们要以User的身份来登陆:
进入用户组的界面后,我们进入”Request”页面,并点击”Certificate Signing Request (CSR)”子页面,这里我们要进行秘钥的产生和证书申请的产生,类型选择”User”:
接下来要选择输入用户证书内容的模式,我们选最简单的Basic user naming style即可:
接下来,要选择如何产生秘钥了,系统提供了四个选项(当然,由于这个软件是框架型软件,这个产生秘钥的方式是可以扩展的),这里大致介绍下:
嗯,我们选SPKAC吧:
接下来,开始输入用户数据了,由于我们选择的是简要输入模板,所以只需要输入3个内容即可:(后面的email是我的,有问题可以给我发邮件哦:)
一通设置后,Firxfox弹出密码生成对话框,要求我们给这个新生成的密钥设置一个保护密码(也就是对公私钥的对称加密):
几秒钟后,秘钥生成完毕,证书申请也制作好,并传到服务器上了。
接下来我们用RA管理员登录,密码为”RA Operator”:
一登进去,刚才的证书申请就放在那了,呵呵:
点击进入这个申请,按”Approve CSR”来确认吧,不过真实世界中,这个流程可是千差万别哦,可以是用email确认,也可能要到柜台,拿着个身份证的复印件哦,呵呵。
证书生成好,我们就退出本次RA Operator的登录,再次用User登录:
呵呵,一进去,俺们的新证书就在那了:
直接点击”download certificate”吧,下面提供了五种下载模式:
其中,Firefox和IE两项可以自动安装证书到浏览器里,这里由于我们是Firefox,就点它吧:
然后我们进入Firefox的配置选项对话框,选择”Advanced”->”Encryption”,不错,咱们的证书已经列在那了,可以正常使用了:
其他还提供了PEM, DER和TXT这三种下载方式,都是文本文件或者普通文件:
OK,一次简单的PKI之旅就结束了,是不是对PKI有了感性的认识呢?不过这个OpenXPKI还处于开发阶段,没有稳定版本发布,涉及的文档也非常缺乏,要深入研究就只能靠有限的几篇设计文档和源代码阅读了,好在其设计非常模块化,并且运用了Perl的CPAN系统(一个类似debian的apt软件包系统),所以应该是一个很有前途的软件吧。