随笔 - 2  文章 - 0  trackbacks - 0
<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(8)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜


申请了n久了,可惜没时间写,这次正好是接触了点新东西写上先。

最近公司要做个用到时间戳的项目,苦于手上没有现成的资料,只好到网上去找个开源的用着先。

时间戳主要是用在签名时间的确定上,他能够保证在某个时刻之前被签名的数据已经存在,经常用在电子签名里面。(这些俺自己的理解,如果不对希望大家多多指正,谢了先)。

opentsa 是基于apache的一个模块,通过http或https 来提供时间戳服务。安装时需要先准备相应的软件,至于具体使用的软件请到http://www.opentsa.org上查阅,其中注意版本号。在这里俺使用的是基于openssl0.9.7a和apache1.3.27版本的。

首先请准备几个软件

Perl 5 和 libcurl 就不说了,自己安装吧,一般的linux 都已经安装了Perl 了。

openssl-VERSION.tar.gz  从 http://www.openssl.org 上下载
ts-VERSION.patch.gz  从 http://www.opentsa.org 上下载
apache-VERSION.tar.gz  从 http://httpd.apache.org 上下载
mod_ssl-VERSION.tar.gz  从 http://www.modssl.org 上下载
mod_tsa-VERSION.tgz  从 http://www.opentsa.org 上下在
如果你需要将时间戳的签名都保存下来还需要安装mysql数据库,俺用的时候没有安装,不过下面会按照安装文档里所描述的写一下。

这里使用的是
openssl-0.9.7a、ts-20030222-0_9_7a-patch、Apache 1.3.27、mod_ssl-2.8.12-1.3.27和mod_tsa-20030222

下面是安装步骤:

安装之前请先禁用本机上的apache服务,如果本机版本 跟需要版本不同请参考 http://www.opentsa.org 上的文档及相关软件的参考文档。
一、首先需要安装OpenSSL和tsget。在这里使用的OpenSSL为0.9.7a版本,在安装OpenSSL时需要先将ts patch一下, 这两个软件安装的过程为:

注: -VERSION 表示版本号 #号后面是注释
 $ gzip -cd openssl-VERSION.tar.gz | tar xf -
 $ cd openssl
-VERSION
 $ gzip 
-cd ts-VERSION.patch.gz | patch -p1
 
#下面安装
 $ ./config   #默认将OpenSSL安装到/usr/local/ssl下,
     #更改默认安装路径请使用 --prefix 和 --openssldir指定
     #如下:
     #$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl

 $ make
 $ make test
 $ make install 
#执行这步可能需要管理员权限
 $ cp apps/tsget  <openssl_root>/bin  #或者其他的相应路径,只要能找到就行
      #tsget需要有curl的支持,请自行安装

安装完成后测试一下看是不是安装成功了,测试方法
 $cd <openssl_root>/bin
 $
./openssl ts
如果出现类似如下内容就表示安装成功了
 usage:
 ts 
-query [-rand file;file;] [-config configfile] [-data file_to_hash] [-dige
 st digest_bytes][
-md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160] [-policy object_id]
  [
-no_nonce] [-cert] [-in request.tsq] [-out request.tsq] [-text]
 or
 ts 
-reply [-config configfile] [-section tsa_section] [-queryfile request.tsq] [
 
-passin password] [-signer tsa_cert.pem] [-inkey private_key.pem] [-chain certs_
 file
.pem] [-policy object_id] [-in response.tsr] [-token_in] [-out response.tsr]
  [
-token_out] [-text]
 or
 ts 
-verify [-data file_to_hash] [-digest digest_bytes] [-queryfile request.tsq]
 
-in response.tsr [-token_in] -CApath ca_path -CAfile ca_file.pem -untrusted cert
 _file
.pem
tsget 为perl脚本,自行测试吧。

二、mod_tsa及其相关软件的安装

1、如果想把所有的时间戳数据记录到Mysql数据库中请先安装Mysql数据库。如果你的apache已经安装并支持DSO(dynamic shared object,不知道中文该怎么说),那么就可以不安装apache,如果没有配置https那么请自行配置。

