OpenSSL命令---ts

来源:互联网 发布:手机淘宝注册店铺步骤 编辑:程序博客网 时间:2024/05/22 09:00

用途:

时间戳处理工具(客户端/服务器模式)。该命令是一个基本的时间戳权威认证机构(TSA)的客户端和服务器端应用程序(遵循RFC3161协议)。TSA是一个PKI调度工具中的一部分,它的角色是提供一个证明:证明某个数据在一段时间内存在。下面是协议的摘要:

1、   TSA客户端对一个数据文件计算一个哈希值,并将它发送到TSA

2、   TSA将当前时间依附到所接收到的hash值的后面,并签名,发送时间戳标记到客户端。在创建这个标记是根据原始数据来产生的。

3、   TSA客户端接收到时间戳标记并验证签名。如果检测到标记包含相同的哈希值再次发送到TSA

一个DER编码格式的协议数据单元传输到TSA,然后TSA发送时间戳响应到客户端。ts命令有三个功能:根据数据内容创建一个时间戳请求文件、根据请求文件创建一个时间戳响应以及验证时间戳响应文件。

RFC3161中,它不支持用HTTPTCP自动发送请求文件以及响应文件。用户用邮件或者ftp服务器来发送它们。

用法:

openssl ts [-query] [-rand files] [-config configfile] [-data file_to_hash] [-digest digest_bytes] [-md2/-md4/-md5/-sha/-sha1/-mdc2/-ripemd160] [-policy object_id] [-no_nonce] [-cert] [-in request.tsq] [-out request.tsq] [-text] openssl ts [-reply] [-config configure] [-section tsa_section] [-queryfile request.req] [-passin password_src] [-signer tsa_cert.pem] [-inkey private.pem] [-chain certs_file.pem] [-policy object_id] [-in response.tsr] [-token_in] [-out response.tsr] [-token_out] [-text] [-engine id]openssl ts [-verify] [-data file_to_hash] [-digest digest_bytes] [-queryfile request.tsq] [-in response.tsr] [-token_in][-CApath trusted_cert_path] [-CAfile trusted_certs.pem] [-untrusted cert_file.pem]

选项说明:

时间戳请求产生的命令:

-query:根据下面的选项来创建和打印一个时间戳请求文件。

-rand files:随机数种子文件。可以包含多个文件。

-config configfile:要用的配置文件,这个选项可以不顾OPENSSL_CONF的环境变量。仅仅只有OID字节使用。

-data file_to_hash:创建时间戳请求的数据文件。如果-data命令和-digest命令没有指定,则是标准输入。

-digest digest_bytes:有可能的话明确的指定消息的印记。印记必须是十六进制格式的数据,两字符组成一字节,字节数可以用:号分开(例如e.g. 1A:F6:01:...或者1AF601...)。字节数必须匹配用的摘要算法的长度值。

-md2/-md4/-md5/-sha/-sha1/-mdc2/-ripemd160:计算摘要值的摘要算法。默认的是SHA1

-policy object_id:客户端希望TSA创建时间戳标记用的id值。如果没有指定,则使用默认的id值。

-no_nonce:如果该选项被设置,则没有指定临时的值。否则一个临时的64字节的随机数将会包含到请求文件中。推荐时用临时的值以防止重放攻击。

-certTSA期望包含签名证书到响应中。

-in request.tsq:该选项预先指定了一个输出目录,以打印DER格式的时间戳请求。如果以可读的格式来检查请求文件的上下文将会非常有用。

-out request.tsq:请求文件的输出文件。默认是标准输出。

-text:指定输出的格式是human-readable格式来代替DER格式。

一个时间戳的响应(TimeStampResp)如果包含了一个响应状态值和自身的时间戳标记(ContentInfo)。

产生时间戳响应的命令如下:

-reply:该命令根据请求文件创建一个时间戳响应或时间戳标记,并用human-readable的格式打印出时间戳响应或标记。如果token_out没有指定,则输出是一个时间戳响应(TimeStampResp)否则就是时间戳标记(ContentInfo)。

