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.tsq 和 file2.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.tsq 和 file2.tsq 的时间戳响应,显示进度,输出分别写入 file1.reply 和 file2.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::Easy,https://www.rfc-editor.org/rfc/rfc3161.html
版权
版权所有 2006-2020 OpenSSL 项目作者。保留所有权利。
根据 Apache 许可证 2.0(“许可证”)授权。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获得副本。