mirror of https://github.com/openssl/openssl.git
Update documentation of SSL METHODs and ciphers
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
This commit is contained in:
parent
1cb7757ee7
commit
8c73aeb61e
|
@ -32,7 +32,7 @@ the appropriate cipherlist.
|
||||||
|
|
||||||
=item B<-help>
|
=item B<-help>
|
||||||
|
|
||||||
Print out a usage message.
|
Print a usage message.
|
||||||
|
|
||||||
=item B<-s>
|
=item B<-s>
|
||||||
|
|
||||||
|
@ -53,21 +53,25 @@ L<SSL_CIPHER_description(3)>.
|
||||||
|
|
||||||
Like B<-v>, but include the official cipher suite values in hex.
|
Like B<-v>, but include the official cipher suite values in hex.
|
||||||
|
|
||||||
|
=item B<-tls1_2>
|
||||||
|
|
||||||
|
In combination with the B<-s> option, list the ciphers which would be used if
|
||||||
|
TLSv1.2 were negotiated.
|
||||||
|
|
||||||
=item B<-ssl3>
|
=item B<-ssl3>
|
||||||
|
|
||||||
List the ciphers which would be used if SSL v3 was negotiated.
|
In combination with the B<-s> option, list the ciphers which would be used if
|
||||||
|
SSLv3 were negotiated.
|
||||||
|
|
||||||
=item B<-tls1>
|
=item B<-tls1>
|
||||||
|
|
||||||
List the ciphers which would be used if TLS v1.0 was negotiated.
|
In combination with the B<-s> option, list the ciphers which would be used if
|
||||||
|
TLSv1 were negotiated.
|
||||||
|
|
||||||
=item B<-tls1_1>
|
=item B<-tls1_1>
|
||||||
|
|
||||||
List the ciphers which would be used if TLS v1.1 was negotiated.
|
In combination with the B<-s> option, list the ciphers which would be used if
|
||||||
|
TLSv1.1 were negotiated.
|
||||||
=item B<-tls1_2>
|
|
||||||
|
|
||||||
List the ciphers which would be used if TLS v1.2 was negotiated.
|
|
||||||
|
|
||||||
=item B<-stdname>
|
=item B<-stdname>
|
||||||
|
|
||||||
|
@ -132,25 +136,27 @@ The following is a list of all permitted cipher strings and their meanings.
|
||||||
|
|
||||||
=item B<DEFAULT>
|
=item B<DEFAULT>
|
||||||
|
|
||||||
the default cipher list. This is determined at compile time and
|
The default cipher list.
|
||||||
is B<ALL:!COMPLEMENTOFDEFAULT:!eNULL>. This must be the first cipher
|
This is determined at compile time and is normally
|
||||||
string specified.
|
B<ALL:!COMPLEMENTOFDEFAULT:!eNULL>.
|
||||||
|
When used, this must be the first cipherstring specified.
|
||||||
|
|
||||||
=item B<COMPLEMENTOFDEFAULT>
|
=item B<COMPLEMENTOFDEFAULT>
|
||||||
|
|
||||||
the ciphers included in B<ALL>, but not enabled by default. Currently
|
The ciphers included in B<ALL>, but not enabled by default. Currently
|
||||||
this includes all RC4, DES, RC2 and anonymous ciphers. Note that this rule does
|
this includes all RC4, DES, RC2 and anonymous ciphers. Note that this rule does
|
||||||
not cover B<eNULL>, which is not included by B<ALL> (use B<COMPLEMENTOFALL> if
|
not cover B<eNULL>, which is not included by B<ALL> (use B<COMPLEMENTOFALL> if
|
||||||
necessary).
|
necessary).
|
||||||
|
|
||||||
=item B<ALL>
|
=item B<ALL>
|
||||||
|
|
||||||
all cipher suites except the B<eNULL> ciphers which must be explicitly enabled;
|
All cipher suites except the B<eNULL> ciphers (which must be explicitly enabled
|
||||||
as of OpenSSL, the B<ALL> cipher suites are reasonably ordered by default
|
if needed).
|
||||||
|
As of OpenSSL 1.0.0, the B<ALL> cipher suites are sensibly ordered by default.
|
||||||
|
|
||||||
=item B<COMPLEMENTOFALL>
|
=item B<COMPLEMENTOFALL>
|
||||||
|
|
||||||
the cipher suites not enabled by B<ALL>, currently being B<eNULL>.
|
The cipher suites not enabled by B<ALL>, currently B<eNULL>.
|
||||||
|
|
||||||
=item B<HIGH>
|
=item B<HIGH>
|
||||||
|
|
||||||
|
@ -170,83 +176,86 @@ ciphersuites have been removed as of OpenSSL 1.1.0.
|
||||||
|
|
||||||
=item B<eNULL>, B<NULL>
|
=item B<eNULL>, B<NULL>
|
||||||
|
|
||||||
the "NULL" ciphers that is those offering no encryption. Because these offer no
|
The "NULL" ciphers that is those offering no encryption. Because these offer no
|
||||||
encryption at all and are a security risk they are disabled unless explicitly
|
encryption at all and are a security risk they are not enabled via either the
|
||||||
included.
|
B<DEFAULT> or B<ALL> cipher strings.
|
||||||
|
Be careful when building cipherlists out of lower-level primitives such as
|
||||||
|
B<kRSA> or B<aECDSA> as these do overlap with the B<eNULL> ciphers. When in
|
||||||
|
doubt, include B<!eNULL> in your cipherlist.
|
||||||
|
|
||||||
=item B<aNULL>
|
=item B<aNULL>
|
||||||
|
|
||||||
the cipher suites offering no authentication. This is currently the anonymous
|
The cipher suites offering no authentication. This is currently the anonymous
|
||||||
DH algorithms and anonymous ECDH algorithms. These cipher suites are vulnerable
|
DH algorithms and anonymous ECDH algorithms. These cipher suites are vulnerable
|
||||||
to a "man in the middle" attack and so their use is normally discouraged.
|
to "man in the middle" attacks and so their use is discouraged.
|
||||||
|
These are excluded from the B<DEFAULT> ciphers, but included in the B<ALL>
|
||||||
|
ciphers.
|
||||||
|
Be careful when building cipherlists out of lower-level primitives such as
|
||||||
|
B<kDHE> or B<AES> as these do overlap with the B<aNULL> ciphers.
|
||||||
|
When in doubt, include B<!aNULL> in your cipherlist.
|
||||||
|
|
||||||
=item B<kRSA>, B<aRSA>, B<RSA>
|
=item B<kRSA>, B<aRSA>, B<RSA>
|
||||||
|
|
||||||
cipher suites using RSA key exchange, authentication or either respectively.
|
Cipher suites using RSA key exchange, authentication or either respectively.
|
||||||
|
|
||||||
=item B<kDHr>, B<kDHd>, B<kDH>
|
=item B<kDHr>, B<kDHd>, B<kDH>
|
||||||
|
|
||||||
cipher suites using DH key agreement and DH certificates signed by CAs with RSA
|
Cipher suites using static DH key agreement and DH certificates signed by CAs
|
||||||
and DSS keys or either respectively.
|
with RSA and DSS keys or either respectively.
|
||||||
|
All these cipher suites have been removed in OpenSSL 1.1.0.
|
||||||
|
|
||||||
=item B<kDHE>, B<kEDH>
|
=item B<kDHE>, B<kEDH>, B<DH>
|
||||||
|
|
||||||
cipher suites using ephemeral DH key agreement, including anonymous cipher
|
Cipher suites using ephemeral DH key agreement, including anonymous cipher
|
||||||
suites.
|
suites.
|
||||||
|
|
||||||
=item B<DHE>, B<EDH>
|
=item B<DHE>, B<EDH>
|
||||||
|
|
||||||
cipher suites using authenticated ephemeral DH key agreement.
|
Cipher suites using authenticated ephemeral DH key agreement.
|
||||||
|
|
||||||
=item B<ADH>
|
=item B<ADH>
|
||||||
|
|
||||||
anonymous DH cipher suites, note that this does not include anonymous Elliptic
|
Anonymous DH cipher suites, note that this does not include anonymous Elliptic
|
||||||
Curve DH (ECDH) cipher suites.
|
Curve DH (ECDH) cipher suites.
|
||||||
|
|
||||||
=item B<DH>
|
=item B<kEECDH>, B<kECDHE>, B<ECDH>
|
||||||
|
|
||||||
cipher suites using DH, including anonymous DH, ephemeral DH and fixed DH.
|
Cipher suites using ephemeral ECDH key agreement, including anonymous
|
||||||
|
|
||||||
=item B<kEECDH>, B<kECDHE>
|
|
||||||
|
|
||||||
cipher suites using ephemeral ECDH key agreement, including anonymous
|
|
||||||
cipher suites.
|
cipher suites.
|
||||||
|
|
||||||
=item B<ECDHE>, B<EECDH>
|
=item B<ECDHE>, B<EECDH>
|
||||||
|
|
||||||
cipher suites using authenticated ephemeral ECDH key agreement.
|
Cipher suites using authenticated ephemeral ECDH key agreement.
|
||||||
|
|
||||||
=item B<AECDH>
|
=item B<AECDH>
|
||||||
|
|
||||||
anonymous Elliptic Curve Diffie Hellman cipher suites.
|
Anonymous Elliptic Curve Diffie Hellman cipher suites.
|
||||||
|
|
||||||
=item B<ECDH>
|
|
||||||
|
|
||||||
cipher suites using ECDH key exchange, including anonymous and ephemeral.
|
|
||||||
|
|
||||||
=item B<aDSS>, B<DSS>
|
=item B<aDSS>, B<DSS>
|
||||||
|
|
||||||
cipher suites using DSS authentication, i.e. the certificates carry DSS keys.
|
Cipher suites using DSS authentication, i.e. the certificates carry DSS keys.
|
||||||
|
|
||||||
=item B<aDH>
|
=item B<aDH>
|
||||||
|
|
||||||
cipher suites effectively using DH authentication, i.e. the certificates carry
|
Cipher suites effectively using DH authentication, i.e. the certificates carry
|
||||||
DH keys.
|
DH keys.
|
||||||
|
All these cipher suites have been removed in OpenSSL 1.1.0.
|
||||||
|
|
||||||
=item B<aECDSA>, B<ECDSA>
|
=item B<aECDSA>, B<ECDSA>
|
||||||
|
|
||||||
cipher suites using ECDSA authentication, i.e. the certificates carry ECDSA
|
Cipher suites using ECDSA authentication, i.e. the certificates carry ECDSA
|
||||||
keys.
|
keys.
|
||||||
|
|
||||||
=item B<TLSv1.2>, B<TLSv1.0>, B<SSLv3>
|
=item B<TLSv1.2>, B<TLSv1.0>, B<SSLv3>
|
||||||
|
|
||||||
Lists ciphersuites which are only supported in at least TLS v1.2, TLS v1.0
|
Lists ciphersuites which are only supported in at least TLS v1.2, TLS v1.0 or
|
||||||
or SSL v3.0 respectively. Note: there are no ciphersuites specific to TLS v1.1.
|
SSL v3.0 respectively.
|
||||||
Since this is only the minimum version if, for example, TLS v1.0 is supported
|
Note: there are no ciphersuites specific to TLS v1.1.
|
||||||
then both TLS v1.0 and SSL v3.0 ciphersuites are included.
|
Since this is only the minimum version, if, for example, TLSv1.0 is negotiated
|
||||||
|
then both TLSv1.0 and SSLv3.0 ciphersuites are available.
|
||||||
|
|
||||||
Note: these cipher strings B<do not> change the negotiated version of SSL or
|
Note: these cipher strings B<do not> change the negotiated version of SSL or
|
||||||
TLS only the list of cipher suites.
|
TLS, they only affect the list of available cipher suites.
|
||||||
|
|
||||||
=item B<AES128>, B<AES256>, B<AES>
|
=item B<AES128>, B<AES256>, B<AES>
|
||||||
|
|
||||||
|
@ -279,81 +288,85 @@ cipher suites using triple DES.
|
||||||
|
|
||||||
=item B<DES>
|
=item B<DES>
|
||||||
|
|
||||||
cipher suites using DES (not triple DES).
|
Cipher suites using DES (not triple DES).
|
||||||
|
All these cipher suites have been removed in OpenSSL 1.1.0.
|
||||||
|
|
||||||
=item B<RC4>
|
=item B<RC4>
|
||||||
|
|
||||||
cipher suites using RC4.
|
Cipher suites using RC4.
|
||||||
|
|
||||||
=item B<RC2>
|
=item B<RC2>
|
||||||
|
|
||||||
cipher suites using RC2.
|
Cipher suites using RC2.
|
||||||
|
|
||||||
=item B<IDEA>
|
=item B<IDEA>
|
||||||
|
|
||||||
cipher suites using IDEA.
|
Cipher suites using IDEA.
|
||||||
|
|
||||||
=item B<SEED>
|
=item B<SEED>
|
||||||
|
|
||||||
cipher suites using SEED.
|
Cipher suites using SEED.
|
||||||
|
|
||||||
=item B<MD5>
|
=item B<MD5>
|
||||||
|
|
||||||
cipher suites using MD5.
|
Cipher suites using MD5.
|
||||||
|
|
||||||
=item B<SHA1>, B<SHA>
|
=item B<SHA1>, B<SHA>
|
||||||
|
|
||||||
cipher suites using SHA1.
|
Cipher suites using SHA1.
|
||||||
|
|
||||||
=item B<SHA256>, B<SHA384>
|
=item B<SHA256>, B<SHA384>
|
||||||
|
|
||||||
ciphersuites using SHA256 or SHA384.
|
Ciphersuites using SHA256 or SHA384.
|
||||||
|
|
||||||
=item B<aGOST>
|
=item B<aGOST>
|
||||||
|
|
||||||
cipher suites using GOST R 34.10 (either 2001 or 94) for authentication
|
Cipher suites using GOST R 34.10 (either 2001 or 94) for authentication
|
||||||
(needs an engine supporting GOST algorithms).
|
(needs an engine supporting GOST algorithms).
|
||||||
|
|
||||||
=item B<aGOST01>
|
=item B<aGOST01>
|
||||||
|
|
||||||
cipher suites using GOST R 34.10-2001 authentication.
|
Cipher suites using GOST R 34.10-2001 authentication.
|
||||||
|
|
||||||
=item B<kGOST>
|
=item B<kGOST>
|
||||||
|
|
||||||
cipher suites, using VKO 34.10 key exchange, specified in the RFC 4357.
|
Cipher suites, using VKO 34.10 key exchange, specified in the RFC 4357.
|
||||||
|
|
||||||
=item B<GOST94>
|
=item B<GOST94>
|
||||||
|
|
||||||
cipher suites, using HMAC based on GOST R 34.11-94.
|
Cipher suites, using HMAC based on GOST R 34.11-94.
|
||||||
|
|
||||||
=item B<GOST89MAC>
|
=item B<GOST89MAC>
|
||||||
|
|
||||||
cipher suites using GOST 28147-89 MAC B<instead of> HMAC.
|
Cipher suites using GOST 28147-89 MAC B<instead of> HMAC.
|
||||||
|
|
||||||
=item B<PSK>
|
=item B<PSK>
|
||||||
|
|
||||||
all cipher suites using pre-shared keys (PSK).
|
All cipher suites using pre-shared keys (PSK).
|
||||||
|
|
||||||
=item B<kPSK>, B<kECDHEPSK>, B<kDHEPSK>, B<kRSAPSK>
|
=item B<kPSK>, B<kECDHEPSK>, B<kDHEPSK>, B<kRSAPSK>
|
||||||
|
|
||||||
cipher suites using PSK key exchange, ECDHE_PSK, DHE_PSK or RSA_PSK.
|
Cipher suites using PSK key exchange, ECDHE_PSK, DHE_PSK or RSA_PSK.
|
||||||
|
|
||||||
=item B<aPSK>
|
=item B<aPSK>
|
||||||
|
|
||||||
cipher suites using PSK authentication (currently all PSK modes apart from
|
Cipher suites using PSK authentication (currently all PSK modes apart from
|
||||||
RSA_PSK).
|
RSA_PSK).
|
||||||
|
|
||||||
=item B<SUITEB128>, B<SUITEB128ONLY>, B<SUITEB192>
|
=item B<SUITEB128>, B<SUITEB128ONLY>, B<SUITEB192>
|
||||||
|
|
||||||
enables suite B mode operation using 128 (permitting 192 bit mode by peer)
|
Enables suite B mode of operation using 128 (permitting 192 bit mode by peer)
|
||||||
128 bit (not permitting 192 bit by peer) or 192 bit level of security
|
128 bit (not permitting 192 bit by peer) or 192 bit level of security
|
||||||
respectively. If used these cipherstrings should appear first in the cipher
|
respectively.
|
||||||
list and anything after them is ignored. Setting Suite B mode has additional
|
If used these cipherstrings should appear first in the cipher
|
||||||
consequences required to comply with RFC6460. In particular the supported
|
list and anything after them is ignored.
|
||||||
signature algorithms is reduced to support only ECDSA and SHA256 or SHA384,
|
Setting Suite B mode has additional consequences required to comply with
|
||||||
only the elliptic curves P-256 and P-384 can be used and only the two suite B
|
RFC6460.
|
||||||
compliant ciphersuites (ECDHE-ECDSA-AES128-GCM-SHA256 and
|
In particular the supported signature algorithms is reduced to support only
|
||||||
ECDHE-ECDSA-AES256-GCM-SHA384) are permissible.
|
ECDSA and SHA256 or SHA384, only the elliptic curves P-256 and P-384 can be
|
||||||
|
used and only the two suite B compliant ciphersuites
|
||||||
|
(ECDHE-ECDSA-AES128-GCM-SHA256 and ECDHE-ECDSA-AES256-GCM-SHA384) are
|
||||||
|
permissible.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
@ -473,13 +486,13 @@ Note: these ciphers can also be used in SSL v3.
|
||||||
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDHE-RSA-DES-CBC3-SHA
|
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDHE-RSA-DES-CBC3-SHA
|
||||||
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDHE-RSA-AES128-SHA
|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDHE-RSA-AES128-SHA
|
||||||
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ECDHE-RSA-AES256-SHA
|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ECDHE-RSA-AES256-SHA
|
||||||
|
|
||||||
TLS_ECDHE_ECDSA_WITH_NULL_SHA ECDHE-ECDSA-NULL-SHA
|
TLS_ECDHE_ECDSA_WITH_NULL_SHA ECDHE-ECDSA-NULL-SHA
|
||||||
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA ECDHE-ECDSA-RC4-SHA
|
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA ECDHE-ECDSA-RC4-SHA
|
||||||
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA ECDHE-ECDSA-DES-CBC3-SHA
|
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA ECDHE-ECDSA-DES-CBC3-SHA
|
||||||
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA ECDHE-ECDSA-AES128-SHA
|
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA ECDHE-ECDSA-AES128-SHA
|
||||||
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA ECDHE-ECDSA-AES256-SHA
|
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA ECDHE-ECDSA-AES256-SHA
|
||||||
|
|
||||||
TLS_ECDH_anon_WITH_NULL_SHA AECDH-NULL-SHA
|
TLS_ECDH_anon_WITH_NULL_SHA AECDH-NULL-SHA
|
||||||
TLS_ECDH_anon_WITH_RC4_128_SHA AECDH-RC4-SHA
|
TLS_ECDH_anon_WITH_RC4_128_SHA AECDH-RC4-SHA
|
||||||
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA AECDH-DES-CBC3-SHA
|
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA AECDH-DES-CBC3-SHA
|
||||||
|
|
|
@ -64,10 +64,15 @@ B<openssl> B<s_client>
|
||||||
[B<-quiet>]
|
[B<-quiet>]
|
||||||
[B<-ssl3>]
|
[B<-ssl3>]
|
||||||
[B<-tls1>]
|
[B<-tls1>]
|
||||||
|
[B<-tls1_1>]
|
||||||
|
[B<-tls1_2>]
|
||||||
[B<-no_ssl3>]
|
[B<-no_ssl3>]
|
||||||
[B<-no_tls1>]
|
[B<-no_tls1>]
|
||||||
[B<-no_tls1_1>]
|
[B<-no_tls1_1>]
|
||||||
[B<-no_tls1_2>]
|
[B<-no_tls1_2>]
|
||||||
|
[B<-dtls>]
|
||||||
|
[B<-dtls1>]
|
||||||
|
[B<-dtls1_2>]
|
||||||
[B<-fallback_scsv>]
|
[B<-fallback_scsv>]
|
||||||
[B<-async>]
|
[B<-async>]
|
||||||
[B<-bugs>]
|
[B<-bugs>]
|
||||||
|
@ -305,15 +310,20 @@ Use the PSK key B<key> when using a PSK cipher suite. The key is
|
||||||
given as a hexadecimal number without leading 0x, for example -psk
|
given as a hexadecimal number without leading 0x, for example -psk
|
||||||
1a2b3c4d.
|
1a2b3c4d.
|
||||||
|
|
||||||
=item B<-ssl3>, B<-tls1>, B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>
|
=item B<-ssl3>, B<-tls1>, B<-tls1_1>, B<-tls1_2>, B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>
|
||||||
|
|
||||||
these options disable the use of certain SSL or TLS protocols. By default
|
These options require or disable the use of the specified SSL or TLS protocols.
|
||||||
the initial handshake uses a method which should be compatible with all
|
By default B<s_client> will negotiate the highest mutually supported protocol
|
||||||
servers and permit them to use SSL v3 or TLS as appropriate.
|
version.
|
||||||
|
When a specific TLS version is required, only that version will be offered to
|
||||||
|
and accepted from the server.
|
||||||
|
|
||||||
Unfortunately there are still ancient and broken servers in use which
|
=item B<-dtls>, B<-dtls1>, B<-dtls1_2>
|
||||||
cannot handle this technique and will fail to connect. Some servers only
|
|
||||||
work if TLS is turned off.
|
These options make B<s_client> use DTLS protocols instead of TLS.
|
||||||
|
With B<-dtls>, B<s_client> will negotiate any supported DTLS protcol version,
|
||||||
|
whilst B<-dtls1> and B<-dtls1_2> will only support DTLS1.0 and DTLS1.2
|
||||||
|
respectively.
|
||||||
|
|
||||||
=item B<-fallback_scsv>
|
=item B<-fallback_scsv>
|
||||||
|
|
||||||
|
@ -479,10 +489,10 @@ option: any verify errors are then returned aborting the handshake.
|
||||||
|
|
||||||
=head1 BUGS
|
=head1 BUGS
|
||||||
|
|
||||||
Because this program has a lot of options and also because some of
|
Because this program has a lot of options and also because some of the
|
||||||
the techniques used are rather old, the C source of s_client is rather
|
techniques used are rather old, the C source of B<s_client> is rather hard to
|
||||||
hard to read and not a model of how things should be done. A typical
|
read and not a model of how things should be done.
|
||||||
SSL client program would be much simpler.
|
A typical SSL client program would be much simpler.
|
||||||
|
|
||||||
The B<-prexit> option is a bit of a hack. We should really report
|
The B<-prexit> option is a bit of a hack. We should really report
|
||||||
information whenever a session is renegotiated.
|
information whenever a session is renegotiated.
|
||||||
|
|
|
@ -75,6 +75,8 @@ B<openssl> B<s_server>
|
||||||
[B<-async>]
|
[B<-async>]
|
||||||
[B<-no_ssl3>]
|
[B<-no_ssl3>]
|
||||||
[B<-no_tls1>]
|
[B<-no_tls1>]
|
||||||
|
[B<-no_tls1_1>]
|
||||||
|
[B<-no_tls1_2>]
|
||||||
[B<-no_dhe>]
|
[B<-no_dhe>]
|
||||||
[B<-bugs>]
|
[B<-bugs>]
|
||||||
[B<-comp>]
|
[B<-comp>]
|
||||||
|
@ -116,15 +118,15 @@ Print out a usage message.
|
||||||
|
|
||||||
=item B<-accept port>
|
=item B<-accept port>
|
||||||
|
|
||||||
the TCP port to listen on for connections. If not specified 4433 is used.
|
The TCP port to listen on for connections. If not specified 4433 is used.
|
||||||
|
|
||||||
=item B<-naccept count>
|
=item B<-naccept count>
|
||||||
|
|
||||||
The server will exit after receiving B<number> connections, default unlimited.
|
The server will exit after receiving B<number> connections, default unlimited.
|
||||||
|
|
||||||
=item B<-context id>
|
=item B<-context id>
|
||||||
|
|
||||||
sets the SSL context id. It can be given any string value. If this option
|
Sets the SSL context id. It can be given any string value. If this option
|
||||||
is not present a default value will be used.
|
is not present a default value will be used.
|
||||||
|
|
||||||
=item B<-cert certname>
|
=item B<-cert certname>
|
||||||
|
@ -149,12 +151,12 @@ The private format to use: DER or PEM. PEM is the default.
|
||||||
|
|
||||||
=item B<-pass arg>
|
=item B<-pass arg>
|
||||||
|
|
||||||
the private key password source. For more information about the format of B<arg>
|
The private key password source. For more information about the format of B<arg>
|
||||||
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
||||||
|
|
||||||
=item B<-dcert filename>, B<-dkey keyname>
|
=item B<-dcert filename>, B<-dkey keyname>
|
||||||
|
|
||||||
specify an additional certificate and private key, these behave in the
|
Specify an additional certificate and private key, these behave in the
|
||||||
same manner as the B<-cert> and B<-key> options except there is no default
|
same manner as the B<-cert> and B<-key> options except there is no default
|
||||||
if they are not specified (no additional certificate and key is used). As
|
if they are not specified (no additional certificate and key is used). As
|
||||||
noted above some cipher suites require a certificate containing a key of
|
noted above some cipher suites require a certificate containing a key of
|
||||||
|
@ -165,24 +167,25 @@ by using an appropriate certificate.
|
||||||
|
|
||||||
=item B<-dcertform format>, B<-dkeyform format>, B<-dpass arg>
|
=item B<-dcertform format>, B<-dkeyform format>, B<-dpass arg>
|
||||||
|
|
||||||
additional certificate and private key format and passphrase respectively.
|
Additional certificate and private key format and passphrase respectively.
|
||||||
|
|
||||||
=item B<-nocert>
|
=item B<-nocert>
|
||||||
|
|
||||||
if this option is set then no certificate is used. This restricts the
|
If this option is set then no certificate is used. This restricts the
|
||||||
cipher suites available to the anonymous ones (currently just anonymous
|
cipher suites available to the anonymous ones (currently just anonymous
|
||||||
DH).
|
DH).
|
||||||
|
|
||||||
=item B<-dhparam filename>
|
=item B<-dhparam filename>
|
||||||
|
|
||||||
the DH parameter file to use. The ephemeral DH cipher suites generate keys
|
The DH parameter file to use. The ephemeral DH cipher suites generate keys
|
||||||
using a set of DH parameters. If not specified then an attempt is made to
|
using a set of DH parameters. If not specified then an attempt is made to
|
||||||
load the parameters from the server certificate file. If this fails then
|
load the parameters from the server certificate file.
|
||||||
a static set of parameters hard coded into the s_server program will be used.
|
If this fails then a static set of parameters hard coded into the B<s_server>
|
||||||
|
program will be used.
|
||||||
|
|
||||||
=item B<-no_dhe>
|
=item B<-no_dhe>
|
||||||
|
|
||||||
if this option is set then no DH parameters will be loaded effectively
|
If this option is set then no DH parameters will be loaded effectively
|
||||||
disabling the ephemeral DH cipher suites.
|
disabling the ephemeral DH cipher suites.
|
||||||
|
|
||||||
=item B<-crl_check>, B<-crl_check_all>
|
=item B<-crl_check>, B<-crl_check_all>
|
||||||
|
@ -242,40 +245,40 @@ If this option is used, then verification errors close the connection.
|
||||||
|
|
||||||
=item B<-state>
|
=item B<-state>
|
||||||
|
|
||||||
prints out the SSL session states.
|
Prints the SSL session states.
|
||||||
|
|
||||||
=item B<-debug>
|
=item B<-debug>
|
||||||
|
|
||||||
print extensive debugging information including a hex dump of all traffic.
|
Print extensive debugging information including a hex dump of all traffic.
|
||||||
|
|
||||||
=item B<-msg>
|
=item B<-msg>
|
||||||
|
|
||||||
show all protocol messages with hex dump.
|
Show all protocol messages with hex dump.
|
||||||
|
|
||||||
=item B<-trace>
|
=item B<-trace>
|
||||||
|
|
||||||
show verbose trace output of protocol messages. OpenSSL needs to be compiled
|
Show verbose trace output of protocol messages. OpenSSL needs to be compiled
|
||||||
with B<enable-ssl-trace> for this option to work.
|
with B<enable-ssl-trace> for this option to work.
|
||||||
|
|
||||||
=item B<-msgfile>
|
=item B<-msgfile>
|
||||||
|
|
||||||
file to send output of B<-msg> or B<-trace> to, default standard output.
|
File to send output of B<-msg> or B<-trace> to, default standard output.
|
||||||
|
|
||||||
=item B<-nbio_test>
|
=item B<-nbio_test>
|
||||||
|
|
||||||
tests non blocking I/O
|
Tests non blocking I/O
|
||||||
|
|
||||||
=item B<-nbio>
|
=item B<-nbio>
|
||||||
|
|
||||||
turns on non blocking I/O
|
Turns on non blocking I/O
|
||||||
|
|
||||||
=item B<-crlf>
|
=item B<-crlf>
|
||||||
|
|
||||||
this option translated a line feed from the terminal into CR+LF.
|
This option translated a line feed from the terminal into CR+LF.
|
||||||
|
|
||||||
=item B<-quiet>
|
=item B<-quiet>
|
||||||
|
|
||||||
inhibit printing of session and certificate information.
|
Inhibit printing of session and certificate information.
|
||||||
|
|
||||||
=item B<-psk_hint hint>
|
=item B<-psk_hint hint>
|
||||||
|
|
||||||
|
@ -287,37 +290,41 @@ Use the PSK key B<key> when using a PSK cipher suite. The key is
|
||||||
given as a hexadecimal number without leading 0x, for example -psk
|
given as a hexadecimal number without leading 0x, for example -psk
|
||||||
1a2b3c4d.
|
1a2b3c4d.
|
||||||
|
|
||||||
=item B<-ssl3>, B<-tls1>, B<-no_ssl3>, B<-no_tls1>
|
=item B<-ssl2>, B<-ssl3>, B<-tls1>, B<-tls1_1>, B<-tls1_2>, B<-no_ssl2>, B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>
|
||||||
|
|
||||||
these options disable the use of certain SSL or TLS protocols. By default
|
These options require or disable the use of the specified SSL or TLS protocols.
|
||||||
the initial handshake uses a method which should be compatible with all
|
By default B<s_server> will negotiate the highest mutually supported protocol
|
||||||
servers and permit them to use SSL v3 or TLS as appropriate.
|
version.
|
||||||
|
When a specific TLS version is required, only that version will be accepted
|
||||||
|
from the client.
|
||||||
|
|
||||||
=item B<-dtls>, B<-dtls1>, B<-dtls1_2>
|
=item B<-dtls>, B<-dtls1>, B<-dtls1_2>
|
||||||
|
|
||||||
these options make s_server use DTLS protocols instead of TLS. With B<-dtls>
|
These options make B<s_server> use DTLS protocols instead of TLS.
|
||||||
s_server will negotiate any supported DTLS protcol version, whilst B<-dtls1> and
|
With B<-dtls>, B<s_server> will negotiate any supported DTLS protcol version,
|
||||||
B<-dtls1_2> will only support DTLS1.0 and DTLS1.2 respectively.
|
whilst B<-dtls1> and B<-dtls1_2> will only support DTLSv1.0 and DTLSv1.2
|
||||||
|
respectively.
|
||||||
|
|
||||||
=item B<-listen>
|
=item B<-listen>
|
||||||
|
|
||||||
this option can only be used in conjunction with one of the DTLS options above.
|
This option can only be used in conjunction with one of the DTLS options above.
|
||||||
With this option s_server will listen on a UDP port for incoming connections.
|
With this option B<s_server> will listen on a UDP port for incoming connections.
|
||||||
Any ClientHellos that arrive will be checked to see if they have a cookie in
|
Any ClientHellos that arrive will be checked to see if they have a cookie in
|
||||||
them or not. Any without a cookie will be responded to with a
|
them or not.
|
||||||
HelloVerifyRequest. If a ClientHello with a cookie is received then s_server
|
Any without a cookie will be responded to with a HelloVerifyRequest.
|
||||||
will connect to that peer and complete the handshake.
|
If a ClientHello with a cookie is received then B<s_server> will connect to
|
||||||
|
that peer and complete the handshake.
|
||||||
|
|
||||||
=item B<-async>
|
=item B<-async>
|
||||||
|
|
||||||
switch on asynchronous mode. Cryptographic operations will be performed
|
Switch on asynchronous mode. Cryptographic operations will be performed
|
||||||
asynchronously. This will only have an effect if an asynchronous capable engine
|
asynchronously. This will only have an effect if an asynchronous capable engine
|
||||||
is also used via the B<-engine> option. For test purposes the dummy async engine
|
is also used via the B<-engine> option. For test purposes the dummy async engine
|
||||||
(dasync) can be used (if available).
|
(dasync) can be used (if available).
|
||||||
|
|
||||||
=item B<-bugs>
|
=item B<-bugs>
|
||||||
|
|
||||||
there are several known bug in SSL and TLS implementations. Adding this
|
There are several known bug in SSL and TLS implementations. Adding this
|
||||||
option enables various workarounds.
|
option enables various workarounds.
|
||||||
|
|
||||||
=item B<-comp>
|
=item B<-comp>
|
||||||
|
@ -335,12 +342,12 @@ OpenSSL 1.1.0.
|
||||||
|
|
||||||
=item B<-brief>
|
=item B<-brief>
|
||||||
|
|
||||||
only provide a brief summary of connection parameters instead of the
|
Provide a brief summary of connection parameters instead of the normal verbose
|
||||||
normal verbose output.
|
output.
|
||||||
|
|
||||||
=item B<-cipher cipherlist>
|
=item B<-cipher cipherlist>
|
||||||
|
|
||||||
this allows the cipher list used by the server to be modified. When
|
This allows the cipher list used by the server to be modified. When
|
||||||
the client sends a list of supported ciphers the first client cipher
|
the client sends a list of supported ciphers the first client cipher
|
||||||
also included in the server list is used. Because the client specifies
|
also included in the server list is used. Because the client specifies
|
||||||
the preference order, the order of the server cipherlist irrelevant. See
|
the preference order, the order of the server cipherlist irrelevant. See
|
||||||
|
@ -348,32 +355,32 @@ the B<ciphers> command for more information.
|
||||||
|
|
||||||
=item B<-serverpref>
|
=item B<-serverpref>
|
||||||
|
|
||||||
use the server's cipher preferences, rather than the client's preferences.
|
Use the server's cipher preferences, rather than the client's preferences.
|
||||||
|
|
||||||
=item B<-tlsextdebug>
|
=item B<-tlsextdebug>
|
||||||
|
|
||||||
print out a hex dump of any TLS extensions received from the server.
|
Print a hex dump of any TLS extensions received from the server.
|
||||||
|
|
||||||
=item B<-no_ticket>
|
=item B<-no_ticket>
|
||||||
|
|
||||||
disable RFC4507bis session ticket support.
|
Disable RFC4507bis session ticket support.
|
||||||
|
|
||||||
=item B<-www>
|
=item B<-www>
|
||||||
|
|
||||||
sends a status message back to the client when it connects. This includes
|
Sends a status message back to the client when it connects. This includes
|
||||||
lots of information about the ciphers used and various session parameters.
|
information about the ciphers used and various session parameters.
|
||||||
The output is in HTML format so this option will normally be used with a
|
The output is in HTML format so this option will normally be used with a
|
||||||
web browser.
|
web browser.
|
||||||
|
|
||||||
=item B<-WWW>
|
=item B<-WWW>
|
||||||
|
|
||||||
emulates a simple web server. Pages will be resolved relative to the
|
Emulates a simple web server. Pages will be resolved relative to the
|
||||||
current directory, for example if the URL https://myhost/page.html is
|
current directory, for example if the URL https://myhost/page.html is
|
||||||
requested the file ./page.html will be loaded.
|
requested the file ./page.html will be loaded.
|
||||||
|
|
||||||
=item B<-HTTP>
|
=item B<-HTTP>
|
||||||
|
|
||||||
emulates a simple web server. Pages will be resolved relative to the
|
Emulates a simple web server. Pages will be resolved relative to the
|
||||||
current directory, for example if the URL https://myhost/page.html is
|
current directory, for example if the URL https://myhost/page.html is
|
||||||
requested the file ./page.html will be loaded. The files loaded are
|
requested the file ./page.html will be loaded. The files loaded are
|
||||||
assumed to contain a complete and correct HTTP response (lines that
|
assumed to contain a complete and correct HTTP response (lines that
|
||||||
|
@ -381,26 +388,26 @@ are part of the HTTP response line and headers must end with CRLF).
|
||||||
|
|
||||||
=item B<-rev>
|
=item B<-rev>
|
||||||
|
|
||||||
simple test server which just reverses the text received from the client
|
Simple test server which just reverses the text received from the client
|
||||||
and sends it back to the server. Also sets B<-brief>.
|
and sends it back to the server. Also sets B<-brief>.
|
||||||
|
|
||||||
=item B<-engine id>
|
=item B<-engine id>
|
||||||
|
|
||||||
specifying an engine (by its unique B<id> string) will cause B<s_server>
|
Specifying an engine (by its unique B<id> string) will cause B<s_server>
|
||||||
to attempt to obtain a functional reference to the specified engine,
|
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
|
thus initialising it if needed. The engine will then be set as the default
|
||||||
for all available algorithms.
|
for all available algorithms.
|
||||||
|
|
||||||
=item B<-id_prefix arg>
|
=item B<-id_prefix arg>
|
||||||
|
|
||||||
generate SSL/TLS session IDs prefixed by B<arg>. This is mostly useful
|
Generate SSL/TLS session IDs prefixed by B<arg>. This is mostly useful
|
||||||
for testing any SSL/TLS code (eg. proxies) that wish to deal with multiple
|
for testing any SSL/TLS code (eg. proxies) that wish to deal with multiple
|
||||||
servers, when each of which might be generating a unique range of session
|
servers, when each of which might be generating a unique range of session
|
||||||
IDs (eg. with a certain prefix).
|
IDs (eg. with a certain prefix).
|
||||||
|
|
||||||
=item B<-rand file(s)>
|
=item B<-rand file(s)>
|
||||||
|
|
||||||
a file or files containing random data used to seed the random number
|
A file or files containing random data used to seed the random number
|
||||||
generator, or an EGD socket (see L<RAND_egd(3)>).
|
generator, or an EGD socket (see L<RAND_egd(3)>).
|
||||||
Multiple files can be specified separated by a OS-dependent character.
|
Multiple files can be specified separated by a OS-dependent character.
|
||||||
The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
|
The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
|
||||||
|
@ -408,7 +415,7 @@ all others.
|
||||||
|
|
||||||
=item B<-serverinfo file>
|
=item B<-serverinfo file>
|
||||||
|
|
||||||
a file containing one or more blocks of PEM data. Each PEM block
|
A file containing one or more blocks of PEM data. Each PEM block
|
||||||
must encode a TLS ServerHello extension (2 bytes type, 2 bytes length,
|
must encode a TLS ServerHello extension (2 bytes type, 2 bytes length,
|
||||||
followed by "length" bytes of extension data). If the client sends
|
followed by "length" bytes of extension data). If the client sends
|
||||||
an empty TLS ClientHello extension matching the type, the corresponding
|
an empty TLS ClientHello extension matching the type, the corresponding
|
||||||
|
@ -416,30 +423,30 @@ ServerHello extension will be returned.
|
||||||
|
|
||||||
=item B<-no_resumption_on_reneg>
|
=item B<-no_resumption_on_reneg>
|
||||||
|
|
||||||
set SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION flag.
|
Set the B<SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION> option.
|
||||||
|
|
||||||
=item B<-status>
|
=item B<-status>
|
||||||
|
|
||||||
enables certificate status request support (aka OCSP stapling).
|
Enables certificate status request support (aka OCSP stapling).
|
||||||
|
|
||||||
=item B<-status_verbose>
|
=item B<-status_verbose>
|
||||||
|
|
||||||
enables certificate status request support (aka OCSP stapling) and gives
|
Enables certificate status request support (aka OCSP stapling) and gives
|
||||||
a verbose printout of the OCSP response.
|
a verbose printout of the OCSP response.
|
||||||
|
|
||||||
=item B<-status_timeout nsec>
|
=item B<-status_timeout nsec>
|
||||||
|
|
||||||
sets the timeout for OCSP response to B<nsec> seconds.
|
Sets the timeout for OCSP response to B<nsec> seconds.
|
||||||
|
|
||||||
=item B<-status_url url>
|
=item B<-status_url url>
|
||||||
|
|
||||||
sets a fallback responder URL to use if no responder URL is present in the
|
Sets a fallback responder URL to use if no responder URL is present in the
|
||||||
server certificate. Without this option an error is returned if the server
|
server certificate. Without this option an error is returned if the server
|
||||||
certificate does not contain a responder address.
|
certificate does not contain a responder address.
|
||||||
|
|
||||||
=item B<-nextprotoneg protocols>
|
=item B<-nextprotoneg protocols>
|
||||||
|
|
||||||
enable Next Protocol Negotiation TLS extension and provide a
|
Enable Next Protocol Negotiation TLS extension and provide a
|
||||||
comma-separated list of supported protocol names.
|
comma-separated list of supported protocol names.
|
||||||
The list should contain most wanted protocols first.
|
The list should contain most wanted protocols first.
|
||||||
Protocol names are printable ASCII strings, for example "http/1.1" or
|
Protocol names are printable ASCII strings, for example "http/1.1" or
|
||||||
|
@ -451,7 +458,7 @@ Protocol names are printable ASCII strings, for example "http/1.1" or
|
||||||
|
|
||||||
If a connection request is established with an SSL client and neither the
|
If a connection request is established with an SSL client and neither the
|
||||||
B<-www> nor the B<-WWW> option has been used then normally any data received
|
B<-www> nor the B<-WWW> option has been used then normally any data received
|
||||||
from the client is displayed and any key presses will be sent to the client.
|
from the client is displayed and any key presses will be sent to the client.
|
||||||
|
|
||||||
Certain single letter commands are also recognized which perform special
|
Certain single letter commands are also recognized which perform special
|
||||||
operations: these are listed below.
|
operations: these are listed below.
|
||||||
|
@ -506,10 +513,10 @@ The session parameters can printed out using the B<sess_id> program.
|
||||||
|
|
||||||
=head1 BUGS
|
=head1 BUGS
|
||||||
|
|
||||||
Because this program has a lot of options and also because some of
|
Because this program has a lot of options and also because some of the
|
||||||
the techniques used are rather old, the C source of s_server is rather
|
techniques used are rather old, the C source of B<s_server> is rather hard to
|
||||||
hard to read and not a model of how things should be done. A typical
|
read and not a model of how things should be done.
|
||||||
SSL server program would be much simpler.
|
A typical SSL server program would be much simpler.
|
||||||
|
|
||||||
The output of common ciphers is wrong: it just gives the list of ciphers that
|
The output of common ciphers is wrong: it just gives the list of ciphers that
|
||||||
OpenSSL recognizes and the client supports.
|
OpenSSL recognizes and the client supports.
|
||||||
|
|
|
@ -122,9 +122,9 @@ than the deprecated alternative commands below.
|
||||||
|
|
||||||
=item B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>
|
=item B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>
|
||||||
|
|
||||||
Disables protocol support for SSLv3, TLS 1.0, TLS 1.1 or TLS 1.2
|
Disables protocol support for SSLv3, TLSv1.0, TLSv1.1 or TLSv1.2 by setting the
|
||||||
by setting the corresponding options B<SSL_OP_NO_SSL3>, B<SSL_OP_NO_TLS1>,
|
corresponding options B<SSL_OP_NO_SSL3>, B<SSL_OP_NO_TLS1>, B<SSL_OP_NO_TLS1_1>
|
||||||
B<SSL_OP_NO_TLS1_1> and B<SSL_OP_NO_TLS1_2> respectively.
|
and B<SSL_OP_NO_TLS1_2> respectively.
|
||||||
These options are deprecated, instead use B<-min_protocol> and B<-max_protocol>.
|
These options are deprecated, instead use B<-min_protocol> and B<-max_protocol>.
|
||||||
|
|
||||||
=item B<-bugs>
|
=item B<-bugs>
|
||||||
|
|
|
@ -76,85 +76,88 @@ B<method> can be of the following types:
|
||||||
|
|
||||||
=over 4
|
=over 4
|
||||||
|
|
||||||
=item SSLv3_method(), SSLv3_server_method(), SSLv3_client_method()
|
|
||||||
|
|
||||||
An SSL connection established with these methods will only understand
|
|
||||||
the SSLv3 protocol.
|
|
||||||
A client will send out a SSLv3 client hello messages and will
|
|
||||||
indicate that it supports SSLv3.
|
|
||||||
A server will only understand SSLv3 client hello message and only
|
|
||||||
support the SSLv3 protocol.
|
|
||||||
|
|
||||||
=item TLSv1_method(), TLSv1_server_method(), TLSv1_client_method()
|
|
||||||
|
|
||||||
A TLS connection established with these methods will only understand
|
|
||||||
the TLS 1.0 protocol.
|
|
||||||
|
|
||||||
=item TLSv1_1_method(), TLSv1_1_server_method(), TLSv1_1_client_method()
|
|
||||||
|
|
||||||
A TLS connection established with these methods will only understand
|
|
||||||
the TLS 1.1 protocol.
|
|
||||||
|
|
||||||
=item TLSv1_2_method(), TLSv1_2_server_method(), TLSv1_2_client_method()
|
|
||||||
|
|
||||||
A TLS connection established with these methods will only understand
|
|
||||||
the TLS 1.2 protocol.
|
|
||||||
|
|
||||||
=item TLS_method(), TLS_server_method(), TLS_client_method()
|
=item TLS_method(), TLS_server_method(), TLS_client_method()
|
||||||
|
|
||||||
A TLS/SSL connection established with these methods may understand
|
These are the general-purpose I<version-flexible> SSL/TLS methods.
|
||||||
the SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols.
|
The actual protocol version used will be negotiated to the highest version
|
||||||
|
mutually supported by the client and the server.
|
||||||
If extensions are required (for example server name)
|
The supported protocols are SSLv3, TLSv1, TLSv1.1 and TLSv1.2.
|
||||||
a client will send out TLSv1 client hello messages including extensions and
|
Most applications should use these method, and avoid the version specific
|
||||||
will indicate that it also understands TLSv1.1, TLSv1.2 and permits a
|
methods described below.
|
||||||
fallback to SSLv3. A server will support SSLv3, TLSv1, TLSv1.1 and TLSv1.2
|
|
||||||
protocols. This is the best choice when compatibility is a concern.
|
|
||||||
|
|
||||||
=item SSLv23_method(), SSLv23_server_method(), SSLv23_client_method()
|
=item SSLv23_method(), SSLv23_server_method(), SSLv23_client_method()
|
||||||
|
|
||||||
Use of these functions is deprecated. They have been replaced with TLS_method(),
|
Use of these functions is deprecated. They have been replaced with the above
|
||||||
TLS_server_method() and TLS_client_method() respectively. New code should use
|
TLS_method(), TLS_server_method() and TLS_client_method() respectively. New
|
||||||
those functions instead.
|
code should use those functions instead.
|
||||||
|
|
||||||
|
=item TLSv1_2_method(), TLSv1_2_server_method(), TLSv1_2_client_method()
|
||||||
|
|
||||||
|
A TLS/SSL connection established with these methods will only understand the
|
||||||
|
TLSv1.2 protocol.
|
||||||
|
|
||||||
|
=item TLSv1_1_method(), TLSv1_1_server_method(), TLSv1_1_client_method()
|
||||||
|
|
||||||
|
A TLS/SSL connection established with these methods will only understand the
|
||||||
|
TLSv1.1 protocol.
|
||||||
|
|
||||||
|
=item TLSv1_method(), TLSv1_server_method(), TLSv1_client_method()
|
||||||
|
|
||||||
|
A TLS/SSL connection established with these methods will only understand the
|
||||||
|
TLSv1 protocol.
|
||||||
|
|
||||||
|
=item SSLv3_method(), SSLv3_server_method(), SSLv3_client_method()
|
||||||
|
|
||||||
|
A TLS/SSL connection established with these methods will only understand the
|
||||||
|
SSLv3 protocol.
|
||||||
|
The SSLv3 protocol is deprecated and should not be used.
|
||||||
|
|
||||||
=item DTLS_method(), DTLS_server_method(), DTLS_client_method()
|
=item DTLS_method(), DTLS_server_method(), DTLS_client_method()
|
||||||
|
|
||||||
A DTLS connection established with those methods understands all
|
These are the version-flexible DTLS methods.
|
||||||
supported DTLS protocols.
|
|
||||||
Currently supported protocols are DTLS 1.0 and DTLS 1.2.
|
Currently supported protocols are DTLS 1.0 and DTLS 1.2.
|
||||||
|
|
||||||
=item DTLSv1_method(), DTLSv1_server_method(), DTLSv1_client_method()
|
|
||||||
|
|
||||||
A DTLS connection established with these methods will only understand
|
|
||||||
the DTLS 1.0 protocol.
|
|
||||||
|
|
||||||
=item DTLSv1_2_method(), DTLSv1_2_server_method(), DTLSv1_2_client_method()
|
=item DTLSv1_2_method(), DTLSv1_2_server_method(), DTLSv1_2_client_method()
|
||||||
|
|
||||||
A DTLS connection established with these methods will only understand
|
These are the version-specific methods for DTLSv1.2.
|
||||||
the DTLS 1.2 protocol.
|
|
||||||
|
=item DTLSv1_method(), DTLSv1_server_method(), DTLSv1_client_method()
|
||||||
|
|
||||||
|
These are the version-specific methods for DTLSv1.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
SSL_CTX_new() initializes the list of ciphers, the session cache setting, the
|
||||||
|
callbacks, the keys and certificates and the options to their default values.
|
||||||
|
|
||||||
TLS_method(), TLS_server_method(), TLS_client_method(), DTLS_method(),
|
TLS_method(), TLS_server_method(), TLS_client_method(), DTLS_method(),
|
||||||
DTLS_server_method() and DTLS_client_method() are the version
|
DTLS_server_method() and DTLS_client_method() are the I<version-flexible>
|
||||||
flexible methods.
|
methods.
|
||||||
All other methods only support one specific protocol version.
|
All other methods only support one specific protocol version.
|
||||||
Use these methods instead of the other version specific methods.
|
Use the I<version-flexible> methods instead of the version specific methods.
|
||||||
|
|
||||||
If you want to limit the supported protocols for the version flexible
|
If you want to limit the supported protocols for the version flexible
|
||||||
methods you can use SSL_CTX_set_min_proto_version(),
|
methods you can use L<SSL_CTX_set_min_proto_version(3)>,
|
||||||
SSL_set_min_proto_version(), SSL_CTX_set_max_proto_version() and
|
L<SSL_set_min_proto_version(3)>, L<SSL_CTX_set_max_proto_version(3)> and
|
||||||
SSL_set_max_proto_version() functions.
|
LSSL_set_max_proto_version(3)> functions.
|
||||||
They can also be limited by setting an option like B<SSL_OP_NO_SSLv3>
|
|
||||||
via the L<SSL_CTX_set_options(3)> or L<SSL_set_options(3)> functions,
|
|
||||||
but that's not recommended.
|
|
||||||
Using these functions it is possible to choose e.g. TLS_server_method()
|
Using these functions it is possible to choose e.g. TLS_server_method()
|
||||||
and be able to negotiate with all possible clients, but to only
|
and be able to negotiate with all possible clients, but to only
|
||||||
allow newer protocols like TLS 1.0, TLS 1.1 or TLS 1.2.
|
allow newer protocols like TLS 1.0, TLS 1.1 or TLS 1.2.
|
||||||
|
|
||||||
SSL_CTX_new() initializes the list of ciphers, the session cache
|
The list of protocols available can also be limited using the
|
||||||
setting, the callbacks, the keys and certificates and the options
|
B<SSL_OP_NO_SSLv3>, B<SSL_OP_NO_TLSv1>, B<SSL_OP_NO_TLSv1_1> and
|
||||||
to its default values.
|
B<SSL_OP_NO_TLSv1_2> options of the L<SSL_CTX_set_options(3)> or
|
||||||
|
L<SSL_set_options(3)> functions, but this approach is not recommended.
|
||||||
|
Clients should avoid creating "holes" in the set of protocols they support.
|
||||||
|
When disabling a protocol, make sure that you also disable either all previous
|
||||||
|
or all subsequent protocol versions.
|
||||||
|
In clients, when a protocol version is disabled without disabling I<all>
|
||||||
|
previous protocol versions, the effect is to also disable all subsequent
|
||||||
|
protocol versions.
|
||||||
|
|
||||||
|
The SSLv3 protocol is deprecated and should generally not be used.
|
||||||
|
Applications should typically use L<SSL_CTX_set_min_proto_version(3)> to set
|
||||||
|
the minimum protocol to at least B<TLS1_VERSION>.
|
||||||
|
|
||||||
=head1 RETURN VALUES
|
=head1 RETURN VALUES
|
||||||
|
|
||||||
|
@ -164,8 +167,8 @@ The following return values can occur:
|
||||||
|
|
||||||
=item NULL
|
=item NULL
|
||||||
|
|
||||||
The creation of a new SSL_CTX object failed. Check the error stack to
|
The creation of a new SSL_CTX object failed. Check the error stack to find out
|
||||||
find out the reason.
|
the reason.
|
||||||
|
|
||||||
=item Pointer to an SSL_CTX object
|
=item Pointer to an SSL_CTX object
|
||||||
|
|
||||||
|
@ -185,8 +188,7 @@ and TLS_client_method() functions were introduced in OpenSSL 1.1.0.
|
||||||
|
|
||||||
=head1 SEE ALSO
|
=head1 SEE ALSO
|
||||||
|
|
||||||
L<SSL_CTX_free(3)>, L<SSL_accept(3)>,
|
L<SSL_CTX_set_options(3)>, L<SSL_CTX_free(3)>, L<SSL_accept(3)>,
|
||||||
L<SSL_CTX_set_min_proto_version(3)>,
|
L<SSL_CTX_set_min_proto_version(3)>, L<ssl(3)>, L<SSL_set_connect_state(3)>
|
||||||
L<ssl(3)>, L<SSL_set_connect_state(3)>
|
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
|
@ -118,29 +118,67 @@ protocol methods defined in B<SSL_METHOD> structures.
|
||||||
|
|
||||||
=over 4
|
=over 4
|
||||||
|
|
||||||
=item const SSL_METHOD *B<SSLv3_client_method>(void);
|
=item const SSL_METHOD *B<TLS_method>(void);
|
||||||
|
|
||||||
Constructor for the SSLv3 SSL_METHOD structure for a dedicated client.
|
Constructor for the I<version-flexible> SSL_METHOD structure for clients,
|
||||||
|
servers or both.
|
||||||
|
See L<SSL_CTX_new(3)> for details.
|
||||||
|
|
||||||
=item const SSL_METHOD *B<SSLv3_server_method>(void);
|
=item const SSL_METHOD *B<TLS_client_method>(void);
|
||||||
|
|
||||||
Constructor for the SSLv3 SSL_METHOD structure for a dedicated server.
|
Constructor for the I<version-flexible> SSL_METHOD structure for clients.
|
||||||
|
|
||||||
=item const SSL_METHOD *B<SSLv3_method>(void);
|
=item const SSL_METHOD *B<TLS_server_method>(void);
|
||||||
|
|
||||||
Constructor for the SSLv3 SSL_METHOD structure for combined client and server.
|
Constructor for the I<version-flexible> SSL_METHOD structure for servers.
|
||||||
|
|
||||||
=item const SSL_METHOD *B<TLSv1_client_method>(void);
|
=item const SSL_METHOD *B<TLSv1_2_method>(void);
|
||||||
|
|
||||||
Constructor for the TLSv1 SSL_METHOD structure for a dedicated client.
|
Constructor for the TLSv1.2 SSL_METHOD structure for clients, servers or both.
|
||||||
|
|
||||||
=item const SSL_METHOD *B<TLSv1_server_method>(void);
|
=item const SSL_METHOD *B<TLSv1_2_client_method>(void);
|
||||||
|
|
||||||
Constructor for the TLSv1 SSL_METHOD structure for a dedicated server.
|
Constructor for the TLSv1.2 SSL_METHOD structure for clients.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<TLSv1_2_server_method>(void);
|
||||||
|
|
||||||
|
Constructor for the TLSv1.2 SSL_METHOD structure for servers.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<TLSv1_1_method>(void);
|
||||||
|
|
||||||
|
Constructor for the TLSv1.1 SSL_METHOD structure for clients, servers or both.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<TLSv1_1_client_method>(void);
|
||||||
|
|
||||||
|
Constructor for the TLSv1.1 SSL_METHOD structure for clients.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<TLSv1_1_server_method>(void);
|
||||||
|
|
||||||
|
Constructor for the TLSv1.1 SSL_METHOD structure for servers.
|
||||||
|
|
||||||
=item const SSL_METHOD *B<TLSv1_method>(void);
|
=item const SSL_METHOD *B<TLSv1_method>(void);
|
||||||
|
|
||||||
Constructor for the TLSv1 SSL_METHOD structure for combined client and server.
|
Constructor for the TLSv1 SSL_METHOD structure for clients, servers or both.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<TLSv1_client_method>(void);
|
||||||
|
|
||||||
|
Constructor for the TLSv1 SSL_METHOD structure for clients.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<TLSv1_server_method>(void);
|
||||||
|
|
||||||
|
Constructor for the TLSv1 SSL_METHOD structure for servers.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<SSLv3_method>(void);
|
||||||
|
|
||||||
|
Constructor for the SSLv3 SSL_METHOD structure for clients, servers or both.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<SSLv3_client_method>(void);
|
||||||
|
|
||||||
|
Constructor for the SSLv3 SSL_METHOD structure for clients.
|
||||||
|
|
||||||
|
=item const SSL_METHOD *B<SSLv3_server_method>(void);
|
||||||
|
|
||||||
|
Constructor for the SSLv3 SSL_METHOD structure for servers.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue