建立一个简单的数字证书中心

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 sagely 的 blog

   前面已经简要介绍了数字证书以及数字证书认证中心,ca中心是pki核心部件,数字证书也是pki的基础,所以下面就先来实现一个简单的数字证书认证中心,因为我也没有具体建过ca中心,全凭理论,也是为了以后的研究建立一个演示的基础,所以只能是当作了解和熟悉一下ca中心的过程.
在这个简单的数字证书中心主要包括三个部分:
ra:注册中心  通过web server建立一个站点(由apache+modssl搭建),为客户提供交互的服务,主要实现填写表单,安装根证书,查询和下载用户证书,以及提交证书挂失和证书修改请求等功能。
ca:认证中心,利用openssl api编写实现各类证书以及crl生成的程序,通过cgi接收到ra发过来的请求进行各类处理。主要实现证书的生成,crl的生成,数据归档,用户私钥存档等功能。
ldap服务器,主要存储用户证书以及crl,并且可以处理来自ra的一些请求(譬如查询和下载证书)
下面我们就来安装必须的软件(本应该是在linux下的实现,毕竟在linux对下面这些软件支持得更好,但是为了方便,这里就讨论windows下的吧,不过效率和安全性要差一些):

一:openssl的安装,在这里就没有什么好说的拉,按照openssl在windows下的安装手册一步一步走就可以拉。主要步骤如下:
1, 安装activeperl
2, 解压缩openssl-097d至c盘
3, 解压缩vc60ssl097.tar至openssl目录下
4,c:\openssl>perl configure vc-win32
5, ms\d0_ms.bat
6, perl msvc097\doinc.pl
7, 打开msvc097里的openssl.dsw
8, build -> batch build -> build all;

二:apache+php的安装
1,安装apache_1.3.31-win32-x86-no_src至c盘下,修改httpd.conf,将documentroot 改为存放网页的目录,保存后重启apache服务。
2,将php-5.0.2-win32解压缩至c:\php5,将php目录下的php.ini-recommed文件改名为php.ini并拷贝到.\apache目录下,这里有几个需要改动的地方。
extension_dir=./改为extension_dir=c:\php5
doc_root=改为doc_root=d:\www
session.save_path=/tmp改为session.save_path=c:\winnt\temp
;upload_tmp_dir=改为upload_tmp_dir= c:\winnt\temp.前面的;号要去掉的
;default_charset=iso-8859-1改为default_charset=??????
3,修改完php.ini以后将php目录下的php5ts.dll文件拷贝到c:\winnt\system32目录下,复制php5apache2.dll到./apache/modules下,假如使用的是apache1.xx.xx的话,复制php5apache.dll。
4,最后修改apache的httpd.conf文件,在文件的末尾添加下面:
loadmodule php3_module modules/php5apache2.dll(modules/php5apache.dll)
addtype application/x-httpd-php .php
查找directoryindex index.html这行,将在index.html的前面加上一个index.php,两者之间要有空格,然后就可以保存重启测试拉。
因为在windows下要把modssl和php均以模块化形式导入apache中很麻烦(linux没问题),所以这里只能省了modssl,这在以后就不太容易实现https服务了(看来还是linux好)。建议不要将php的register_globals = off修改,采用$_post,$_get等方式。


三:openldap的安装
1,安装openldap-2_1_29-1-win32.exe,一路next就ok拉。
2,修改slapd.conf,添加:
include       "d:/openldap/etc/schema/cosine.schema"
include       "d:/openldap/etc/schema/inetorgperson.schema"
allow bind_v2
更改suffix,rootdn,rootpw等
3,将下面一段添加至inetorgperson.schema中,这相当于我定义新的objectclass
objectclass  
( 2.16.840.1.113730.3.2.3
name 'guestcertificate'
desc 'guestcertificate'
sup top
  structural
may
(
 mail $ usercertificate $ cn $ c $ st $ l $ o $ ou $ userpkcs12 )
)

4,添加根dn
写一个ldif文件包含下面语句
dn:dc=sage,dc=com
objectclass:dcobject
objectclass: organization
o:sage
dc:sage

具体的实现:
ra部分:有关证书请求,撤消,验证等操作可以通过cgi发送请求至ca认证中心(在这里就不用审核了),而有关证书查询,下载可以通过php访问ldap服务器(这个已经有文章介绍了)
ca部分:这部分主要是利用openssl api实现各类功能(请看利用openssl api生成证书)
ldap部分:将ca部分生成的证书存入ldap中,并且接受查询和下载(具体的ldap相关文章中)

这个简单的ca中心只是演示了一下过程,所以不成熟和错误的地方请原谅。建议还是在linux下建立,在用户访问网页时实现https连接。

本文关键:建立一个简单的数字证书中心
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top