特别说明:
以下介绍的法国时间戳server已经停止服务了。我曾发Email给相关站点的管理员。对方回复说他也不知道什么时候能恢复服务,有可能就是遥遥无期了。所以以下的内容仅有參考价值。没法实践了。
————————————————————————————————————
在学习RFC 3161 《Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)》时,发现该文档中没有提供详细的演示样例,假设能有详细的样例对比标准学习,效果会好得多。在网上找到了一个法国的时间戳server,网址是:
http://timestamping.edelweb.fr/
该时间戳server是一个实验性的server,提供免费的数字时间戳加盖服务。
要申请时间戳。能够使用下面方法:
1) 假设是在 Windows 平台上,先编译 OpenSSL,生成 openssl.exe 文件。编译生成的 openssl.exe 文件通常位于 out32 文件夹下。
假设是在 Linux 平台上。绝大多数Linux发行版中已经包括名为 openssl 的可运行文件,能够在终端中运行命令 openssl version 来查看 OpenSSL 的版本号,假设系统中已有 OpenSSL 应能显示出版本号号。假设没有则须要下载 OpenSSL 源代码再进行编译。
2) 对一个指定的文件生成时间戳请求文件,假定这个文件名称是 my_text.txt ,生成的时戳请求文件要被命名为 request.tsq。则运行下面命令:
openssl ts -query -data "my_text.txt" -cert -sha1 -no_nonce -out request.tsq
对命令中參数的解释例如以下:
ts -query 指定生成时间戳请求
-data "my_text.txt" 表示生成请求的数据来自于文件 my_text.txt
-cert 表示时间戳server生成的响应中要包括时间戳server的数字证书
-sha1 表示生成时间戳请求时,使用的杂凑算法是 SHA1,这个參数能够换成 -sha256 等其它杂凑算法的名称
-no_nonce 表示生成的时间戳请求中不须要包括 nonce 这一项
-out request.tsq 指定生成的时间戳请求文件名称是 request.tsq
在 Windows 下运行命令时会有警告信息,可是不影响时间戳请求文件的生成。生成的文件内容是 ASN.1 编码格式的时间戳请求。
3) 这一步仅仅能在 Linux 平台上运行了,运行下面命令:
curl --data-binary @request.tsq --header "Content-Type: application/timestamp-request" -o ts_response.tsrhttp://timestamping.edelweb.fr/service/tsp
运行完之后,会从时间戳server获取到时间戳响应。是一个名为 ts_response.tsr 的文件。
-o ts_response.tsr 參数指定了时间戳响应文件的名称,能够任意命名。获取到的文件是 ASN.1 编码格式的时间戳响应。
对比时间戳请求和时间戳响应再来学习 RFC 3161,对当中的定义就能理解得更清楚了。