xref: /openbsd-src/lib/libtls/man/tls_config_set_protocols.3 (revision 5c389b79544373bccfce668b646e62e7ba9802a3)
1*5c389b79Sbeck.\" $OpenBSD: tls_config_set_protocols.3,v 1.12 2023/07/02 06:37:27 beck Exp $
2e690d60fSschwarze.\"
3e690d60fSschwarze.\" Copyright (c) 2014 Ted Unangst <tedu@openbsd.org>
44801fc0bSschwarze.\" Copyright (c) 2015, 2016 Joel Sing <jsing@openbsd.org>
54801fc0bSschwarze.\" Copyright (c) 2015 Bob Beck <beck@openbsd.org>
6e690d60fSschwarze.\"
7e690d60fSschwarze.\" Permission to use, copy, modify, and distribute this software for any
8e690d60fSschwarze.\" purpose with or without fee is hereby granted, provided that the above
9e690d60fSschwarze.\" copyright notice and this permission notice appear in all copies.
10e690d60fSschwarze.\"
11e690d60fSschwarze.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12e690d60fSschwarze.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13e690d60fSschwarze.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14e690d60fSschwarze.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15e690d60fSschwarze.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16e690d60fSschwarze.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17e690d60fSschwarze.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18e690d60fSschwarze.\"
19*5c389b79Sbeck.Dd $Mdocdate: July 2 2023 $
20e690d60fSschwarze.Dt TLS_CONFIG_SET_PROTOCOLS 3
21e690d60fSschwarze.Os
22e690d60fSschwarze.Sh NAME
23e690d60fSschwarze.Nm tls_config_set_protocols ,
24e690d60fSschwarze.Nm tls_config_parse_protocols ,
25e690d60fSschwarze.Nm tls_config_set_alpn ,
26e690d60fSschwarze.Nm tls_config_set_ciphers ,
27e690d60fSschwarze.Nm tls_config_set_dheparams ,
284896de1eSjsing.Nm tls_config_set_ecdhecurves ,
29e690d60fSschwarze.Nm tls_config_prefer_ciphers_client ,
30e690d60fSschwarze.Nm tls_config_prefer_ciphers_server
31e690d60fSschwarze.Nd TLS protocol and cipher selection
32e690d60fSschwarze.Sh SYNOPSIS
33e690d60fSschwarze.In tls.h
34e690d60fSschwarze.Ft int
35e690d60fSschwarze.Fo tls_config_set_protocols
36e690d60fSschwarze.Fa "struct tls_config *config"
37e690d60fSschwarze.Fa "uint32_t protocols"
38e690d60fSschwarze.Fc
39e690d60fSschwarze.Ft int
40e690d60fSschwarze.Fo tls_config_parse_protocols
41e690d60fSschwarze.Fa "uint32_t *protocols"
42e690d60fSschwarze.Fa "const char *protostr"
43e690d60fSschwarze.Fc
44e690d60fSschwarze.Ft int
45e690d60fSschwarze.Fo tls_config_set_alpn
46e690d60fSschwarze.Fa "struct tls_config *config"
47e690d60fSschwarze.Fa "const char *alpn"
48e690d60fSschwarze.Fc
49e690d60fSschwarze.Ft int
50e690d60fSschwarze.Fo tls_config_set_ciphers
51e690d60fSschwarze.Fa "struct tls_config *config"
52e690d60fSschwarze.Fa "const char *ciphers"
53e690d60fSschwarze.Fc
54e690d60fSschwarze.Ft int
55e690d60fSschwarze.Fo tls_config_set_dheparams
56e690d60fSschwarze.Fa "struct tls_config *config"
57e690d60fSschwarze.Fa "const char *params"
58e690d60fSschwarze.Fc
59e690d60fSschwarze.Ft int
604896de1eSjsing.Fo tls_config_set_ecdhecurves
61e690d60fSschwarze.Fa "struct tls_config *config"
624896de1eSjsing.Fa "const char *curves"
63e690d60fSschwarze.Fc
64e690d60fSschwarze.Ft void
65e690d60fSschwarze.Fn tls_config_prefer_ciphers_client "struct tls_config *config"
66e690d60fSschwarze.Ft void
67e690d60fSschwarze.Fn tls_config_prefer_ciphers_server "struct tls_config *config"
68e690d60fSschwarze.Sh DESCRIPTION
69e690d60fSschwarzeThese functions modify a configuration by setting parameters.
70e690d60fSschwarzeThe configuration options apply to both clients and servers, unless noted
71e690d60fSschwarzeotherwise.
72e690d60fSschwarze.Pp
73e690d60fSschwarze.Fn tls_config_set_protocols
74e690d60fSschwarzespecifies which versions of the TLS protocol may be used.
75e690d60fSschwarzePossible values are the bitwise OR of:
76e690d60fSschwarze.Pp
7714dc8396Sschwarze.Bl -item -offset indent -compact
7814dc8396Sschwarze.It
7914dc8396Sschwarze.Dv TLS_PROTOCOL_TLSv1_2
8014dc8396Sschwarze.It
8114dc8396Sschwarze.Dv TLS_PROTOCOL_TLSv1_3
82e690d60fSschwarze.El
83e690d60fSschwarze.Pp
84e690d60fSschwarzeAdditionally, the values
85e690d60fSschwarze.Dv TLS_PROTOCOL_TLSv1
86*5c389b79Sbeck(TLSv1.2, TLSv1.3),
87e690d60fSschwarze.Dv TLS_PROTOCOLS_ALL
88e690d60fSschwarze(all supported protocols) and
89e690d60fSschwarze.Dv TLS_PROTOCOLS_DEFAULT
906f8363eeSbeck(TLSv1.2 and TLSv1.3) may be used.
91e690d60fSschwarze.Pp
92e690d60fSschwarzeThe
93e690d60fSschwarze.Fn tls_config_parse_protocols
94e690d60fSschwarzeutility function parses a protocol string and returns the corresponding
95e690d60fSschwarzevalue via the
96e690d60fSschwarze.Ar protocols
97e690d60fSschwarzeargument.
98e690d60fSschwarzeThis value can then be passed to the
99e690d60fSschwarze.Fn tls_config_set_protocols
100e690d60fSschwarzefunction.
101e690d60fSschwarzeThe protocol string is a comma or colon separated list of keywords.
102fcde59b2SknValid keywords are:
103fcde59b2Skn.Pp
104fcde59b2Skn.Bl -tag -width "tlsv1.3" -offset indent -compact
105fcde59b2Skn.It Dv tlsv1.2
106fcde59b2Skn.It Dv tlsv1.3
10714dc8396Sschwarze.It Dv all
10814dc8396Sschwarze.Pq all supported protocols
10914dc8396Sschwarze.It Dv default
11014dc8396Sschwarze.Pq an alias for Dv secure
11114dc8396Sschwarze.It Dv legacy
11214dc8396Sschwarze.Pq an alias for Dv all
11314dc8396Sschwarze.It Dv secure
11414dc8396Sschwarze.Pq currently TLSv1.2 and TLSv1.3
115fcde59b2Skn.El
116fcde59b2Skn.Pp
117e690d60fSschwarzeIf a value has a negative prefix (in the form of a leading exclamation mark)
118e690d60fSschwarzethen it is removed from the list of available protocols, rather than being
119e690d60fSschwarzeadded to it.
120e690d60fSschwarze.Pp
121e690d60fSschwarze.Fn tls_config_set_alpn
122e690d60fSschwarzesets the ALPN protocols that are supported.
123e690d60fSschwarzeThe alpn string is a comma separated list of protocols, in order of preference.
124e690d60fSschwarze.Pp
125e690d60fSschwarze.Fn tls_config_set_ciphers
126e690d60fSschwarzesets the list of ciphers that may be used.
127e690d60fSschwarzeLists of ciphers are specified by name, and the
128e690d60fSschwarzepermitted names are:
129e690d60fSschwarze.Pp
13014dc8396Sschwarze.Bl -item -offset indent -compact
13114dc8396Sschwarze.It
13214dc8396Sschwarze.Dv secure Pq or alias Dv default
13314dc8396Sschwarze.It
13414dc8396Sschwarze.Dv compat
13514dc8396Sschwarze.It
13614dc8396Sschwarze.Dv legacy
13714dc8396Sschwarze.It
13814dc8396Sschwarze.Dv insecure Pq or alias Dv all
139e690d60fSschwarze.El
140e690d60fSschwarze.Pp
141e690d60fSschwarzeAlternatively, libssl cipher strings can be specified.
142e690d60fSschwarzeSee the CIPHERS section of
143e690d60fSschwarze.Xr openssl 1
144e690d60fSschwarzefor further information.
145e8bac763Sjsing.Pp
146e8bac763Sjsing.Fn tls_config_set_dheparams
147e8bac763Sjsingspecifies the parameters that will be used during Diffie-Hellman Ephemeral
148e8bac763Sjsing(DHE) key exchange.
1494a699ee4SknPossible values are:
1504a699ee4Skn.Pp
15114dc8396Sschwarze.Bl -item -offset indent -compact
15214dc8396Sschwarze.It
15314dc8396Sschwarze.Dv none
15414dc8396Sschwarze.It
15514dc8396Sschwarze.Dv auto
15614dc8396Sschwarze.It
15714dc8396Sschwarze.Dv legacy
1584a699ee4Skn.El
1594a699ee4Skn.Pp
1604a699ee4SknIn
1614a699ee4Skn.Dv auto
1624a699ee4Sknmode, the key size for the ephemeral key is automatically selected
163e8bac763Sjsingbased on the size of the private key being used for signing.
1644a699ee4SknIn
1654a699ee4Skn.Dv legacy
1664a699ee4Sknmode, 1024 bit ephemeral keys are used.
1674a699ee4SknThe default value is
1684a699ee4Skn.Dv none ,
1694a699ee4Sknwhich disables DHE key exchange.
1704896de1eSjsing.Pp
1714896de1eSjsing.Fn tls_config_set_ecdhecurves
172e8bac763Sjsingspecifies the names of the elliptic curves that may be used during Elliptic
173e8bac763SjsingCurve Diffie-Hellman Ephemeral (ECDHE) key exchange.
1744896de1eSjsingThis is a comma separated list, given in order of preference.
1754896de1eSjsingThe special value of "default" will use the default curves (currently X25519,
176a0786738SjmcP-256 and P-384).
177a0786738SjmcThis function replaces
1784896de1eSjsing.Fn tls_config_set_ecdhecurve ,
1794896de1eSjsingwhich is deprecated.
180e690d60fSschwarze.Pp
181e690d60fSschwarze.Fn tls_config_prefer_ciphers_client
182e690d60fSschwarzeprefers ciphers in the client's cipher list when selecting a cipher suite
183e690d60fSschwarze(server only).
184e690d60fSschwarzeThis is considered to be less secure than preferring the server's list.
185e690d60fSschwarze.Pp
186e690d60fSschwarze.Fn tls_config_prefer_ciphers_server
187e690d60fSschwarzeprefers ciphers in the server's cipher list when selecting a cipher suite
188e690d60fSschwarze(server only).
189e690d60fSschwarzeThis is considered to be more secure than preferring the client's list and is
190e690d60fSschwarzethe default.
191e690d60fSschwarze.Sh RETURN VALUES
192e690d60fSschwarzeThese functions return 0 on success or -1 on error.
193e690d60fSschwarze.Sh SEE ALSO
194e690d60fSschwarze.Xr tls_config_ocsp_require_stapling 3 ,
195e690d60fSschwarze.Xr tls_config_set_session_id 3 ,
196e690d60fSschwarze.Xr tls_config_verify 3 ,
197e690d60fSschwarze.Xr tls_init 3 ,
198e690d60fSschwarze.Xr tls_load_file 3
1998b02f64eSschwarze.Sh HISTORY
2008b02f64eSschwarze.Fn tls_config_set_ciphers
2018b02f64eSschwarzeappeared in
2028b02f64eSschwarze.Ox 5.6
2038b02f64eSschwarzeand got its final name in
2048b02f64eSschwarze.Ox 5.7 .
2058b02f64eSschwarze.Pp
2068b02f64eSschwarze.Fn tls_config_set_protocols ,
2078b02f64eSschwarze.Fn tls_config_parse_protocols ,
2088b02f64eSschwarze.Fn tls_config_set_dheparams ,
2098b02f64eSschwarzeand
2108b02f64eSschwarze.Fn tls_config_set_ecdhecurve
2118b02f64eSschwarzeappeared in
2128b02f64eSschwarze.Ox 5.7 ,
2138b02f64eSschwarze.Fn tls_config_prefer_ciphers_client
2148b02f64eSschwarzeand
2158b02f64eSschwarze.Fn tls_config_prefer_ciphers_server
2168b02f64eSschwarzein
2178b02f64eSschwarze.Ox 5.9 ,
2188b02f64eSschwarzeand
2198b02f64eSschwarze.Fn tls_config_set_alpn
2208b02f64eSschwarzein
2218b02f64eSschwarze.Ox 6.1 .
2228b02f64eSschwarze.Sh AUTHORS
2238b02f64eSschwarze.An Joel Sing Aq Mt jsing@openbsd.org
2248b02f64eSschwarzewith contributions from
2258b02f64eSschwarze.An Ted Unangst Aq Mt tedu@openbsd.org
2268b02f64eSschwarze.Pq Fn tls_config_set_ciphers
2278b02f64eSschwarzeand
2288b02f64eSschwarze.An Reyk Floeter Aq Mt reyk@openbsd.org
2298b02f64eSschwarze.Pq Fn tls_config_set_ecdhecurve
230