Blame doc/man1/s_client.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
openssl-s_client,
Packit Service 084de1
s_client - SSL/TLS client program
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
B<openssl> B<s_client>
Packit Service 084de1
[B<-help>]
Packit Service 084de1
[B<-connect host:port>]
Packit Service 084de1
[B<-bind host:port>]
Packit Service 084de1
[B<-proxy host:port>]
Packit Service 084de1
[B<-unix path>]
Packit Service 084de1
[B<-4>]
Packit Service 084de1
[B<-6>]
Packit Service 084de1
[B<-servername name>]
Packit Service 084de1
[B<-noservername>]
Packit Service 084de1
[B<-verify depth>]
Packit Service 084de1
[B<-verify_return_error>]
Packit Service 084de1
[B<-cert filename>]
Packit Service 084de1
[B<-certform DER|PEM>]
Packit Service 084de1
[B<-key filename>]
Packit Service 084de1
[B<-keyform DER|PEM>]
Packit Service 084de1
[B<-cert_chain filename>]
Packit Service 084de1
[B<-build_chain>]
Packit Service 084de1
[B<-xkey>]
Packit Service 084de1
[B<-xcert>]
Packit Service 084de1
[B<-xchain>]
Packit Service 084de1
[B<-xchain_build>]
Packit Service 084de1
[B<-xcertform PEM|DER>]
Packit Service 084de1
[B<-xkeyform PEM|DER>]
Packit Service 084de1
[B<-pass arg>]
Packit Service 084de1
[B<-CApath directory>]
Packit Service 084de1
[B<-CAfile filename>]
Packit Service 084de1
[B<-chainCApath directory>]
Packit Service 084de1
[B<-chainCAfile filename>]
Packit Service 084de1
[B<-no-CAfile>]
Packit Service 084de1
[B<-no-CApath>]
Packit Service 084de1
[B<-requestCAfile filename>]
Packit Service 084de1
[B<-dane_tlsa_domain domain>]
Packit Service 084de1
[B<-dane_tlsa_rrdata rrdata>]
Packit Service 084de1
[B<-dane_ee_no_namechecks>]
Packit Service 084de1
[B<-attime timestamp>]
Packit Service 084de1
[B<-check_ss_sig>]
Packit Service 084de1
[B<-crl_check>]
Packit Service 084de1
[B<-crl_check_all>]
Packit Service 084de1
[B<-explicit_policy>]
Packit Service 084de1
[B<-extended_crl>]
Packit Service 084de1
[B<-ignore_critical>]
Packit Service 084de1
[B<-inhibit_any>]
Packit Service 084de1
[B<-inhibit_map>]
Packit Service 084de1
[B<-no_check_time>]
Packit Service 084de1
[B<-partial_chain>]
Packit Service 084de1
[B<-policy arg>]
Packit Service 084de1
[B<-policy_check>]
Packit Service 084de1
[B<-policy_print>]
Packit Service 084de1
[B<-purpose purpose>]
Packit Service 084de1
[B<-suiteB_128>]
Packit Service 084de1
[B<-suiteB_128_only>]
Packit Service 084de1
[B<-suiteB_192>]
Packit Service 084de1
[B<-trusted_first>]
Packit Service 084de1
[B<-no_alt_chains>]
Packit Service 084de1
[B<-use_deltas>]
Packit Service 084de1
[B<-auth_level num>]
Packit Service 084de1
[B<-nameopt option>]
Packit Service 084de1
[B<-verify_depth num>]
Packit Service 084de1
[B<-verify_email email>]
Packit Service 084de1
[B<-verify_hostname hostname>]
Packit Service 084de1
[B<-verify_ip ip>]
Packit Service 084de1
[B<-verify_name name>]
Packit Service 084de1
[B<-build_chain>]
Packit Service 084de1
[B<-x509_strict>]
Packit Service 084de1
[B<-reconnect>]
Packit Service 084de1
[B<-showcerts>]
Packit Service 084de1
[B<-debug>]
Packit Service 084de1
[B<-msg>]
Packit Service 084de1
[B<-nbio_test>]
Packit Service 084de1
[B<-state>]
Packit Service 084de1
[B<-nbio>]
Packit Service 084de1
[B<-crlf>]
Packit Service 084de1
[B<-ign_eof>]
Packit Service 084de1
[B<-no_ign_eof>]
Packit Service 084de1
[B<-psk_identity identity>]
Packit Service 084de1
[B<-psk key>]
Packit Service 084de1
[B<-psk_session file>]
Packit Service 084de1
[B<-quiet>]
Packit Service 084de1
[B<-ssl3>]
Packit Service 084de1
[B<-tls1>]
Packit Service 084de1
[B<-tls1_1>]
Packit Service 084de1
[B<-tls1_2>]
Packit Service 084de1
[B<-tls1_3>]
Packit Service 084de1
[B<-no_ssl3>]
Packit Service 084de1
[B<-no_tls1>]
Packit Service 084de1
[B<-no_tls1_1>]
Packit Service 084de1
[B<-no_tls1_2>]
Packit Service 084de1
[B<-no_tls1_3>]
Packit Service 084de1
[B<-dtls>]
Packit Service 084de1
[B<-dtls1>]
Packit Service 084de1
[B<-dtls1_2>]
Packit Service 084de1
[B<-sctp>]
Packit Service 084de1
[B<-sctp_label_bug>]
Packit Service 084de1
[B<-fallback_scsv>]
Packit Service 084de1
[B<-async>]
Packit Service 084de1
[B<-max_send_frag>]
Packit Service 084de1
[B<-split_send_frag>]
Packit Service 084de1
[B<-max_pipelines>]
Packit Service 084de1
[B<-read_buf>]
Packit Service 084de1
[B<-bugs>]
Packit Service 084de1
[B<-comp>]
Packit Service 084de1
[B<-no_comp>]
Packit Service 084de1
[B<-allow_no_dhe_kex>]
Packit Service 084de1
[B<-sigalgs sigalglist>]
Packit Service 084de1
[B<-curves curvelist>]
Packit Service 084de1
[B<-cipher cipherlist>]
Packit Service 084de1
[B<-ciphersuites val>]
Packit Service 084de1
[B<-serverpref>]
Packit Service 084de1
[B<-starttls protocol>]
Packit Service 084de1
[B<-xmpphost hostname>]
Packit Service 084de1
[B<-name hostname>]
Packit Service 084de1
[B<-engine id>]
Packit Service 084de1
[B<-tlsextdebug>]
Packit Service 084de1
[B<-no_ticket>]
Packit Service 084de1
[B<-sess_out filename>]
Packit Service 084de1
[B<-sess_in filename>]
Packit Service 084de1
[B<-rand file...>]
Packit Service 084de1
[B<-writerand file>]
Packit Service 084de1
[B<-serverinfo types>]
Packit Service 084de1
[B<-status>]
Packit Service 084de1
[B<-alpn protocols>]
Packit Service 084de1
[B<-nextprotoneg protocols>]
Packit Service 084de1
[B<-ct>]
Packit Service 084de1
[B<-noct>]
Packit Service 084de1
[B<-ctlogfile>]
Packit Service 084de1
[B<-keylogfile file>]
Packit Service 084de1
[B<-early_data file>]
Packit Service 084de1
[B<-enable_pha>]
Packit Service 084de1
[B<target>]
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
The B<s_client> command implements a generic SSL/TLS client which connects
Packit Service 084de1
to a remote host using SSL/TLS. It is a I<very> useful diagnostic tool for
Packit Service 084de1
SSL servers.
Packit Service 084de1
Packit Service 084de1
=head1 OPTIONS
Packit Service 084de1
Packit Service 084de1
In addition to the options below the B<s_client> utility also supports the
Packit Service 084de1
common and client only options documented
Packit Service 084de1
in the "Supported Command Line Commands" section of the L<SSL_CONF_cmd(3)>
Packit Service 084de1
manual page.
Packit Service 084de1
Packit Service 084de1
=over 4
Packit Service 084de1
Packit Service 084de1
=item B<-help>
Packit Service 084de1
Packit Service 084de1
Print out a usage message.
Packit Service 084de1
Packit Service 084de1
=item B<-connect host:port>
Packit Service 084de1
Packit Service 084de1
This specifies the host and optional port to connect to. It is possible to
Packit Service 084de1
select the host and port using the optional target positional argument instead.
Packit Service 084de1
If neither this nor the target positional argument are specified then an attempt
Packit Service 084de1
is made to connect to the local host on port 4433.
Packit Service 084de1
Packit Service 084de1
=item B<-bind host:port>]
Packit Service 084de1
Packit Service 084de1
This specifies the host address and or port to bind as the source for the
Packit Service 084de1
connection.  For Unix-domain sockets the port is ignored and the host is
Packit Service 084de1
used as the source socket address.
Packit Service 084de1
Packit Service 084de1
=item B<-proxy host:port>
Packit Service 084de1
Packit Service 084de1
When used with the B<-connect> flag, the program uses the host and port
Packit Service 084de1
specified with this flag and issues an HTTP CONNECT command to connect
Packit Service 084de1
to the desired server.
Packit Service 084de1
Packit Service 084de1
=item B<-unix path>
Packit Service 084de1
Packit Service 084de1
Connect over the specified Unix-domain socket.
Packit Service 084de1
Packit Service 084de1
=item B<-4>
Packit Service 084de1
Packit Service 084de1
Use IPv4 only.
Packit Service 084de1
Packit Service 084de1
=item B<-6>
Packit Service 084de1
Packit Service 084de1
Use IPv6 only.
Packit Service 084de1
Packit Service 084de1
=item B<-servername name>
Packit Service 084de1
Packit Service 084de1
Set the TLS SNI (Server Name Indication) extension in the ClientHello message to
Packit Service 084de1
the given value. 
Packit Service 084de1
If B<-servername> is not provided, the TLS SNI extension will be populated with 
Packit Service 084de1
the name given to B<-connect> if it follows a DNS name format. If B<-connect> is 
Packit Service 084de1
not provided either, the SNI is set to "localhost".
Packit Service 084de1
This is the default since OpenSSL 1.1.1.
Packit Service 084de1
Packit Service 084de1
Even though SNI should normally be a DNS name and not an IP address, if 
Packit Service 084de1
B<-servername> is provided then that name will be sent, regardless of whether 
Packit Service 084de1
it is a DNS name or not.
Packit Service 084de1
Packit Service 084de1
This option cannot be used in conjunction with B<-noservername>.
Packit Service 084de1
Packit Service 084de1
=item B<-noservername>
Packit Service 084de1
Packit Service 084de1
Suppresses sending of the SNI (Server Name Indication) extension in the
Packit Service 084de1
ClientHello message. Cannot be used in conjunction with the B<-servername> or
Packit Service 084de1
<-dane_tlsa_domain> options.
Packit Service 084de1
Packit Service 084de1
=item B<-cert certname>
Packit Service 084de1
Packit Service 084de1
The certificate to use, if one is requested by the server. The default is
Packit Service 084de1
not to use a certificate.
Packit Service 084de1
Packit Service 084de1
=item B<-certform format>
Packit Service 084de1
Packit Service 084de1
The certificate format to use: DER or PEM. PEM is the default.
Packit Service 084de1
Packit Service 084de1
=item B<-key keyfile>
Packit Service 084de1
Packit Service 084de1
The private key to use. If not specified then the certificate file will
Packit Service 084de1
be used.
Packit Service 084de1
Packit Service 084de1
=item B<-keyform format>
Packit Service 084de1
Packit Service 084de1
The private format to use: DER or PEM. PEM is the default.
Packit Service 084de1
Packit Service 084de1
=item B<-cert_chain>
Packit Service 084de1
Packit Service 084de1
A file containing trusted certificates to use when attempting to build the
Packit Service 084de1
client/server certificate chain related to the certificate specified via the
Packit Service 084de1
B<-cert> option.
Packit Service 084de1
Packit Service 084de1
=item B<-build_chain>
Packit Service 084de1
Packit Service 084de1
Specify whether the application should build the certificate chain to be
Packit Service 084de1
provided to the server.
Packit Service 084de1
Packit Service 084de1
=item B<-xkey infile>, B<-xcert infile>, B<-xchain>
Packit Service 084de1
Packit Service 084de1
Specify an extra certificate, private key and certificate chain. These behave
Packit Service 084de1
in the same manner as the B<-cert>, B<-key> and B<-cert_chain> options.  When
Packit Service 084de1
specified, the callback returning the first valid chain will be in use by the
Packit Service 084de1
client.
Packit Service 084de1
Packit Service 084de1
=item B<-xchain_build>
Packit Service 084de1
Packit Service 084de1
Specify whether the application should build the certificate chain to be
Packit Service 084de1
provided to the server for the extra certificates provided via B<-xkey infile>,
Packit Service 084de1
B<-xcert infile>, B<-xchain> options.
Packit Service 084de1
Packit Service 084de1
=item B<-xcertform PEM|DER>, B<-xkeyform PEM|DER>
Packit Service 084de1
Packit Service 084de1
Extra certificate and private key format respectively.
Packit Service 084de1
Packit Service 084de1
=item B<-pass arg>
Packit Service 084de1
Packit Service 084de1
the private key password source. For more information about the format of B<arg>
Packit Service 084de1
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
Packit Service 084de1
Packit Service 084de1
=item B<-verify depth>
Packit Service 084de1
Packit Service 084de1
The verify depth to use. This specifies the maximum length of the
Packit Service 084de1
server certificate chain and turns on server certificate verification.
Packit Service 084de1
Currently the verify operation continues after errors so all the problems
Packit Service 084de1
with a certificate chain can be seen. As a side effect the connection
Packit Service 084de1
will never fail due to a server certificate verify failure.
Packit Service 084de1
Packit Service 084de1
=item B<-verify_return_error>
Packit Service 084de1
Packit Service 084de1
Return verification errors instead of continuing. This will typically
Packit Service 084de1
abort the handshake with a fatal error.
Packit Service 084de1
Packit Service 084de1
=item B<-nameopt option>
Packit Service 084de1
Packit Service 084de1
Option which determines how the subject or issuer names are displayed. The
Packit Service 084de1
B<option> argument can be a single option or multiple options separated by
Packit Service 084de1
commas.  Alternatively the B<-nameopt> switch may be used more than once to
Packit Service 084de1
set multiple options. See the L<x509(1)> manual page for details.
Packit Service 084de1
Packit Service 084de1
=item B<-CApath directory>
Packit Service 084de1
Packit Service 084de1
The directory to use for server certificate verification. This directory
Packit Service 084de1
must be in "hash format", see L<verify(1)> for more information. These are
Packit Service 084de1
also used when building the client certificate chain.
Packit Service 084de1
Packit Service 084de1
=item B<-CAfile file>
Packit Service 084de1
Packit Service 084de1
A file containing trusted certificates to use during server authentication
Packit Service 084de1
and to use when attempting to build the client certificate chain.
Packit Service 084de1
Packit Service 084de1
=item B<-chainCApath directory>
Packit Service 084de1
Packit Service 084de1
The directory to use for building the chain provided to the server. This
Packit Service 084de1
directory must be in "hash format", see L<verify(1)> for more information.
Packit Service 084de1
Packit Service 084de1
=item B<-chainCAfile file>
Packit Service 084de1
Packit Service 084de1
A file containing trusted certificates to use when attempting to build the
Packit Service 084de1
client certificate chain.
Packit Service 084de1
Packit Service 084de1
=item B<-no-CAfile>
Packit Service 084de1
Packit Service 084de1
Do not load the trusted CA certificates from the default file location
Packit Service 084de1
Packit Service 084de1
=item B<-no-CApath>
Packit Service 084de1
Packit Service 084de1
Do not load the trusted CA certificates from the default directory location
Packit Service 084de1
Packit Service 084de1
=item B<-requestCAfile file>
Packit Service 084de1
Packit Service 084de1
A file containing a list of certificates whose subject names will be sent
Packit Service 084de1
to the server in the B<certificate_authorities> extension. Only supported
Packit Service 084de1
for TLS 1.3
Packit Service 084de1
Packit Service 084de1
=item B<-dane_tlsa_domain domain>
Packit Service 084de1
Packit Service 084de1
Enable RFC6698/RFC7671 DANE TLSA authentication and specify the
Packit Service 084de1
TLSA base domain which becomes the default SNI hint and the primary
Packit Service 084de1
reference identifier for hostname checks.  This must be used in
Packit Service 084de1
combination with at least one instance of the B<-dane_tlsa_rrdata>
Packit Service 084de1
option below.
Packit Service 084de1
Packit Service 084de1
When DANE authentication succeeds, the diagnostic output will include
Packit Service 084de1
the lowest (closest to 0) depth at which a TLSA record authenticated
Packit Service 084de1
a chain certificate.  When that TLSA record is a "2 1 0" trust
Packit Service 084de1
anchor public key that signed (rather than matched) the top-most
Packit Service 084de1
certificate of the chain, the result is reported as "TA public key
Packit Service 084de1
verified".  Otherwise, either the TLSA record "matched TA certificate"
Packit Service 084de1
at a positive depth or else "matched EE certificate" at depth 0.
Packit Service 084de1
Packit Service 084de1
=item B<-dane_tlsa_rrdata rrdata>
Packit Service 084de1
Packit Service 084de1
Use one or more times to specify the RRDATA fields of the DANE TLSA
Packit Service 084de1
RRset associated with the target service.  The B<rrdata> value is
Packit Service 084de1
specified in "presentation form", that is four whitespace separated
Packit Service 084de1
fields that specify the usage, selector, matching type and associated
Packit Service 084de1
data, with the last of these encoded in hexadecimal.  Optional
Packit Service 084de1
whitespace is ignored in the associated data field.  For example:
Packit Service 084de1
Packit Service 084de1
  $ openssl s_client -brief -starttls smtp \
