ts(1ssl)


NAME

   ts - Time Stamping Authority tool (client/server)

SYNOPSIS

   openssl ts -query [-rand file:file...]  [-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 configfile] [-section tsa_section]
   [-queryfile request.tsq] [-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]

DESCRIPTION

   The ts command is a basic Time Stamping Authority (TSA) client and
   server application as specified in RFC 3161 (Time-Stamp Protocol, TSP).
   A TSA can be part of a PKI deployment and its role is to provide long
   term proof of the existence of a certain datum before a particular
   time. Here is a brief description of the protocol:

   1.  The TSA client computes a one-way hash value for a data file and
       sends the hash to the TSA.

   2.  The TSA attaches the current date and time to the received hash
       value, signs them and sends the time stamp token back to the
       client. By creating this token the TSA certifies the existence of
       the original data file at the time of response generation.

   3.  The TSA client receives the time stamp token and verifies the
       signature on it. It also checks if the token contains the same hash
       value that it had sent to the TSA.

   There is one DER encoded protocol data unit defined for transporting a
   time stamp request to the TSA and one for sending the time stamp
   response back to the client. The ts command has three main functions:
   creating a time stamp request based on a data file, creating a time
   stamp response based on a request, verifying if a response corresponds
   to a particular request or a data file.

   There is no support for sending the requests/responses automatically
   over HTTP or TCP yet as suggested in RFC 3161. The users must send the
   requests either by ftp or e-mail.

OPTIONS

   Time Stamp Request generation
   The -query switch can be used for creating and printing a time stamp
   request with the following options:

   -rand file:file...
       The files containing random data for seeding the random number
       generator. Multiple files can be specified, the separator is ; for
       MS-Windows, , for VMS and : for all other platforms. (Optional)

   -config configfile
       The configuration file to use, this option overrides the
       OPENSSL_CONF environment variable. Only the OID section of the
       config file is used with the -query command. (Optional)

   -data file_to_hash
       The data file for which the time stamp request needs to be created.
       stdin is the default if neither the -data nor the -digest parameter
       is specified. (Optional)

   -digest digest_bytes
       It is possible to specify the message imprint explicitly without
       the data file. The imprint must be specified in a hexadecimal
       format, two characters per byte, the bytes optionally separated by
       colons (e.g. 1A:F6:01:... or 1AF601...). The number of bytes must
       match the message digest algorithm in use. (Optional)

   -md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160|...
       The message digest to apply to the data file, it supports all the
       message digest algorithms that are supported by the openssl dgst
       command.  The default is SHA-1. (Optional)

   -policy object_id
       The policy that the client expects the TSA to use for creating the
       time stamp token. Either the dotted OID notation or OID names
       defined in the config file can be used. If no policy is requested
       the TSA will use its own default policy. (Optional)

   -no_nonce
       No nonce is specified in the request if this option is given.
       Otherwise a 64 bit long pseudo-random none is included in the
       request. It is recommended to use nonce to protect against replay-
       attacks. (Optional)

   -cert
       The TSA is expected to include its signing certificate in the
       response. (Optional)

   -in request.tsq
       This option specifies a previously created time stamp request in
       DER format that will be printed into the output file. Useful when
       you need to examine the content of a request in human-readable

       format. (Optional)

   -out request.tsq
       Name of the output file to which the request will be written.
       Default is stdout. (Optional)

   -text
       If this option is specified the output is human-readable text
       format instead of DER. (Optional)

   Time Stamp Response generation
   A time stamp response (TimeStampResp) consists of a response status and
   the time stamp token itself (ContentInfo), if the token generation was
   successful. The -reply command is for creating a time stamp response or
   time stamp token based on a request and printing the response/token in
   human-readable format. If -token_out is not specified the output is
   always a time stamp response (TimeStampResp), otherwise it is a time
   stamp token (ContentInfo).

   -config configfile
       The configuration file to use, this option overrides the
       OPENSSL_CONF environment variable. See CONFIGURATION FILE OPTIONS
       for configurable variables. (Optional)

   -section tsa_section
       The name of the config file section conatining the settings for the
       response generation. If not specified the default TSA section is
       used, see CONFIGURATION FILE OPTIONS for details. (Optional)

   -queryfile request.tsq
       The name of the file containing a DER encoded time stamp request.
       (Optional)

   -passin password_src
       Specifies the password source for the private key of the TSA. See
       PASS PHRASE ARGUMENTS in openssl(1). (Optional)

   -signer tsa_cert.pem
       The signer certificate of the TSA in PEM format. The TSA signing
       certificate must have exactly one extended key usage assigned to
       it: timeStamping. The extended key usage must also be critical,
       otherwise the certificate is going to be refused. Overrides the
       signer_cert variable of the config file. (Optional)

   -inkey private.pem
       The signer private key of the TSA in PEM format. Overrides the
       signer_key config file option. (Optional)

   -chain certs_file.pem
       The collection of certificates in PEM format that will all be
       included in the response in addition to the signer certificate if
       the -cert option was used for the request. This file is supposed to
       contain the certificate chain for the signer certificate from its
       issuer upwards. The -reply command does not build a certificate
       chain automatically. (Optional)

   -policy object_id
       The default policy to use for the response unless the client
       explicitly requires a particular TSA policy. The OID can be
       specified either in dotted notation or with its name. Overrides the
       default_policy config file option. (Optional)

   -in response.tsr
       Specifies a previously created time stamp response or time stamp
       token (if -token_in is also specified) in DER format that will be
       written to the output file. This option does not require a request,
       it is useful e.g. when you need to examine the content of a
       response or token or you want to extract the time stamp token from
       a response. If the input is a token and the output is a time stamp
       response a default 'granted' status info is added to the token.
       (Optional)

   -token_in
       This flag can be used together with the -in option and indicates
       that the input is a DER encoded time stamp token (ContentInfo)
       instead of a time stamp response (TimeStampResp). (Optional)

   -out response.tsr
       The response is written to this file. The format and content of the
       file depends on other options (see -text, -token_out). The default
       is stdout. (Optional)

   -token_out
       The output is a time stamp token (ContentInfo) instead of time
       stamp response (TimeStampResp). (Optional)

   -text
       If this option is specified the output is human-readable text
       format instead of DER. (Optional)

   -engine id
       Specifying an engine (by its unique id string) will cause ts to
       attempt to obtain a functional reference to the specified engine,
       thus initialising it if needed. The engine will then be set as the
       default for all available algorithms. Default is builtin.
       (Optional)

   Time Stamp Response verification
   The -verify command is for verifying if a time stamp response or time
   stamp token is valid and matches a particular time stamp request or
   data file. The -verify command does not use the configuration file.

   -data file_to_hash
       The response or token must be verified against file_to_hash. The
       file is hashed with the message digest algorithm specified in the
       token.  The -digest and -queryfile options must not be specified
       with this one.  (Optional)

   -digest digest_bytes
       The response or token must be verified against the message digest
       specified with this option. The number of bytes must match the
       message digest algorithm specified in the token. The -data and
       -queryfile options must not be specified with this one. (Optional)

   -queryfile request.tsq
       The original time stamp request in DER format. The -data and
       -digest options must not be specified with this one. (Optional)

   -in response.tsr
       The time stamp response that needs to be verified in DER format.
       (Mandatory)

   -token_in
       This flag can be used together with the -in option and indicates
       that the input is a DER encoded time stamp token (ContentInfo)
       instead of a time stamp response (TimeStampResp). (Optional)

   -CApath trusted_cert_path
       The name of the directory containing the trused CA certificates of
       the client. See the similar option of verify(1) for additional
       details. Either this option or -CAfile must be specified.
       (Optional)

   -CAfile trusted_certs.pem
       The name of the file containing a set of trusted self-signed CA
       certificates in PEM format. See the similar option of verify(1) for
       additional details. Either this option or -CApath must be
       specified.  (Optional)

   -untrusted cert_file.pem
       Set of additional untrusted certificates in PEM format which may be
       needed when building the certificate chain for the TSA's signing
       certificate. This file must contain the TSA signing certificate and
       all intermediate CA certificates unless the response includes them.
       (Optional)

