5 タイムスタンプに関連した実装
5.1 OpenTSA
5.1.1 概要
ここではOpenTSAが提供する機能と、Apacheと連携するmod_tsaについて 概要を説明する。また、コマンドの使い方やセットアップの際に注意する点など についても解説する。
5.1.1.1 OpenTSAの機能
(a) TimeStampReq生成機能
タイムスタンプの発行を要求するために使用する、タイムスタンプ・リク エスト(TimeStampReq)を生成することができる。生成されたデータはDER 形式で標準出力、またはファイルに書き出される。指定できるパラメータの いくつかを以下にあげる。
タイムスタンプ・プロトコルに関する技術調査
ダイジェスト生成に使用するアルゴリズム
(-md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160) reqPolicyに指定するポリシー(-policy)
nonceを使用しないオプション(-no_nonce) certReqフラグ(-cert)
実行例:
openssl ts -query -data /tmp/hashed.dat -ripemd160 -policy 1.2.3 -cert -out request.tsq
(b) TimeStampResp生成機能
TimeStampReqに対応するタイムスタンプ・レスポンス
(TimeStampResp)を生成する。データはファイル渡しで、DER形式の
TimeStampReqが格納されたファイルを引数で指定して、コマンドラインで
起動される。生成されたTimeStampRespはDER形式で標準出力、または ファイルに書き出される。指定できるパラメータのいくつかを以下にあげる。
TSAのポリシー(-policy)
TimeStampReqに含まれるreqPolicyと一致しない場合、エラーとな り、生成されたTimeStampRespのstatusにrejection(2)が、failInfo にはunacceptedPolicy(15)がセットされる。
PEMフォーマットで格納された証明書チェーンファイル(-chain) 証明書チェーンは自動生成されないので、TimeStampRespに含める場 合は事前に生成して、指定する必要がある。
TimeStampToken出力の指定(-token_out)
このオプションを指定すると、TimeStampRespに含まれる TimeStampTokenのみをDER形式で書き出すことができる。
実行例:
openssl ts -reply -queryfile request.tsq -policy 1.2.3 -out response.tsr
(c) TimeStampToken検証機能
TimeStampTokenが正しいかどうかを検証する。DER形式の
TimeStampRespまたはTimeStampTokenを指定して、タイムスタンプが正 しいものかどうかを検証する。検証結果はOK、FAILEDの二値である (FAILEDの場合、理由も表示される)。
実行例:
タイムスタンプ・プロトコルに関する技術調査
openssl ts -verify -data /tmp/hashed.dat -in response.tsr -CAfile cacert.pem
5.1.1.2 OpenTSAセットアップについて
OpenTSAの、TimeStampReq生成、TimeStampToken検証の機能のみを利用 する場合は、コンパイルしてインストールするだけだが、TimeStampResp生成の 機能を利用する場合、TSAとして機能させるための証明書や、発行した
TimeStampTokenのシリアル番号を管理するためのファイルなどを準備する必要
がある。詳細はOpenSSLとOpenTSAのマニュアルを参照してもらうこととし、
ここでは簡単に説明する。
(a) TSAの証明書の準備
TSAの証明書のextendedKeyUsageはcritical,timeStampingでなければ ならず、そうでない場合OpenTSAは”invalid signer certificate purpose”と エラーを出力し、動作しない。従って、CAがTSAの証明書を作成する際上 記値を含んだ証明書を作成しなければならない。OpenSSLを証明書の作成に 使用する場合を例に挙げると、OpenSSLのコンフィグレーションファイルに
[tsa]
extendedKeyUsage = critical,timeStamping
という2行を追加し、
openssl ca -config <config.file> -out <cert> -extensions tsa -infiles <csr>
のように、-extensions tsaをつけて証明書作成を行う。
(b) TSA用コンフィグレーションの準備
openssl ts –reply –config <config file>で指定するconfig fileが必要である。
この設定ファイルにかかれた「serial=<file>」エントリの<file>にシーケンシ ャルな番号が記録され、この値がTimeStampTokenのseiralとして使用され る。
5.1.1.3 mod_tsaについて
前述した通り、OpenTSAはファイル交換の実装であり、mod_tsaはapacheの モジュールで、TSP over HTTPの実装である。apacheのコンフィグレーション ファイルに追加する形で設定を行う。指定可能なパラメータのうちいくつかを以 下にあげる。
ポリシー
タイムスタンプ・プロトコルに関する技術調査
ポリシーを複数指定することができる。ここにセットされていないポリシ ーをクライアントが要求してきた場合、statusにrejection(2)、statusString にUTF8Stringで’Requested policy is not supported.'、failInfoに
unacceptedPolicy(15)がセットされたTimeStampRespが返される。
ダイジェストアルゴリズム
TimeStampReqに含まれるMessageImprint中のダイジェストアルゴリズ ムとして許可するアルゴリズムを列挙する。ここにセットされていないアル ゴリズムで作成されたダイジェストが送られてきた場合、statusに
rejection(2)、statusStringにUTF8Stringで'Message digest algorithm is not supported.'、failInfoにbadAlg(0)がセットされたTimeStampRespが返され る。