-config configure:要用的配置文件,这个选项可以不顾OPENSSL_CONF的环境变量。仅仅只有OID字节使用。

-section tsa_section:配置文件的字段名字,包含了响应产生器。如果没有指定,则使用默认的TSA字段。

-queryfile request.reqDER格式的时间戳请求文件。

-passin password_srcTSA私钥的保护口令。

-signer tsa_cert.pemPEM格式的TSA的签名证书。TSA的签名证书必须有正确的扩展密钥用法:时间戳。扩展的密钥用法必须是临界的,否则要遭到拒绝。

-inkey private.pemPEM格式的TSA的签名证书私钥。

-chain certs_file.pemPEM格式的证书链,它包含附加的响应的签名者的证书。

-policyobject_id:默认的policy用于响应文件,除非客户端明确的要求需要详细的TSA policy

-in response.tsr:预先指定的DER格式的时间戳响应或时间戳标记(-token_in指定)的保存目录。这个选项不需要一个请求文件,如果以可读的格式来检查DER格式的时间戳响应或时间戳标记将会非常有用。如果输入的是一个标记,输出是一个时间戳响应,则一个默认的‘granted’状态值将添加到标记中。

-token_in:这个标记表示可以和-in一起使用,来表示输入的是一个时间戳标记,而默认的是一个时间戳响应。

-out response.tsr:响应的保存位置。格式和上下文要依据其它选项(-text-token_out)。默认的是标准输出。

-token_out:输出是一个时间戳标记,默认输出则是时间戳响应。

-text:如果指定输出的格式是human-readable格式来代替DER格式。

-engine id:硬件引擎。

验证时间戳响应文件的命令如下:

-verify:该命令验证一个时间戳响应或时间戳标记的有效性,并和时间戳请求文件向匹配。该命令不使用配置文件。

-data file_to_hash:请求或标记必须验证,不管file_to_hash。该文件是消息摘要算法对标记的摘要值。它不能和-digest-queryfile两个命令一起使用。

-digest digest_bytes:请求或标记必须验证,不管digest_bytes指定的消息摘要值。字节数必须匹配标记中的消息摘要算法的长度值。它不能和-data-queryfile两个命令一起使用。

-queryfile request.tsqDER格式的时间戳请求文件。它不能和-digest-data两个命令一起使用。

-in response.tsr:需要验证的DER格式的时间戳响应文件。

-token_in:这个标记表示可以和-in一起使用,来表示输入的是一个DER格式的时间戳标记,而默认的是一个时间戳响应。

-CApath trusted_cert_path:包含客户端可信任证书的路径。这个选项和-Cafile必须被指定。

-CAfile trusted_certs.pemPEM格式的包含可信任的自签名的CA证书。这个选项和- CApath必须被指定。

-untrusted cert_file.pemPEM格式的不信任的证书集合。它有可能被用于被创建TSA签名者的证书。这个文件必须包含TSA签名证书和所有的中间CA证书。

配置文件选项:

queryreply命令需要一个配置文件,该配置文件定义在OPENSSL_CONF环境变量中。query命令j仅仅使用了OID名字段。reply命令需要配置文件做很多操作。配置文件的语法描述如下:

B<tsa> section, B<default_tsa>:它是一个主section,指定了其他字段的名字,包含了reply命令的所有操作。

B<oid_file>:看L<ca(1)|ca(1)>的描述。

B<oid_section>:看L<ca(1)|ca(1)>的描述。

B<RANDFILE>:看L<ca(1)|ca(1)>的描述。

B<serial>:包含了最后时间戳响应的16进制的序列号。这个值是从1按顺序递增的。如果这个文件不存在,则时间戳响应则会创建一个新文件,使序列号的值为1

B<signer_cert>PEM格式的TSA签名证书。和-signer命令的意思一样。