CONFIGURATION FILE OPTIONS

   The -query and -reply commands make use of a configuration file defined
   by the OPENSSL_CONF environment variable. See config(5) for a general
   description of the syntax of the config file. The -query command uses
   only the symbolic OID names section and it can work without it.
   However, the -reply command needs the config file for its operation.

   When there is a command line switch equivalent of a variable the switch
   always overrides the settings in the config file.

   tsa section, default_tsa
       This is the main section and it specifies the name of another
       section that contains all the options for the -reply command. This
       default section can be overridden with the -section command line
       switch. (Optional)

   oid_file
       See ca(1) for description. (Optional)

   oid_section
       See ca(1) for description. (Optional)

   RANDFILE
       See ca(1) for description. (Optional)

   serial
       The name of the file containing the hexadecimal serial number of
       the last time stamp response created. This number is incremented by
       1 for each response. If the file does not exist at the time of
       response generation a new file is created with serial number 1.
       (Mandatory)

   crypto_device
       Specifies the OpenSSL engine that will be set as the default for
       all available algorithms. The default value is builtin, you can
       specify any other engines supported by OpenSSL (e.g. use chil for
       the NCipher HSM).  (Optional)

   signer_cert
       TSA signing certificate in PEM format. The same as the -signer
       command line option. (Optional)

   certs
       A file containing a set of PEM encoded certificates that need to be
       included in the response. The same as the -chain command line
       option. (Optional)

   signer_key
       The private key of the TSA in PEM format. The same as the -inkey
       command line option. (Optional)

   default_policy
       The default policy to use when the request does not mandate any
       policy. The same as the -policy command line option. (Optional)

   other_policies
       Comma separated list of policies that are also acceptable by the
       TSA and used only if the request explicitly specifies one of them.
       (Optional)

   digests
       The list of message digest algorithms that the TSA accepts. At
       least one algorithm must be specified. (Mandatory)

   accuracy
       The accuracy of the time source of the TSA in seconds, milliseconds
       and microseconds. E.g. secs:1, millisecs:500, microsecs:100. If any
       of the components is missing zero is assumed for that field.
       (Optional)

   clock_precision_digits
       Specifies the maximum number of digits, which represent the
       fraction of seconds, that  need to be included in the time field.
       The trailing zeroes must be removed from the time, so there might
       actually be fewer digits, or no fraction of seconds at all.
       Supported only on UNIX platforms.  The maximum value is 6, default
       is 0.  (Optional)

   ordering
       If this option is yes the responses generated by this TSA can
       always be ordered, even if the time difference between two
       responses is less than the sum of their accuracies. Default is no.
       (Optional)

   tsa_name
       Set this option to yes if the subject name of the TSA must be
       included in the TSA name field of the response. Default is no.
       (Optional)

   ess_cert_id_chain
       The SignedData objects created by the TSA always contain the
       certificate identifier of the signing certificate in a signed
       attribute (see RFC 2634, Enhanced Security Services). If this
       option is set to yes and either the certs variable or the -chain
       option is specified then the certificate identifiers of the chain
       will also be included in the SigningCertificate signed attribute.
       If this variable is set to no, only the signing certificate
       identifier is included. Default is no. (Optional)