Packit Service 084de1
    -connect smtp.example.com:25 \
Packit Service 084de1
    -dane_tlsa_domain smtp.example.com \
Packit Service 084de1
    -dane_tlsa_rrdata "2 1 1
Packit Service 084de1
      B111DD8A1C2091A89BD4FD60C57F0716CCE50FEEFF8137CDBEE0326E 02CF362B" \
Packit Service 084de1
    -dane_tlsa_rrdata "2 1 1
Packit Service 084de1
      60B87575447DCBA2A36B7D11AC09FB24A9DB406FEE12D2CC90180517 616E8A18"
Packit Service 084de1
  ...
Packit Service 084de1
  Verification: OK
Packit Service 084de1
  Verified peername: smtp.example.com
Packit Service 084de1
  DANE TLSA 2 1 1 ...ee12d2cc90180517616e8a18 matched TA certificate at depth 1
Packit Service 084de1
  ...
Packit Service 084de1
Packit Service 084de1
=item B<-dane_ee_no_namechecks>
Packit Service 084de1
Packit Service 084de1
This disables server name checks when authenticating via DANE-EE(3) TLSA
Packit Service 084de1
records.
Packit Service 084de1
For some applications, primarily web browsers, it is not safe to disable name
Packit Service 084de1
checks due to "unknown key share" attacks, in which a malicious server can
Packit Service 084de1
convince a client that a connection to a victim server is instead a secure
Packit Service 084de1
connection to the malicious server.
Packit Service 084de1
The malicious server may then be able to violate cross-origin scripting
Packit Service 084de1
restrictions.
Packit Service 084de1
Thus, despite the text of RFC7671, name checks are by default enabled for
Packit Service 084de1
DANE-EE(3) TLSA records, and can be disabled in applications where it is safe
Packit Service 084de1
to do so.
Packit Service 084de1
In particular, SMTP and XMPP clients should set this option as SRV and MX
Packit Service 084de1
records already make it possible for a remote domain to redirect client
Packit Service 084de1
connections to any server of its choice, and in any case SMTP and XMPP clients
Packit Service 084de1
do not execute scripts downloaded from remote servers.
Packit Service 084de1
Packit Service 084de1
=item B<-attime>, B<-check_ss_sig>, B<-crl_check>, B<-crl_check_all>,
Packit Service 084de1
B<-explicit_policy>, B<-extended_crl>, B<-ignore_critical>, B<-inhibit_any>,
Packit Service 084de1
B<-inhibit_map>, B<-no_alt_chains>, B<-no_check_time>, B<-partial_chain>, B<-policy>,
Packit Service 084de1
B<-policy_check>, B<-policy_print>, B<-purpose>, B<-suiteB_128>,
Packit Service 084de1
B<-suiteB_128_only>, B<-suiteB_192>, B<-trusted_first>, B<-use_deltas>,
Packit Service 084de1
B<-auth_level>, B<-verify_depth>, B<-verify_email>, B<-verify_hostname>,
Packit Service 084de1
B<-verify_ip>, B<-verify_name>, B<-x509_strict>
Packit Service 084de1
Packit Service 084de1
Set various certificate chain validation options. See the
Packit Service 084de1
L<verify(1)> manual page for details.
Packit Service 084de1
Packit Service 084de1
=item B<-reconnect>
Packit Service 084de1
Packit Service 084de1
Reconnects to the same server 5 times using the same session ID, this can
Packit Service 084de1
be used as a test that session caching is working.
Packit Service 084de1
Packit Service 084de1
=item B<-showcerts>
Packit Service 084de1
Packit Service 084de1
Displays the server certificate list as sent by the server: it only consists of
Packit Service 084de1
certificates the server has sent (in the order the server has sent them). It is
Packit Service 084de1
B<not> a verified chain.
Packit Service 084de1
Packit Service 084de1
=item B<-prexit>
Packit Service 084de1
Packit Service 084de1
Print session information when the program exits. This will always attempt
Packit Service 084de1
to print out information even if the connection fails. Normally information
Packit Service 084de1
will only be printed out once if the connection succeeds. This option is useful
Packit Service 084de1
because the cipher in use may be renegotiated or the connection may fail
Packit Service 084de1
because a client certificate is required or is requested only after an
Packit Service 084de1
attempt is made to access a certain URL. Note: the output produced by this
Packit Service 084de1
option is not always accurate because a connection might never have been
Packit Service 084de1
established.
Packit Service 084de1
Packit Service 084de1
=item B<-state>
Packit Service 084de1
Packit Service 084de1
Prints out the SSL session states.
Packit Service 084de1
Packit Service 084de1
=item B<-debug>
Packit Service 084de1
Packit Service 084de1
Print extensive debugging information including a hex dump of all traffic.
Packit Service 084de1
Packit Service 084de1
=item B<-msg>
Packit Service 084de1
Packit Service 084de1
Show all protocol messages with hex dump.
Packit Service 084de1
Packit Service 084de1
=item B<-trace>
Packit Service 084de1
Packit Service 084de1
Show verbose trace output of protocol messages. OpenSSL needs to be compiled
Packit Service 084de1
with B<enable-ssl-trace> for this option to work.
Packit Service 084de1
Packit Service 084de1
=item B<-msgfile>
Packit Service 084de1
Packit Service 084de1
File to send output of B<-msg> or B<-trace> to, default standard output.
Packit Service 084de1
Packit Service 084de1
=item B<-nbio_test>
Packit Service 084de1
Packit Service 084de1
Tests non-blocking I/O
Packit Service 084de1
Packit Service 084de1
=item B<-nbio>
Packit Service 084de1
Packit Service 084de1
Turns on non-blocking I/O
Packit Service 084de1
Packit Service 084de1
=item B<-crlf>
Packit Service 084de1
Packit Service 084de1
This option translated a line feed from the terminal into CR+LF as required
Packit Service 084de1
by some servers.
Packit Service 084de1
Packit Service 084de1
=item B<-ign_eof>
Packit Service 084de1
Packit Service 084de1
Inhibit shutting down the connection when end of file is reached in the
Packit Service 084de1
input.
Packit Service 084de1
Packit Service 084de1
=item B<-quiet>
Packit Service 084de1
Packit Service 084de1
Inhibit printing of session and certificate information.  This implicitly
Packit Service 084de1
turns on B<-ign_eof> as well.
Packit Service 084de1
Packit Service 084de1
=item B<-no_ign_eof>
Packit Service 084de1
Packit Service 084de1
Shut down the connection when end of file is reached in the input.
Packit Service 084de1
Can be used to override the implicit B<-ign_eof> after B<-quiet>.
Packit Service 084de1
Packit Service 084de1
=item B<-psk_identity identity>
Packit Service 084de1
Packit Service 084de1
Use the PSK identity B<identity> when using a PSK cipher suite.
Packit Service 084de1
The default value is "Client_identity" (without the quotes).
Packit Service 084de1
Packit Service 084de1
=item B<-psk key>
Packit Service 084de1
Packit Service 084de1
Use the PSK key B<key> when using a PSK cipher suite. The key is
Packit Service 084de1
given as a hexadecimal number without leading 0x, for example -psk
Packit Service 084de1
1a2b3c4d.
Packit Service 084de1
This option must be provided in order to use a PSK cipher.
Packit Service 084de1
Packit Service 084de1
=item B<-psk_session file>
Packit Service 084de1
Packit Service 084de1
Use the pem encoded SSL_SESSION data stored in B<file> as the basis of a PSK.
Packit Service 084de1
Note that this will only work if TLSv1.3 is negotiated.
Packit Service 084de1
Packit Service 084de1
=item B<-ssl3>, B<-tls1>, B<-tls1_1>, B<-tls1_2>, B<-tls1_3>, B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>, B<-no_tls1_3>
Packit Service 084de1
Packit Service 084de1
These options require or disable the use of the specified SSL or TLS protocols.
Packit Service 084de1
By default B<s_client> will negotiate the highest mutually supported protocol
Packit Service 084de1
version.
Packit Service 084de1
When a specific TLS version is required, only that version will be offered to
Packit Service 084de1
and accepted from the server.
Packit Service 084de1
Note that not all protocols and flags may be available, depending on how
Packit Service 084de1
OpenSSL was built.
Packit Service 084de1
Packit Service 084de1
=item B<-dtls>, B<-dtls1>, B<-dtls1_2>
Packit Service 084de1
Packit Service 084de1
These options make B<s_client> use DTLS protocols instead of TLS.
Packit Service 084de1
With B<-dtls>, B<s_client> will negotiate any supported DTLS protocol version,
Packit Service 084de1
whilst B<-dtls1> and B<-dtls1_2> will only support DTLS1.0 and DTLS1.2
Packit Service 084de1
respectively.
Packit Service 084de1
Packit Service 084de1
=item B<-sctp>
Packit Service 084de1
Packit Service 084de1
Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in
Packit Service 084de1
conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only
Packit Service 084de1
available where OpenSSL has support for SCTP enabled.
Packit Service 084de1
Packit Service 084de1
=item B<-sctp_label_bug>
Packit Service 084de1
Packit Service 084de1
Use the incorrect behaviour of older OpenSSL implementations when computing
Packit Service 084de1
endpoint-pair shared secrets for DTLS/SCTP. This allows communication with
Packit Service 084de1
older broken implementations but breaks interoperability with correct
Packit Service 084de1
implementations. Must be used in conjunction with B<-sctp>. This option is only
Packit Service 084de1
available where OpenSSL has support for SCTP enabled.
Packit Service 084de1
Packit Service 084de1
=item B<-fallback_scsv>
Packit Service 084de1
Packit Service 084de1
Send TLS_FALLBACK_SCSV in the ClientHello.
Packit Service 084de1
Packit Service 084de1
=item B<-async>
Packit Service 084de1
Packit Service 084de1
Switch on asynchronous mode. Cryptographic operations will be performed
Packit Service 084de1
asynchronously. This will only have an effect if an asynchronous capable engine
Packit Service 084de1
is also used via the B<-engine> option. For test purposes the dummy async engine
Packit Service 084de1
(dasync) can be used (if available).
Packit Service 084de1
Packit Service 084de1
=item B<-max_send_frag int>
Packit Service 084de1
Packit Service 084de1
The maximum size of data fragment to send.
Packit Service 084de1
See L<SSL_CTX_set_max_send_fragment(3)> for further information.
Packit Service 084de1
Packit Service 084de1
=item B<-split_send_frag int>
Packit Service 084de1
Packit Service 084de1
The size used to split data for encrypt pipelines. If more data is written in
Packit Service 084de1
one go than this value then it will be split into multiple pipelines, up to the
Packit Service 084de1
maximum number of pipelines defined by max_pipelines. This only has an effect if
Packit Service 084de1
a suitable cipher suite has been negotiated, an engine that supports pipelining
Packit Service 084de1
has been loaded, and max_pipelines is greater than 1. See
Packit Service 084de1
L<SSL_CTX_set_split_send_fragment(3)> for further information.
Packit Service 084de1
Packit Service 084de1
=item B<-max_pipelines int>
Packit Service 084de1
Packit Service 084de1
The maximum number of encrypt/decrypt pipelines to be used. This will only have
Packit Service 084de1
an effect if an engine has been loaded that supports pipelining (e.g. the dasync
Packit Service 084de1
engine) and a suitable cipher suite has been negotiated. The default value is 1.
Packit Service 084de1
See L<SSL_CTX_set_max_pipelines(3)> for further information.
Packit Service 084de1
Packit Service 084de1
=item B<-read_buf int>
Packit Service 084de1
Packit Service 084de1
The default read buffer size to be used for connections. This will only have an
Packit Service 084de1
effect if the buffer size is larger than the size that would otherwise be used
Packit Service 084de1
and pipelining is in use (see L<SSL_CTX_set_default_read_buffer_len(3)> for
Packit Service 084de1
further information).
Packit Service 084de1
Packit Service 084de1
=item B<-bugs>
Packit Service 084de1
Packit Service 084de1
There are several known bugs in SSL and TLS implementations. Adding this
Packit Service 084de1
option enables various workarounds.
Packit Service 084de1
Packit Service 084de1
=item B<-comp>
Packit Service 084de1
Packit Service 084de1
Enables support for SSL/TLS compression.
Packit Service 084de1
This option was introduced in OpenSSL 1.1.0.
Packit Service 084de1
TLS compression is not recommended and is off by default as of
Packit Service 084de1
OpenSSL 1.1.0.
Packit Service 084de1
Packit Service 084de1
=item B<-no_comp>
Packit Service 084de1
Packit Service 084de1
Disables support for SSL/TLS compression.
Packit Service 084de1
TLS compression is not recommended and is off by default as of
Packit Service 084de1
OpenSSL 1.1.0.
Packit Service 084de1
Packit Service 084de1
=item B<-brief>
Packit Service 084de1
Packit Service 084de1
Only provide a brief summary of connection parameters instead of the
Packit Service 084de1
normal verbose output.
Packit Service 084de1
Packit Service 084de1
=item B<-sigalgs sigalglist>
Packit Service 084de1
Packit Service 084de1
Specifies the list of signature algorithms that are sent by the client.
Packit Service 084de1
The server selects one entry in the list based on its preferences.
Packit Service 084de1
For example strings, see L<SSL_CTX_set1_sigalgs(3)>
Packit Service 084de1
Packit Service 084de1
=item B<-curves curvelist>
Packit Service 084de1
Packit Service 084de1
Specifies the list of supported curves to be sent by the client. The curve is
Packit Service 084de1
ultimately selected by the server. For a list of all curves, use:
Packit Service 084de1
Packit Service 084de1
    $ openssl ecparam -list_curves