B<certs>:包含了一系列的PEM格式的证书,它们要包含到响应文件中。和-chain命令的意思一样。

B<signer_key>PEM格式的TSA私钥文件。和-inkey命令的意思一样。

B<default_policy>:当请求文件没有授权任何policy的时候,则使用它。和-policy命令的意思一样。

B<other_policies>policy的列表,用逗号分开。当请求文件明确的指定其中的一个时,才能够使用。

B<digests>TSA能够接受的消息摘要算法集合。至少指定一种。

B<accuracy>TSA时间源的精确度:秒、毫秒、微妙。例如:secs:1, millisecs:500, microsecs:100。任何组件假定这个选项为0

B<clock_precision_digits>:指定以秒为单位的最大值。这个选项包含时间域。后面的零必须从这个时间移除,它有可能比数字稍微小一点,或者一直都没有。仅仅在UNIX平台下支持。最大值是6,默认为0

B<ordering>:如果这个选项设置为yes,则由TSA产生的内容有序。

B<tsa_name>:如果这个选项设置为yesTSA的颁发者的名字必须包含到响应的name域中。默认为no

B<ess_cert_id_chain>:由TSA创建的签名数据对象包含签名证书的标记。如果这个选项被设置为yesB<certs>变量或 B<-chain> 选项将被指定,证书链中的标记值将会包含到SigningCertificate的签名属性中。如果这个选项设置为no,仅仅包含签名证书标记。默认为no

环境变量:

所有的实例都基于OPENSSL_CONF环境变量中设置了相对应的值。它可以被B<-config>命令行所推翻。

实例之时间戳请求:

SHA1摘要算法来创建一个时间戳请求,不包含临时的值和policy,响应文件中不需要证书:

openssl ts -query -data design1.txt -no_nonce -out design1.tsq


根据消息印记来创建一个相似的时间戳请求值:

openssl ts -query -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \ -no_nonce -out design1.tsq


human readable格式来打印请求文件的上下文数据:

openssl ts -query -in design1.tsq -text


Md5摘要算法来创建一个时间戳请求,包含临时的值和policy,响应文件中需要证书:

  openssl ts -query -data design2.txt -md5 -policy tsa_policy1 -cert -out design2.tsq


实例值时间戳响应:

在创建一个响应文件之前,需要一个签名证书,该证书必须包含扩展的密钥用法:时间戳。在创建证书的时候,你可以添加'extendedKeyUsage = critical,timeStamping'代码到证书中。

根据请求文件创建一个响应文件:

openssl ts -reply -queryfile design1.tsq -inkey tsakey.pem \-signer tsacert.pem -out design1.tsr


如果想使用配置文件中的设置,则命令如下:

openssl ts -reply -queryfile design1.tsq -out design1.tsr


human readable格式打印一个时间戳响应到标准输出中:

openssl ts -reply -in design1.tsr –text


创建一个时间戳标记:

openssl ts -reply -queryfile design1.tsq -out design1_token.der -token_out


human readable格式打印一个时间戳标记到标准输出中:

openssl ts -reply -in design1_token.der -token_in -text -token_out


从时间戳响应中提取时间戳标记:

openssl ts -reply -in design1.tsr -out design1_token.der -token_out


在创建一个可用的响应时,添加一个'granted'到时间戳标记中:

openssl ts -reply -in design1_token.der -token_in -out design1.tsr


实例之时间戳验证:

根据响应文件验证一个时间戳响应文件:

openssl ts -verify -queryfile design1.tsq -in design1.tsr -CAfile cacert.pem -untrusted tsacert.pem


验证一个时间戳响应文件,包含证书链:

openssl ts -verify -queryfile design2.tsq -in design2.tsr -CAfile cacert.pem


验证时间戳标记:

openssl ts -verify -data design2.txt -in design2.tsr -CAfile cacert.pem


验证一个时间戳标记,根据消息印记:

openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \ -in design2.tsr -CAfile cacert.pem
原创粉丝点击