ENVIRONMENT VARIABLES

   OPENSSL_CONF contains the path of the configuration file and can be
   overridden by the -config command line option.

EXAMPLES

   All the examples below presume that OPENSSL_CONF is set to a proper
   configuration file, e.g. the example configuration file
   openssl/apps/openssl.cnf will do.

   Time Stamp Request
   To create a time stamp request for design1.txt with SHA-1 without nonce
   and policy and no certificate is required in the response:

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

   To create a similar time stamp request with specifying the message
   imprint explicitly:

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

   To print the content of the previous request in human readable format:

     openssl ts -query -in design1.tsq -text

   To create a time stamp request which includes the MD-5 digest of
   design2.txt, requests the signer certificate and nonce, specifies a
   policy id (assuming the tsa_policy1 name is defined in the OID section
   of the config file):

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

   Time Stamp Response
   Before generating a response a signing certificate must be created for
   the TSA that contains the timeStamping critical extended key usage
   extension without any other key usage extensions. You can add the
   'extendedKeyUsage = critical,timeStamping' line to the user certificate
   section of the config file to generate a proper certificate. See
   req(1), ca(1), x509(1) for instructions. The examples below assume that
   cacert.pem contains the certificate of the CA, tsacert.pem is the
   signing certificate issued by cacert.pem and tsakey.pem is the private
   key of the TSA.

   To create a time stamp response for a request:

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

   If you want to use the settings in the config file you could just
   write:

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

   To print a time stamp reply to stdout in human readable format:

     openssl ts -reply -in design1.tsr -text

   To create a time stamp token instead of time stamp response:

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

   To print a time stamp token to stdout in human readable format:

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

   To extract the time stamp token from a response:

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

   To add 'granted' status info to a time stamp token thereby creating a
   valid response:

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

   Time Stamp Verification
   To verify a time stamp reply against a request:

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

   To verify a time stamp reply that includes the certificate chain:

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

   To verify a time stamp token against the original data file:
     openssl ts -verify -data design2.txt -in design2.tsr \      -CAfile
   cacert.pem

   To verify a time stamp token against a message imprint:
     openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \
         -in design2.tsr -CAfile cacert.pem

   You could also look at the 'test' directory for more examples.

BUGS

   If you find any bugs or you have suggestions please write to Zoltan
   Glozik <zglozik@opentsa.org>. Known issues:

   *   No support for time stamps over SMTP, though it is quite easy to
       implement an automatic e-mail based TSA with procmail(1) and
       perl(1). HTTP server support is provided in the form of a separate
       apache module. HTTP client support is provided by tsget(1). Pure
       TCP/IP protocol is not supported.

   *   The file containing the last serial number of the TSA is not locked
       when being read or written. This is a problem if more than one
       instance of openssl(1) is trying to create a time stamp response at
       the same time. This is not an issue when using the apache server
       module, it does proper locking.

   *   Look for the FIXME word in the source files.

   *   The source code should really be reviewed by somebody else, too.

   *   More testing is needed, I have done only some basic tests (see
       test/testtsa).

AUTHOR

   Zoltan Glozik <zglozik@opentsa.org>, OpenTSA project
   (http://www.opentsa.org)

SEE ALSO

   tsget(1), openssl(1), req(1), x509(1), ca(1), genrsa(1), config(5)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.