Packit Service 084de1
Packit Service 084de1
=item B<-cipher cipherlist>
Packit Service 084de1
Packit Service 084de1
This allows the TLSv1.2 and below cipher list sent by the client to be modified.
Packit Service 084de1
This list will be combined with any TLSv1.3 ciphersuites that have been
Packit Service 084de1
configured. Although the server determines which ciphersuite is used it should
Packit Service 084de1
take the first supported cipher in the list sent by the client. See the
Packit Service 084de1
B<ciphers> command for more information.
Packit Service 084de1
Packit Service 084de1
=item B<-ciphersuites val>
Packit Service 084de1
Packit Service 084de1
This allows the TLSv1.3 ciphersuites sent by the client to be modified. This
Packit Service 084de1
list will be combined with any TLSv1.2 and below ciphersuites that have been
Packit Service 084de1
configured. Although the server determines which cipher suite is used it should
Packit Service 084de1
take the first supported cipher in the list sent by the client. See the
Packit Service 084de1
B<ciphers> command for more information. The format for this list is a simple
Packit Service 084de1
colon (":") separated list of TLSv1.3 ciphersuite names.
Packit Service 084de1
Packit Service 084de1
=item B<-starttls protocol>
Packit Service 084de1
Packit Service 084de1
Send the protocol-specific message(s) to switch to TLS for communication.
Packit Service 084de1
B<protocol> is a keyword for the intended protocol.  Currently, the only
Packit Service 084de1
supported keywords are "smtp", "pop3", "imap", "ftp", "xmpp", "xmpp-server",
Packit Service 084de1
"irc", "postgres", "mysql", "lmtp", "nntp", "sieve" and "ldap".
Packit Service 084de1
Packit Service 084de1
=item B<-xmpphost hostname>
Packit Service 084de1
Packit Service 084de1
This option, when used with "-starttls xmpp" or "-starttls xmpp-server",
Packit Service 084de1
specifies the host for the "to" attribute of the stream element.
Packit Service 084de1
If this option is not specified, then the host specified with "-connect"
Packit Service 084de1
will be used.
Packit Service 084de1
Packit Service 084de1
This option is an alias of the B<-name> option for "xmpp" and "xmpp-server".
Packit Service 084de1
Packit Service 084de1
=item B<-name hostname>
Packit Service 084de1
Packit Service 084de1
This option is used to specify hostname information for various protocols
Packit Service 084de1
used with B<-starttls> option. Currently only "xmpp", "xmpp-server",
Packit Service 084de1
"smtp" and "lmtp" can utilize this B<-name> option.
Packit Service 084de1
Packit Service 084de1
If this option is used with "-starttls xmpp" or "-starttls xmpp-server",
Packit Service 084de1
if specifies the host for the "to" attribute of the stream element. If this
Packit Service 084de1
option is not specified, then the host specified with "-connect" will be used.
Packit Service 084de1
Packit Service 084de1
If this option is used with "-starttls lmtp" or "-starttls smtp", it specifies
Packit Service 084de1
the name to use in the "LMTP LHLO" or "SMTP EHLO" message, respectively. If
Packit Service 084de1
this option is not specified, then "mail.example.com" will be used.
Packit Service 084de1
Packit Service 084de1
=item B<-tlsextdebug>
Packit Service 084de1
Packit Service 084de1
Print out a hex dump of any TLS extensions received from the server.
Packit Service 084de1
Packit Service 084de1
=item B<-no_ticket>
Packit Service 084de1
Packit Service 084de1
Disable RFC4507bis session ticket support.
Packit Service 084de1
Packit Service 084de1
=item B<-sess_out filename>
Packit Service 084de1
Packit Service 084de1
Output SSL session to B<filename>.
Packit Service 084de1
Packit Service 084de1
=item B<-sess_in sess.pem>
Packit Service 084de1
Packit Service 084de1
Load SSL session from B<filename>. The client will attempt to resume a
Packit Service 084de1
connection from this session.
Packit Service 084de1
Packit Service 084de1
=item B<-engine id>
Packit Service 084de1
Packit Service 084de1
Specifying an engine (by its unique B<id> string) will cause B<s_client>
Packit Service 084de1
to attempt to obtain a functional reference to the specified engine,
Packit Service 084de1
thus initialising it if needed. The engine will then be set as the default
Packit Service 084de1
for all available algorithms.
Packit Service 084de1
Packit Service 084de1
=item B<-rand file...>
Packit Service 084de1
Packit Service 084de1
A file or files containing random data used to seed the random number
Packit Service 084de1
generator.
Packit Service 084de1
Multiple files can be specified separated by an OS-dependent character.
Packit Service 084de1
The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
Packit Service 084de1
all others.
Packit Service 084de1
Packit Service 084de1
=item [B<-writerand file>]
Packit Service 084de1
Packit Service 084de1
Writes random data to the specified I<file> upon exit.
Packit Service 084de1
This can be used with a subsequent B<-rand> flag.
Packit Service 084de1
Packit Service 084de1
=item B<-serverinfo types>
Packit Service 084de1
Packit Service 084de1
A list of comma-separated TLS Extension Types (numbers between 0 and
Packit Service 084de1
65535).  Each type will be sent as an empty ClientHello TLS Extension.
Packit Service 084de1
The server's response (if any) will be encoded and displayed as a PEM
Packit Service 084de1
file.
Packit Service 084de1
Packit Service 084de1
=item B<-status>
Packit Service 084de1
Packit Service 084de1
Sends a certificate status request to the server (OCSP stapling). The server
Packit Service 084de1
response (if any) is printed out.
Packit Service 084de1
Packit Service 084de1
=item B<-alpn protocols>, B<-nextprotoneg protocols>
Packit Service 084de1
Packit Service 084de1
These flags enable the Enable the Application-Layer Protocol Negotiation
Packit Service 084de1
or Next Protocol Negotiation (NPN) extension, respectively. ALPN is the
Packit Service 084de1
IETF standard and replaces NPN.
Packit Service 084de1
The B<protocols> list is a comma-separated list of protocol names that
Packit Service 084de1
the client should advertise support for. The list should contain the most
Packit Service 084de1
desirable protocols first.  Protocol names are printable ASCII strings,
Packit Service 084de1
for example "http/1.1" or "spdy/3".
Packit Service 084de1
An empty list of protocols is treated specially and will cause the
Packit Service 084de1
client to advertise support for the TLS extension but disconnect just
Packit Service 084de1
after receiving ServerHello with a list of server supported protocols.
Packit Service 084de1
The flag B<-nextprotoneg> cannot be specified if B<-tls1_3> is used.
Packit Service 084de1
Packit Service 084de1
=item B<-ct>, B<-noct>
Packit Service 084de1
Packit Service 084de1
Use one of these two options to control whether Certificate Transparency (CT)
Packit Service 084de1
is enabled (B<-ct>) or disabled (B<-noct>).
Packit Service 084de1
If CT is enabled, signed certificate timestamps (SCTs) will be requested from
Packit Service 084de1
the server and reported at handshake completion.
Packit Service 084de1
Packit Service 084de1
Enabling CT also enables OCSP stapling, as this is one possible delivery method
Packit Service 084de1
for SCTs.
Packit Service 084de1
Packit Service 084de1
=item B<-ctlogfile>
Packit Service 084de1
Packit Service 084de1
A file containing a list of known Certificate Transparency logs. See
Packit Service 084de1
L<SSL_CTX_set_ctlog_list_file(3)> for the expected file format.
Packit Service 084de1
Packit Service 084de1
=item B<-keylogfile file>
Packit Service 084de1
Packit Service 084de1
Appends TLS secrets to the specified keylog file such that external programs
Packit Service 084de1
(like Wireshark) can decrypt TLS connections.
Packit Service 084de1
Packit Service 084de1
=item B<-early_data file>
Packit Service 084de1
Packit Service 084de1
Reads the contents of the specified file and attempts to send it as early data
Packit Service 084de1
to the server. This will only work with resumed sessions that support early
Packit Service 084de1
data and when the server accepts the early data.
Packit Service 084de1
Packit Service 084de1
=item B<-enable_pha>
Packit Service 084de1
Packit Service 084de1
For TLSv1.3 only, send the Post-Handshake Authentication extension. This will
Packit Service 084de1
happen whether or not a certificate has been provided via B<-cert>.
Packit Service 084de1
Packit Service 084de1
=item B<[target]>
Packit Service 084de1
Packit Service 084de1
Rather than providing B<-connect>, the target hostname and optional port may
Packit Service 084de1
be provided as a single positional argument after all options. If neither this
Packit Service 084de1
nor B<-connect> are provided, falls back to attempting to connect to localhost
Packit Service 084de1
on port 4433.
Packit Service 084de1
Packit Service 084de1
=back
Packit Service 084de1
Packit Service 084de1
=head1 CONNECTED COMMANDS
Packit Service 084de1
Packit Service 084de1
If a connection is established with an SSL server then any data received
Packit Service 084de1
from the server is displayed and any key presses will be sent to the
Packit Service 084de1
server. If end of file is reached then the connection will be closed down. When
Packit Service 084de1
used interactively (which means neither B<-quiet> nor B<-ign_eof> have been
Packit Service 084de1
given), then certain commands are also recognized which perform special
Packit Service 084de1
operations. These commands are a letter which must appear at the start of a
Packit Service 084de1
line. They are listed below.
Packit Service 084de1
Packit Service 084de1
=over 4
Packit Service 084de1
Packit Service 084de1
=item B<Q>
Packit Service 084de1
Packit Service 084de1
End the current SSL connection and exit.
Packit Service 084de1
Packit Service 084de1
=item B<R>
Packit Service 084de1
Packit Service 084de1
Renegotiate the SSL session (TLSv1.2 and below only).
Packit Service 084de1
Packit Service 084de1
=item B
Packit Service 084de1
Packit Service 084de1
Send a heartbeat message to the server (DTLS only)
Packit Service 084de1
Packit Service 084de1
=item B<k>
Packit Service 084de1
Packit Service 084de1
Send a key update message to the server (TLSv1.3 only)
Packit Service 084de1
Packit Service 084de1
=item B<K>
Packit Service 084de1
Packit Service 084de1
Send a key update message to the server and request one back (TLSv1.3 only)
Packit Service 084de1
Packit Service 084de1
=back
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
B<s_client> can be used to debug SSL servers. To connect to an SSL HTTP
Packit Service 084de1
server the command:
Packit Service 084de1
Packit Service 084de1
 openssl s_client -connect servername:443
