Disables protocol support for SSLv3, TLS 1.0, TLS 1.1 or TLS 1.2
Disables protocol support for SSLv3, TLS 1.0, TLS 1.1 or TLS 1.2
@@ -258,16 +263,37 @@ picks an appropriate curve based on client and server preferences. The curve
can be either the B<NIST> name (e.g. B<P-256>) or an OpenSSL OID name
can be either the B<NIST> name (e.g. B<P-256>) or an OpenSSL OID name
(e.g B<prime256v1>). Curve names are case sensitive.
(e.g B<prime256v1>). Curve names are case sensitive.
=item B<MinProtocol>
This sets the minimum supported SSL, TLS or DTLS version.
Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>, B<TLSv1.2>, B<DTLSv1> and B<DTLSv1.2>.
=item B<MaxProtocol>
This sets the maximum supported SSL, TLS or DTLS version.
Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>, B<TLSv1.2>, B<DTLSv1> and B<DTLSv1.2>.
=item B<Protocol>
=item B<Protocol>
The supported versions of the SSL or TLS protocol.
This can be used to enable or disable certain versions of the SSL, TLS or DTLS protocol.
The B<value> argument is a comma separated list of supported protocols to enable or disable.
If a protocol is preceded by B<-> that version is disabled.
All protocol versions are enabled by default.
You need to disable at least 1 protocol version for this setting have any effect.
Only enabling some protocol versions does not disable the other protocol versions.
Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>, B<TLSv1.2>, B<DTLSv1> and B<DTLSv1.2>.
The special value B<ALL> refers to all supported versions.
The B<value> argument is a comma separated list of supported protocols to
This can't enable protocols that are disabled using B<MinProtocol> or B<MaxProtocol>, but can disable protocols that are still allowed by them.
enable or disable. If an protocol is preceded by B<-> that version is disabled.
All versions are enabled by default, though applications may choose to
The B<Protocol> command is fragile and deprecated; do not use it.
explicitly disable some. Currently supported protocol values are
Use B<MinProtocol> and B<MaxProtocol> instead.
B<SSLv3>, B<TLSv1>, B<TLSv1.1> and B<TLSv1.2>. The special value B<ALL> refers
If you do use B<Protocol>, make sure that the resulting range of enabled protocols has no "holes", e.g. if TLS 1.0 and TLS 1.2 are both enabled, make sure to also leave TLS 1.1 enabled.
to all supported versions.
=item B<Options>
=item B<Options>
@@ -416,12 +442,29 @@ Set supported signature algorithms:
A DTLS connection established with these methods will only understand the DTLS 1.2 protocol.
=back
=back
The list of protocols available can later be limited using the
TLS_method(), TLS_server_method(), TLS_client_method(), DTLS_method(), DTLS_server_method() and DTLS_client_method() are the version flexible methods.
SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1, SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2
All other methods only support 1 specific protocol version.
options of the SSL_CTX_set_options() or SSL_set_options() functions.
It's recommended to use those methods instead of the version specific methods.
Using these options it is possible to choose e.g. TLS_server_method() and
be able to negotiate with all possible clients, but to only allow newer
protocols like TLSv1, TLSv1.1 or TLS v1.2.
Applications which never want to support SSLv3 can set SSL_OP_NO_SSLv3.
If you want to limit the supported protocols for the version flexible methods you can use SSL_CTX_set_min_proto_version(), SSL_set_min_proto_version(), SSL_CTX_set_max_proto_version() and SSL_set_max_proto_version() functions.
They can also be limited using by using an option like SSL_OP_NO_SSLv3 of the SSL_CTX_set_options() or SSL_set_options() functions, but that's not recommended.
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 allow newer protocols like TLS v1, TLS v1.1 or TLS v1.2.
SSL_CTX_new() initializes the list of ciphers, the session cache setting,
SSL_CTX_new() initializes the list of ciphers, the session cache setting, the callbacks, the keys and certificates and the options to its default values.
the callbacks, the keys and certificates and the options to its default
values.
=head1 RETURN VALUES
=head1 RETURN VALUES
@@ -102,14 +138,14 @@ The return value points to an allocated SSL_CTX object.
=head1 HISTORY
=head1 HISTORY
SSLv2_method, SSLv2_server_method and SSLv2_client_method where removed in
SSLv3
OpenSSL 1.1.0. SSLv23_method, SSLv23_server_method and SSLv23_client_method were
SSLv2_method, SSLv2_server_method and SSLv2_client_method where removed in OpenSSL 1.1.0.
deprecated and TLS_method, TLS_server_method and TLS_client_method
SSLv23_method, SSLv23_server_method and SSLv23_client_method were deprecated and TLS_method, TLS_server_method and TLS_client_method were introduced in OpenSSL 1.1.0.
SSL_CTX_set_min_proto_version, SSL_CTX_set_max_proto_version, SSL_set_min_proto_version, SSL_set_max_proto_version - Set minimum and maximum supported protocol version
=head1 SYNOPSIS
#include <openssl/ssl.h>
int SSL_CTX_set_min_proto_version(SSL_CTX *ctx, int version);
int SSL_CTX_set_max_proto_version(SSL_CTX *ctx, int version);
int SSL_set_min_proto_version(SSL *ssl, int version);
int SSL_set_max_proto_version(SSL *ssl, int version);
=head1 DESCRIPTION
The functions set the minimum and maximum supported portocol versions for the B<ctx> or B<ssl>.
This works in combination with the options set via SSL_CTX_set_options() that allows to disable specific protocol versions.
You should use these functions instead of disabling a specific protocol version.
When setting the minimum or maximum version to 0 it will use the lowest or highest supported version, respectively, by the library.
Currently supported versions are B<SSL3_VERSION>, B<TLS1_VERSION>, B<TLS1_1_VERSION>, B<TLS1_2_VERSION>, B<DTLS1_VERSION> and B<DTLS1_2_VERSION>.
=head1 RETURN VALUES
The function returns 1 on success and 0 on failure.