blob: 0da3f7be8e25eab8a50d03c25209217ade05a452 [file] [log] [blame]
Richard Levitte4759abc2000-09-20 16:55:26 +00001=pod
2
3=head1 NAME
4
Kurt Roeckx45f55f62014-11-30 15:35:22 +01005SSL_CTX_new, SSLv3_method, SSLv3_server_method, SSLv3_client_method, TLSv1_method, TLSv1_server_method, TLSv1_client_method, TLSv1_1_method, TLSv1_1_server_method, TLSv1_1_client_method, SSLv23_method, SSLv23_server_method, SSLv23_client_method - create a new SSL_CTX object as framework for TLS/SSL enabled functions
Richard Levitte4759abc2000-09-20 16:55:26 +00006
7=head1 SYNOPSIS
8
9 #include <openssl/ssl.h>
10
Nils Larsch4ebb3422005-08-14 21:48:33 +000011 SSL_CTX *SSL_CTX_new(const SSL_METHOD *method);
Richard Levitte4759abc2000-09-20 16:55:26 +000012
13=head1 DESCRIPTION
14
15SSL_CTX_new() creates a new B<SSL_CTX> object as framework to establish
16TLS/SSL enabled connections.
17
18=head1 NOTES
19
20The SSL_CTX object uses B<method> as connection method. The methods exist
21in a generic type (for client and server use), a server only type, and a
22client only type. B<method> can be of the following types:
23
24=over 4
25
Richard Levitte4759abc2000-09-20 16:55:26 +000026=item SSLv3_method(void), SSLv3_server_method(void), SSLv3_client_method(void)
27
28A TLS/SSL connection established with these methods will only understand the
Ulf Möller14a74a22000-10-19 15:19:41 +000029SSLv3 protocol. A client will send out SSLv3 client hello messages
30and will indicate that it only understands SSLv3. A server will only understand
31SSLv3 client hello messages. This especially means, that it will
Richard Levitte4759abc2000-09-20 16:55:26 +000032not understand SSLv2 client hello messages which are widely used for
33compatibility reasons, see SSLv23_*_method().
34
35=item TLSv1_method(void), TLSv1_server_method(void), TLSv1_client_method(void)
36
37A TLS/SSL connection established with these methods will only understand the
38TLSv1 protocol. A client will send out TLSv1 client hello messages
39and will indicate that it only understands TLSv1. A server will only understand
40TLSv1 client hello messages. This especially means, that it will
41not understand SSLv2 client hello messages which are widely used for
Ulf Möller14a74a22000-10-19 15:19:41 +000042compatibility reasons, see SSLv23_*_method(). It will also not understand
43SSLv3 client hello messages.
Richard Levitte4759abc2000-09-20 16:55:26 +000044
Dr. Stephen Henson3db935a2012-11-16 19:12:24 +000045=item TLSv1_1_method(void), TLSv1_1_server_method(void), TLSv1_1_client_method(void)
46
47A TLS/SSL connection established with these methods will only understand the
48TLSv1.1 protocol. A client will send out TLSv1.1 client hello messages
49and will indicate that it only understands TLSv1.1. A server will only
50understand TLSv1.1 client hello messages. This especially means, that it will
51not understand SSLv2 client hello messages which are widely used for
52compatibility reasons, see SSLv23_*_method(). It will also not understand
53SSLv3 client hello messages.
54
Richard Levitte4759abc2000-09-20 16:55:26 +000055=item SSLv23_method(void), SSLv23_server_method(void), SSLv23_client_method(void)
56
Kurt Roeckx45f55f62014-11-30 15:35:22 +010057A TLS/SSL connection established with these methods may understand the
Dr. Stephen Henson528b1f92014-06-28 21:54:13 +010058SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols.
59
Kurt Roeckx45f55f62014-11-30 15:35:22 +010060If extensions are required (for example server name)
Dr. Stephen Henson528b1f92014-06-28 21:54:13 +010061a client will send out TLSv1 client hello messages including extensions and
62will indicate that it also understands TLSv1.1, TLSv1.2 and permits a
63fallback to SSLv3. A server will support SSLv3, TLSv1, TLSv1.1 and TLSv1.2
64protocols. This is the best choice when compatibility is a concern.
65
Richard Levitte4759abc2000-09-20 16:55:26 +000066=back
67
Kurt Roeckx45f55f62014-11-30 15:35:22 +010068The list of protocols available can later be limited using the
Dr. Stephen Henson528b1f92014-06-28 21:54:13 +010069SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1, SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2
70options of the SSL_CTX_set_options() or SSL_set_options() functions.
71Using these options it is possible to choose e.g. SSLv23_server_method() and
72be able to negotiate with all possible clients, but to only allow newer
73protocols like TLSv1, TLSv1.1 or TLS v1.2.
74
Kurt Roeckx45f55f62014-11-30 15:35:22 +010075Applications which never want to support SSLv3 can set SSL_OP_NO_SSLv3.
Richard Levitte4759abc2000-09-20 16:55:26 +000076
77SSL_CTX_new() initializes the list of ciphers, the session cache setting,
Dr. Stephen Henson528b1f92014-06-28 21:54:13 +010078the callbacks, the keys and certificates and the options to its default
Richard Levitte4759abc2000-09-20 16:55:26 +000079values.
80
81=head1 RETURN VALUES
82
83The following return values can occur:
84
85=over 4
86
87=item NULL
88
89The creation of a new SSL_CTX object failed. Check the error stack to
90find out the reason.
91
92=item Pointer to an SSL_CTX object
93
94The return value points to an allocated SSL_CTX object.
95
96=back
97
Kurt Roeckx45f55f62014-11-30 15:35:22 +010098=head1 HISTORY
99
100SSLv2_method, SSLv2_server_method and SSLv2_client_method where removed in
101OpenSSL 1.1.0.
102
Richard Levitte4759abc2000-09-20 16:55:26 +0000103=head1 SEE ALSO
104
105L<SSL_CTX_free(3)|SSL_CTX_free(3)>, L<SSL_accept(3)|SSL_accept(3)>,
Lutz Jänickeb72ff472001-03-08 17:24:02 +0000106L<ssl(3)|ssl(3)>, L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>
Richard Levitte4759abc2000-09-20 16:55:26 +0000107
108=cut