Packit Service 084de1
Packit Service 084de1
would typically be used (https uses port 443). If the connection succeeds
Packit Service 084de1
then an HTTP command can be given such as "GET /" to retrieve a web page.
Packit Service 084de1
Packit Service 084de1
If the handshake fails then there are several possible causes, if it is
Packit Service 084de1
nothing obvious like no client certificate then the B<-bugs>,
Packit Service 084de1
B<-ssl3>, B<-tls1>, B<-no_ssl3>, B<-no_tls1> options can be tried
Packit Service 084de1
in case it is a buggy server. In particular you should play with these
Packit Service 084de1
options B<before> submitting a bug report to an OpenSSL mailing list.
Packit Service 084de1
Packit Service 084de1
A frequent problem when attempting to get client certificates working
Packit Service 084de1
is that a web client complains it has no certificates or gives an empty
Packit Service 084de1
list to choose from. This is normally because the server is not sending
Packit Service 084de1
the clients certificate authority in its "acceptable CA list" when it
Packit Service 084de1
requests a certificate. By using B<s_client> the CA list can be viewed
Packit Service 084de1
and checked. However some servers only request client authentication
Packit Service 084de1
after a specific URL is requested. To obtain the list in this case it
Packit Service 084de1
is necessary to use the B<-prexit> option and send an HTTP request
Packit Service 084de1
for an appropriate page.
Packit Service 084de1
Packit Service 084de1
If a certificate is specified on the command line using the B<-cert>
Packit Service 084de1
option it will not be used unless the server specifically requests
Packit Service 084de1
a client certificate. Therefor merely including a client certificate
Packit Service 084de1
on the command line is no guarantee that the certificate works.
Packit Service 084de1
Packit Service 084de1
If there are problems verifying a server certificate then the
Packit Service 084de1
B<-showcerts> option can be used to show all the certificates sent by the
Packit Service 084de1
server.
Packit Service 084de1
Packit Service 084de1
The B<s_client> utility is a test tool and is designed to continue the
Packit Service 084de1
handshake after any certificate verification errors. As a result it will
Packit Service 084de1
accept any certificate chain (trusted or not) sent by the peer. None test
Packit Service 084de1
applications should B<not> do this as it makes them vulnerable to a MITM
Packit Service 084de1
attack. This behaviour can be changed by with the B<-verify_return_error>
Packit Service 084de1
option: any verify errors are then returned aborting the handshake.
Packit Service 084de1
Packit Service 084de1
The B<-bind> option may be useful if the server or a firewall requires
Packit Service 084de1
connections to come from some particular address and or port.
Packit Service 084de1
Packit Service 084de1
=head1 BUGS
Packit Service 084de1
Packit Service 084de1
Because this program has a lot of options and also because some of the
Packit Service 084de1
techniques used are rather old, the C source of B<s_client> is rather hard to
Packit Service 084de1
read and not a model of how things should be done.
Packit Service 084de1
A typical SSL client program would be much simpler.
Packit Service 084de1
Packit Service 084de1
The B<-prexit> option is a bit of a hack. We should really report
Packit Service 084de1
information whenever a session is renegotiated.
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<SSL_CONF_cmd(3)>, L<sess_id(1)>, L<s_server(1)>, L<ciphers(1)>,
Packit Service 084de1
L<SSL_CTX_set_max_send_fragment(3)>, L<SSL_CTX_set_split_send_fragment(3)>,
Packit Service 084de1
L<SSL_CTX_set_max_pipelines(3)>
Packit Service 084de1
Packit Service 084de1
=head1 HISTORY
Packit Service 084de1
Packit Service 084de1
The B<-no_alt_chains> option was added in OpenSSL 1.1.0.
Packit Service 084de1
The B<-name> option was added in OpenSSL 1.1.1.
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut