隨筆 - 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 靜靜的想 閱讀(4051) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 哈密市| 香格里拉县| 嘉黎县| 溆浦县| 宁武县| 大足县| 玛沁县| 金溪县| 册亨县| 玉树县| 渭源县| 新民市| 双牌县| 庆城县| 华阴市| 达州市| 潮安县| 开封市| 湘乡市| 济南市| 邵武市| 泾源县| 渭源县| 江北区| 资溪县| 凤冈县| 天门市| 新和县| 太和县| 尼木县| 扎鲁特旗| 雅安市| 潼关县| 乌兰浩特市| SHOW| 海兴县| 桐庐县| 通化市| 仙游县| 阜宁县| 枞阳县|