OpenSSL命令---tsget

本文介绍了一个用于处理时间戳的HTTP/HTTPS客户端工具。该工具主要用于向时间戳服务器发送请求并将响应保存到文件中。文章详细解释了命令的使用方法及各个选项的功能,并通过实例展示了如何使用此工具。

用途:

时间戳处理工具(HTTP/HTTPS客户端)。该命令发送一个时间戳请求(RFC3161)到一个HTTP/HTTPS时间戳服务器,服务器储存一个时间戳相应到文件中。这个工具不能用于创建一个请求和验证响应,可以用ts命令来执行这项操作。该命令可以在一个未关闭的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


该命令期待一个application/timestamp-reply类型的响应。该响应被保存到一个文件中(没有任何相关的解释)。

用法:

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


选项说明:

-h server_urlHTTP/HTTPS服务器地址,用于发送时间戳请求。

-e extension:该选项没有给出输出文件的额外信息值。

-o output:当一个请求被发送到服务器后,它才能够被指定。时间戳响应将会被写入到所指定的output文件。“-”表示为标准输出。当多个时间戳请求或输出文件的名字不够时,他们将会根据输入的文件和默认的或指定的额外的内容来衍生相对应的名字。

-v:把当前正在处理的请求名字输出到标准错误中。

-d:对最下面的curl来说,选择版本的模式。可以参考链接中的调试信息的详细说明。

-k private_key:用户的私钥文件。它有可能被一个密钥所保护。必须指定-c选项。

-p key_password:用户私钥文件的保护口令。如果省略了这个命令,则终端会提示输入口令。

-c client_cert:用户的X509格式的证书。必须指定-k选项。

-C CA_certs:可信任的证书储存区。在文件中,包含证书链的对方证书必须包含一个指定的CA证书。必须要给出-C命令或-P命令中一个。

-p CA_path:包含能够验证对方证书的可信任的CA证书路径。

-r files:随机种子产生文件。

-g EGD_socket:从随机数获取到的EGD套接字,

request:包含RFC3161编码格式的时间戳请求列表文件。如果没有请求被指定,则仅仅一个请求将会被发送到度武器并且从标准输入中读取数据。

实例:

file1.tsq中获取到时间戳响应,并输出到file1.tsr中:

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


file1.tsqfile2.tsq中获取到时间戳响应并显示处理流程,并输出到file1.tsrfile2.tsr中:

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


创建一个时间戳请求,并写入到file3.tsq中,发送到服务器并写入到file2.tsr中:

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


file1.tsq中获取到时间戳响应并没有客户端验证:

tsget -h https://tsa.opentsa.org:8443/tsa \
-C cacerts.pem file1.tsq
OpenSSL 提供了对 AES 密钥包装(Key Wrap)的支持,其中包括 AES256-WRAP-PAD 模式。这种模式通常用于加密和解密密钥材料,例如在 PKCS#8 或 CMS 中使用。AES256-WRAP-PAD 是一种基于 AES-256 的密钥包装算法,它在数据末尾添加填充以确保其长度符合 AES 块大小的要求。 ### 使用 OpenSSL 进行 AES256-WRAP-PAD 加密 可以使用 `openssl enc` 命令配合 `-aes-256-wrap-pad` 选项来进行 AES256-WRAP-PAD 加密。加密时需要提供一个用于包装的密钥文件。 ```bash openssl enc -aes-256-wrap-pad -in plaintext.key -out wrapped.key -k wrapkey.bin -K $(hexdump -v -n 32 -e '1/1 "%.2X"' wrapkey.bin) ``` 其中: - `plaintext.key` 是待加密的明文密钥文件。 - `wrapped.key` 是输出的加密后的密钥文件。 - `wrapkey.bin` 是用于包装的密钥文件(二进制格式)。 - `-K` 参数需要传入一个十六进制表示的密钥,此处通过 `hexdump` 从 `wrapkey.bin` 提取前 32 字节作为 AES-256 密钥[^1]。 ### 使用 OpenSSL 进行 AES256-WRAP-PAD 解密 同样地,可以使用 `openssl enc` 命令配合 `-d` 选项来进行解密操作。 ```bash openssl enc -aes-256-wrap-pad -d -in wrapped.key -out plaintext.key -k wrapkey.bin -K $(hexdump -v -n 32 -e '1/1 "%.2X"' wrapkey.bin) ``` 其中: - `wrapped.key` 是加密后的密钥文件。 - `plaintext.key` 是输出的解密后的明文密钥文件。 - `-d` 表示解密操作。 - 其余参数与加密命令相同[^1]。 ### 注意事项 1. **密钥格式**:AES256-WRAP-PAD 要求密钥长度为 256 位(32 字节),因此必须确保 `wrapkey.bin` 文件的前 32 字节是有效的密钥材料。 2. **填充处理**:AES256-WRAP-PAD 会在加密时自动添加填充,并在解密时移除填充,因此无需手动处理填充内容。 3. **兼容性**:AES256-WRAP-PAD 主要用于密钥包装,不适用于一般数据的加密和解密。 ### 示例代码:生成 AES256 包装密钥 以下是一个生成 256 位随机密钥的示例: ```bash openssl rand -out wrapkey.bin 32 ``` 此命令生成一个 32 字节的随机密钥并保存到 `wrapkey.bin` 文件中。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值