静静的想
随笔~见啥写啥~~~
BlogJava
首页
新随笔
联系
聚合
管理
随笔 - 2 文章 - 0 trackbacks - 0
<
2007年10月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
留言簿
(8)
给我留言
查看公开留言
查看私人留言
随笔分类
java
java crypto
随笔档案
2007年10月 (1)
2007年8月 (1)
搜索
最新评论
阅读排行榜
1. 时间戳服务器 OpenTsa(3977)
2. 开通博客了~~(181)
评论排行榜
1. 时间戳服务器 OpenTsa(0)
2. 开通博客了~~(0)
时间戳服务器 OpenTsa
申请了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
-
h
<
mysql_host
>
<
database
>
-
p
<
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)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理