openssl ts
用途:
时间戳处理工具(客户端/服务器模式)。该命令是一个基本的时间戳权威认证机构(TSA)的客户端和服务器端应用程序(RFC3161协议)。TSA是一个PKI调度工具中的不部分,它的角色是提供一个证明:证明某个数据在一段时间内存在。
a.TSA客户端对一个数据文件计算一个哈希值,并将它发送到TSA
b.TSA将当时时间衣服到所接受到的hash值后面,并签名,发送时间戳标记到客户端。在创建这个标记是根据原始数据来产生的。
c.TSA客户daunting接受到的时间戳标记并验证签名。如果检测到标记包含相同的哈希值再次发送到TSA.
语法:
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] [-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]
[-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字节的随机数将会包含到请求文件中。推荐时用临时的值以防止重放攻击。
-cert:TSA期望包含签名证书到响应中。
-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.req:DER格式的时间戳请求文件。
-passin password_src:TSA私钥的保护口令。
-signer tsa_cert.pem:PEM格式的TSA的签名证书。TSA的签名证书必须有正确的扩展密钥用法:时间戳。扩展的密钥用法必须是临界的,否则要遭到拒绝。
-inkey private.pem:PEM格式的TSA的签名证书私钥。
-chain certs_file.pem:PEM格式的证书链,它包含附加的响应的签名者的证书。
-policy object_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.tsq:DER格式的时间戳请求文件。它不能和-digest、-data两个命令一起使用。
-in response.tsr:需要验证的DER格式的时间戳响应文件。
-token_in:这个标记表示可以和-in一起使用,来表示输入的是一个DER格式的时间戳标记,而默认的是一个时间戳响应。
-CApath trusted_cert_path:包含客户端可信任证书的路径。这个选项和-Cafile必须被指定。
-CAfile trusted_certs.pem:PEM格式的包含可信任的自签名的CA证书。这个选项和- CApath必须被指定。
-untrusted cert_file.pem:PEM格式的不信任的证书集合。它有可能被用于被创建TSA签名者的证书。这个文件必须包含TSA签名证书和所有的中间CA证书。
配置文件选项:
query和reply命令需要一个配置文件,该配置文件定义在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>:如果这个选项设置为yes,TSA的颁发者的名字必须包含到响应的name域中。默认为no。
B<ess_cert_id_chain>:由TSA创建的签名数据对象包含签名证书的标记。如果这个选项被设置为yes,B<certs> 变量或 B<-chain> 选项将被指定,证书链中的标记值将会包含到SigningCertificate的签名属性中。如果这个选项设置为no,仅仅包含签名证书标记。默认为no。