开放SSL

密码学和 SSL/TLS 工具包

tsget

名称

tsget - 时间戳 HTTP/HTTPS 客户端

语法

tsget -h server_url [-e extension] [-o output] [-v] [-d] [-k private_key.pem] [-p key_password] [-c client_cert.pem] [-C CA_certs.pem] [-P CA_path] [-r files] [-g EGD_socket] [request ...]

描述

该命令可用于通过 HTTP 或 HTTPS 向时间戳服务器发送时间戳请求(如 RFC 3161 中所指定),并将时间戳响应存储在文件中。它不能用于创建请求和验证响应,您需要使用 openssl-ts(1) 来完成这些操作。该命令可以在命令行上指定多个请求的情况下,在不关闭 TCP 连接的情况下向服务器发送多个请求。

该命令为每个时间戳请求发送以下 HTTP 请求

POST url HTTP/1.1
User-Agent: OpenTSA tsget.pl/<version>
Host: <host>:<port>
Pragma: no-cache
Content-Type: application/timestamp-query
Accept: application/timestamp-reply
Content-Length: length of body

...binary request specified by the user...

它期望接收 application/timestamp-reply 类型的响应,该响应将被写入文件,不会进行任何解释。

选项

-h server_url

监听时间戳请求的 HTTP/HTTPS 服务器的 URL。

-e extension

如果没有给出 -o 选项,此参数将指定输出文件的扩展名。输出文件的基本名称将与输入文件相同。默认扩展名是 .tsr。 (可选)

-o output

此选项仅在向服务器发送一个请求时才能指定。时间戳响应将被写入给定的输出文件。'-' 表示标准输出。在多个时间戳请求的情况下或缺少此参数的情况下,输出文件名的派生将基于输入文件名的派生,并使用默认或指定的扩展名参数。 (可选)

-v

当前处理的请求名称将打印到标准错误。 (可选)

-d

为底层 perl 模块 WWW::Curl::Easy 开启详细模式。您可以看到连接的详细调试消息。 (可选)

-k private_key.pem

(HTTPS) 在基于证书的 HTTPS 客户端身份验证的情况下,private_key.pem 必须包含用户的私钥。私钥文件可以选择用密码保护。还必须指定 -c 选项。 (可选)

-p key_password

(HTTPS) 指定 -k 参数指定的私钥的密码。如果省略此选项,并且密钥是密码保护的,则系统将提示您输入密码。 (可选)

-c client_cert.pem

(HTTPS) 在基于证书的 HTTPS 客户端身份验证的情况下,client_cert.pem 必须包含用户的 X.509 证书。还必须指定 -k 选项。如果没有指定此选项,则不会进行基于证书的客户端身份验证。 (可选)

-C CA_certs.pem

(HTTPS) 受信任的 CA 证书存储。对等证书的证书链必须包含此文件中指定的 CA 证书之一。在 HTTPS 的情况下,必须给出 -C 选项或 -P 选项之一。 (可选)

-P CA_path

(HTTPS) 包含用于验证对等证书的受信任 CA 证书的路径。该目录必须使用 openssl-rehash(1) 进行准备。在 HTTPS 的情况下,必须给出 -C 选项或 -P 选项之一。 (可选)

-r files

有关更多信息,请参见 openssl(1) 中的“随机状态选项”

-g EGD_socket

用于获取随机数据的 EGD 套接字的名称。 (可选)

request ...

包含 RFC 3161 DER 编码的时间戳请求的文件列表。如果没有指定请求,则只向服务器发送一个请求,并且该请求将从标准输入读取。 (可选)

环境变量

TSGET 环境变量可以选择包含默认参数。此变量的内容将添加到命令行参数列表中。

示例

以下示例假设 file1.tsqfile2.tsq 包含有效的时间戳请求,tsa.opentsa.org 在端口 8080 上监听 HTTP 请求,在端口 8443 上监听 HTTPS 请求,TSA 服务在 /tsa 绝对路径下可用。

通过 HTTP 获取 file1.tsq 的时间戳响应,输出写入 file1.tsr

tsget -h http://tsa.opentsa.org:8080/tsa file1.tsq

通过 HTTP 获取 file1.tsqfile2.tsq 的时间戳响应,显示进度,输出分别写入 file1.replyfile2.reply

tsget -h http://tsa.opentsa.org:8080/tsa -v -e .reply \
      file1.tsq file2.tsq

创建时间戳请求,将其写入 file3.tsq,将其发送到服务器,并将响应写入 file3.tsr

openssl ts -query -data file3.txt -cert | tee file3.tsq \
      | tsget -h http://tsa.opentsa.org:8080/tsa \
      -o file3.tsr

通过 HTTPS 获取 file1.tsq 的时间戳响应,不进行客户端身份验证

tsget -h https://tsa.opentsa.org:8443/tsa \
      -C cacerts.pem file1.tsq

通过 HTTPS 获取 file1.tsq 的时间戳响应,使用基于证书的客户端身份验证(如果 client_key.pem 受保护,它将提示您输入密码)

tsget -h https://tsa.opentsa.org:8443/tsa -C cacerts.pem \
      -k client_key.pem -c client_cert.pem file1.tsq

您可以通过使用 TSGET 环境变量来缩短前面的命令行。以下命令与前面的示例执行相同的操作

TSGET='-h https://tsa.opentsa.org:8443/tsa -C cacerts.pem \
      -k client_key.pem -c client_cert.pem'
export TSGET
tsget file1.tsq

另请参见

openssl(1)openssl-ts(1)WWW::Curl::Easyhttps://www.rfc-editor.org/rfc/rfc3161.html

版权所有 2006-2020 OpenSSL 项目作者。保留所有权利。

根据 Apache 许可证 2.0(“许可证”)授权。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获得副本。