申請了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 表示版本號 #號后面是注釋













安裝完成后測試一下看是不是安裝成功了,測試方法
















二、mod_tsa及其相關軟件的安裝
1、如果想把所有的時間戳數據記錄到Mysql數據庫中請先安裝Mysql數據庫。如果你的apache已經安裝并支持DSO(dynamic shared object,不知道中文該怎么說),那么就可以不安裝apache,如果沒有配置https那么請自行配置。
2、解壓要用的到相關軟件,如下:



3、安裝支持https的apache服務器








安裝完成了啟動服務:

到這里就可以使用https服務了,具體配置方法請參見
http://localhost/manual/mod/mod_ssl/
4、安裝mod_tsa。
在安裝之前請先將apache的bin目錄放到PATH變量中,這樣可以執行apache的bin 目錄下的apxs 命令。


編譯安裝




如果未使用mysql到這里安裝工作就完成了。
下面的步驟為mod_tsa文檔上的描述,沒有使用過
創建數據庫:


這里安裝過程就完成了。安裝完成后配置一下就可以使用了。
首先是要配置httpd.conf:
在mod_tsa目錄下有tsa.conf文件,將其拷貝到<apache_root>/conf下。在<apache_root>/conf/httpd.conf 中加入一行

該行必須在Loadmodule下面。




我習慣查找<Location ...> 節點,把Include加入到</Location>下面。
然后需要配置一下tsa服務器了:
tsa服務器的相關配置信息在tsa.conf 中,不過在配置之前你需要先準備一張時間戳證書及和證書對應的私鑰,及該證書驗證的證書鏈。如果沒有可以使用openssl 生成,具體方法請參考openssl。
打開tsa.conf




















到這時候再重啟apache 就可以使用tsa了。
此時就可以通過 openssl 的ts 命令和 tsget 命令來測試一下,具體請查看 http://www.opentsa.org/#service 。
注意,此時間戳服務器完全遵守 rfc3161 ,與signcode (這個不標準) 不兼容,也就是使用signcode時此時間戳會拒絕。