2、解压要用的到相关软件,如下:
$ gzip -cd apache-VERSION.tar.gz | tar xf - 
$ gzip 
-cd mod_ssl-VERSION.tar.gz | tar xf - 
$ gzip 
-cd mod_tsa-VERSION.tgz | tar xf -

3、安装支持https的apache服务器
 $ cd mod_ssl-VERSION
 $ 
./configure --with-apache=../apache-VERSION --with-eapi-only
 
#上面命令执行完后有个提示,按照提示操作即可,不过需要加点其它的参数
 $ cd ../apache-VERSION
 $ 
./configure --enable-module=so --enable-rule=EAPI
 
# 如果需要更改apache的路径请使用 --prefix=<path> 选项
 $ make
 $ make install    
# 这里同样需要管理员权限

安装完成了启动服务:
<apache_root>/bin/apachectl start #启动apache
可以查看 <apache_root>/logs/error_log 中的信息确定是不是成功启动了。

到这里就可以使用https服务了,具体配置方法请参见
http://localhost/manual/mod/mod_ssl/

4、安装mod_tsa。
在安装之前请先将apache的bin目录放到PATH变量中,这样可以执行apache的bin 目录下的apxs 命令。
$ export PATH=<apache_root>/bin:$PATH

编译安装
 $ cd ../mod_tsa
 $ make OPENSSL
=<openssl_root> 
 
#如果要使用mysql在命令后面加上 TS_MYSQL=1
 $ make install    # 同样这里也需要管理员权限

如果未使用mysql到这里安装工作就完成了。
 
下面的步骤为mod_tsa文档上的描述,没有使用过

创建数据库:
 $ mysql -<mysql_host> <database> -< mysql_create.sql

这里安装过程就完成了。安装完成后配置一下就可以使用了。

首先是要配置httpd.conf:
在mod_tsa目录下有tsa.conf文件,将其拷贝到<apache_root>/conf下。在<apache_root>/conf/httpd.conf 中加入一行
Include conf/tsa.conf

该行必须在Loadmodule下面。
 #这行是安装的时候加进来的
 #如果没有,请将mod_tsa.so拷到<apache_root>/libexec 下
 #    并加上下面这行

 Loadmodule tsa_module libexec/mod_tsa.so 

我习惯查找<Location ...> 节点,把Include加入到</Location>下面。

然后需要配置一下tsa服务器了:

tsa服务器的相关配置信息在tsa.conf 中,不过在配置之前你需要先准备一张时间戳证书及和证书对应的私钥,及该证书验证的证书链。如果没有可以使用openssl 生成,具体方法请参考openssl。

打开tsa.conf

 <Location /tsa>  #/tsa 为访问路径,可以更改
 #这个节点其他的部分就不要改了

     SetHandler tsa
     Order allow
,deny
     Allow from all
 
</Location>
 
 
# 下面这行是存放时间戳序列的文件,可以使用默认
 # TSASerialFile conf/tsaserial
 
 #下面证书 ,证书链及私钥 

 TSACertificate /home/zglozik/certs/tsa.pem
 TSACertificateChain 
/home/zglozik/demoCA/cacert.pem
 TSAKey 
/home/zglozik/certs/tsa_key.pem
 
 
#再下面这些可以使用默认了
 #如果使用mysql 的话需要配置一下最后的几个参数
 #其他详细的就看人家配置文件的注释把,英文的,写的很清楚
 
 #如果有什么不懂的就到http://www.opentsa.org 上看看去

到这时候再重启apache 就可以使用tsa了。

此时就可以通过 openssl 的ts 命令和 tsget 命令来测试一下,具体请查看 http://www.opentsa.org/#service

注意,此时间戳服务器完全遵守 rfc3161 ,与signcode (这个不标准) 不兼容,也就是使用signcode时此时间戳会拒绝。


posted on 2007-10-18 14:15 静静的想 阅读(3977) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: