]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/SSL_CONF_cmd.pod
Don't exclude quite so much in a no-sock build
[thirdparty/openssl.git] / doc / man3 / SSL_CONF_cmd.pod
CommitLineData
3db935a9
DSH
1=pod
2
3=head1 NAME
4
1722496f 5SSL_CONF_cmd_value_type,
3db935a9
DSH
6SSL_CONF_cmd - send configuration command
7
8=head1 SYNOPSIS
9
10 #include <openssl/ssl.h>
11
8b3efb53
RS
12 int SSL_CONF_cmd(SSL_CONF_CTX *ctx, const char *option, const char *value);
13 int SSL_CONF_cmd_value_type(SSL_CONF_CTX *ctx, const char *option);
3db935a9
DSH
14
15=head1 DESCRIPTION
16
8b3efb53 17The function SSL_CONF_cmd() performs configuration operation B<option> with
3db935a9
DSH
18optional parameter B<value> on B<ctx>. Its purpose is to simplify application
19configuration of B<SSL_CTX> or B<SSL> structures by providing a common
13cfb043
DSH
20framework for command line options or configuration files.
21
8b3efb53 22SSL_CONF_cmd_value_type() returns the type of value that B<option> refers to.
ec2f7e56 23
13cfb043
DSH
24=head1 SUPPORTED COMMAND LINE COMMANDS
25
8b3efb53
RS
26Currently supported B<option> names for command lines (i.e. when the
27flag B<SSL_CONF_CMDLINE> is set) are listed below. Note: all B<option> names
4b64e0cb 28are case sensitive. Unless otherwise stated commands can be used by
13cfb043
DSH
29both clients and servers and the B<value> parameter is not used. The default
30prefix for command line commands is B<-> and that is reflected below.
31
32=over 4
33
8b3efb53 34=item B<-bugs>
13cfb043 35
8b3efb53 36Various bug workarounds are set, same as setting B<SSL_OP_ALL>.
13cfb043 37
8b3efb53 38=item B<-no_comp>
13cfb043 39
8b3efb53
RS
40Disables support for SSL/TLS compression, same as setting
41B<SSL_OP_NO_COMPRESSION>.
42As of OpenSSL 1.1.0, compression is off by default.
13cfb043 43
8b3efb53 44=item B<-comp>
322755cc 45
8b3efb53
RS
46Enables support for SSL/TLS compression, same as clearing
47B<SSL_OP_NO_COMPRESSION>.
48This command was introduced in OpenSSL 1.1.0.
49As of OpenSSL 1.1.0, compression is off by default.
13cfb043 50
8b3efb53 51=item B<-no_ticket>
13cfb043 52
8b3efb53 53Disables support for session tickets, same as setting B<SSL_OP_NO_TICKET>.
13cfb043 54
8b3efb53 55=item B<-serverpref>
47f7cf05 56
8b3efb53
RS
57Use server and not client preference order when determining which cipher suite,
58signature algorithm or elliptic curve to use for an incoming connection.
59Equivalent to B<SSL_OP_CIPHER_SERVER_PREFERENCE>. Only used by servers.
47f7cf05 60
8b3efb53 61=item B<-legacyrenegotiation>
dfa1f547 62
8b3efb53
RS
63permits the use of unsafe legacy renegotiation. Equivalent to setting
64B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>.
47f7cf05 65
8b3efb53 66=item B<-no_renegotiation>
47f7cf05 67
8b3efb53
RS
68Disables all attempts at renegotiation in TLSv1.2 and earlier, same as setting
69B<SSL_OP_NO_RENEGOTIATION>.
47f7cf05 70
8b3efb53 71=item B<-no_resumption_on_reneg>
13cfb043 72
8b3efb53 73set SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION flag. Only used by servers.
13cfb043 74
8b3efb53 75=item B<-legacy_server_connect>, B<-no_legacy_server_connect>
13cfb043 76
8b3efb53
RS
77permits or prohibits the use of unsafe legacy renegotiation for OpenSSL
78clients only. Equivalent to setting or clearing B<SSL_OP_LEGACY_SERVER_CONNECT>.
79Set by default.
13cfb043 80
8b3efb53 81=item B<-prioritize_chacha>
13cfb043 82
8b3efb53
RS
83Prioritize ChaCha ciphers when the client has a ChaCha20 cipher at the top of
84its preference list. This usually indicates a client without AES hardware
85acceleration (e.g. mobile) is in use. Equivalent to B<SSL_OP_PRIORITIZE_CHACHA>.
86Only used by servers. Requires B<-serverpref>.
9d2674cd 87
8b3efb53 88=item B<-allow_no_dhe_kex>
9d2674cd 89
8b3efb53
RS
90In TLSv1.3 allow a non-(ec)dhe based key exchange mode on resumption. This means
91that there will be no forward secrecy for the resumed session.
9d2674cd 92
8b3efb53 93=item B<-strict>
ec2f7e56 94
8b3efb53
RS
95enables strict mode protocol handling. Equivalent to setting
96B<SSL_CERT_FLAG_TLS_STRICT>.
ec2f7e56 97
8b3efb53 98=item B<-sigalgs> I<algs>
ec2f7e56 99
8b3efb53
RS
100This sets the supported signature algorithms for TLSv1.2 and TLSv1.3.
101For clients this value is used directly for the supported signature
102algorithms extension. For servers it is used to determine which signature
103algorithms to support.
104
105The B<algs> argument should be a colon separated list of signature
106algorithms in order of decreasing preference of the form B<algorithm+hash>
107or B<signature_scheme>. B<algorithm> is one of B<RSA>, B<DSA> or B<ECDSA> and
108B<hash> is a supported algorithm OID short name such as B<SHA1>, B<SHA224>,
109B<SHA256>, B<SHA384> of B<SHA512>. Note: algorithm and hash names are case
110sensitive. B<signature_scheme> is one of the signature schemes defined in
111TLSv1.3, specified using the IETF name, e.g., B<ecdsa_secp256r1_sha256>,
112B<ed25519>, or B<rsa_pss_pss_sha256>.
ec2f7e56 113
8b3efb53
RS
114If this option is not set then all signature algorithms supported by the
115OpenSSL library are permissible.
c557f921 116
8b3efb53
RS
117Note: algorithms which specify a PKCS#1 v1.5 signature scheme (either by
118using B<RSA> as the B<algorithm> or by using one of the B<rsa_pkcs1_*>
119identifiers) are ignored in TLSv1.3 and will not be negotiated.
c557f921 120
8b3efb53 121=item B<-client_sigalgs> I<algs>
c649d10d 122
8b3efb53
RS
123This sets the supported signature algorithms associated with client
124authentication for TLSv1.2 and TLSv1.3. For servers the B<algs> is used
125in the B<signature_algorithms> field of a B<CertificateRequest> message.
126For clients it is used to determine which signature algorithm to use with
127the client certificate. If a server does not request a certificate this
128option has no effect.
c649d10d 129
8b3efb53
RS
130The syntax of B<algs> is identical to B<-sigalgs>. If not set, then the
131value set for B<-sigalgs> will be used instead.
db0f35dd 132
8b3efb53 133=item B<-groups> I<groups>
db0f35dd 134
8b3efb53
RS
135This sets the supported groups. For clients, the groups are sent using
136the supported groups extension. For servers, it is used to determine which
137group to use. This setting affects groups used for signatures (in TLSv1.2
138and earlier) and key exchange. The first group listed will also be used
139for the B<key_share> sent by a client in a TLSv1.3 B<ClientHello>.
7946ab33 140
8b3efb53
RS
141The B<groups> argument is a colon separated list of groups. The group can
142be either the B<NIST> name (e.g. B<P-256>), some other commonly used name
143where applicable (e.g. B<X25519>, B<ffdhe2048>) or an OpenSSL OID name
144(e.g B<prime256v1>). Group names are case sensitive. The list should be
145in order of preference with the most preferred group first.
7946ab33 146
8b3efb53
RS
147Currently supported groups for B<TLSv1.3> are B<P-256>, B<P-384>, B<P-521>,
148B<X25519>, B<X448>, B<ffdhe2048>, B<ffdhe3072>, B<ffdhe4096>, B<ffdhe6144>,
149B<ffdhe8192>.
13cfb043 150
8b3efb53 151=item B<-curves> I<groups>
13cfb043 152
8b3efb53 153This is a synonym for the B<-groups> command.
13cfb043 154
8b3efb53 155=item B<-named_curve> I<curve>
13cfb043 156
8b3efb53
RS
157This sets the temporary curve used for ephemeral ECDH modes. Only used
158by servers.
13cfb043 159
8b3efb53
RS
160The B<groups> argument is a curve name or the special value B<auto> which
161picks an appropriate curve based on client and server preferences. The
162curve can be either the B<NIST> name (e.g. B<P-256>) or an OpenSSL OID name
163(e.g B<prime256v1>). Curve names are case sensitive.
cc5a9ba4 164
8b3efb53 165=item B<-cipher> I<ciphers>
cc5a9ba4 166
8b3efb53
RS
167Sets the TLSv1.2 and below ciphersuite list to B<ciphers>. This list will be
168combined with any configured TLSv1.3 ciphersuites. Note: syntax checking
169of B<ciphers> is currently not performed unless a B<SSL> or B<SSL_CTX>
170structure is associated with B<ctx>.
13cfb043 171
8b3efb53 172=item B<-ciphersuites> I<1.3ciphers>
13cfb043 173
8b3efb53
RS
174Sets the available ciphersuites for TLSv1.3 to value. This is a
175colon-separated list of TLSv1.3 ciphersuite names in order of preference. This
176list will be combined any configured TLSv1.2 and below ciphersuites.
177See L<openssl-ciphers(1)> for more information.
13cfb043 178
8b3efb53 179=item B<-min_protocol> I<minprot>, B<-max_protocol> I<maxprot>
13cfb043 180
8b3efb53
RS
181Sets the minimum and maximum supported protocol. Currently supported
182protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>, B<TLSv1.2>, B<TLSv1.3>
183for TLS and B<DTLSv1>, B<DTLSv1.2> for DTLS, and B<None> for no limit.
184If either bound is not specified then only the other bound applies,
185if specified. To restrict the supported protocol versions use these
186commands rather than the deprecated alternative commands below.
13cfb043 187
8b3efb53 188=item B<-record_padding> I<padding>
e1c7871d 189
8b3efb53
RS
190Attempts to pad TLSv1.3 records so that they are a multiple of B<padding>
191in length on send. A B<padding> of 0 or 1 turns off padding. Otherwise,
192the B<padding> must be >1 or <=16384.
e1c7871d 193
8b3efb53 194=item B<-debug_broken_protocol>
f0ef019d 195
03e16083
RS
196Ignored.
197
8b3efb53 198=item B<-no_middlebox>
f0ef019d 199
03e16083
RS
200Turn off "middlebox compatibility", as described below.
201
8b3efb53 202=back
13cfb043 203
8b3efb53 204=head2 Additional Options
13cfb043 205
8b3efb53
RS
206The following options are accepted by SSL_CONF_cmd(), but are not
207processed by the OpenSSL commands.
13cfb043 208
8b3efb53 209=over 4
13cfb043 210
8b3efb53 211=item B<-cert> I<file>
4e2bd9cb 212
8b3efb53
RS
213Attempts to use B<file> as the certificate for the appropriate context. It
214currently uses SSL_CTX_use_certificate_chain_file() if an B<SSL_CTX>
215structure is set or SSL_use_certificate_file() with filetype PEM if an
216B<SSL> structure is set. This option is only supported if certificate
217operations are permitted.
4e2bd9cb 218
8b3efb53 219=item B<-key> I<file>
13cfb043 220
8b3efb53
RS
221Attempts to use B<file> as the private key for the appropriate context. This
222option is only supported if certificate operations are permitted. Note:
223if no B<-key> option is set then a private key is not loaded unless the
224flag B<SSL_CONF_FLAG_REQUIRE_PRIVATE> is set.
225
226=item B<-dhparam> I<file>
227
228Attempts to use B<file> as the set of temporary DH parameters for
229the appropriate context. This option is only supported if certificate
230operations are permitted.
231
232=item B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>, B<-no_tls1_3>
233
234Disables protocol support for SSLv3, TLSv1.0, TLSv1.1, TLSv1.2 or TLSv1.3 by
235setting the corresponding options B<SSL_OP_NO_SSLv3>, B<SSL_OP_NO_TLSv1>,
236B<SSL_OP_NO_TLSv1_1>, B<SSL_OP_NO_TLSv1_2> and B<SSL_OP_NO_TLSv1_3>
237respectively. These options are deprecated, use B<-min_protocol> and
238B<-max_protocol> instead.
13cfb043 239
3bb5e5b0
MC
240=item B<-anti_replay>, B<-no_anti_replay>
241
242Switches replay protection, on or off respectively. With replay protection on,
243OpenSSL will automatically detect if a session ticket has been used more than
244once, TLSv1.3 has been negotiated, and early data is enabled on the server. A
245full handshake is forced if a session ticket is used a second or subsequent
246time. Anti-Replay is on by default unless overridden by a configuration file and
247is only used by servers. Anti-replay measures are required for compliance with
248the TLSv1.3 specification. Some applications may be able to mitigate the replay
249risks in other ways and in such cases the built-in OpenSSL functionality is not
250required. Switching off anti-replay is equivalent to B<SSL_OP_NO_ANTI_REPLAY>.
251
13cfb043 252=back
3db935a9
DSH
253
254=head1 SUPPORTED CONFIGURATION FILE COMMANDS
255
8b3efb53 256Currently supported B<option> names for configuration files (i.e., when the
3db935a9 257flag B<SSL_CONF_FLAG_FILE> is set) are listed below. All configuration file
8b3efb53 258B<option> names are case insensitive so B<signaturealgorithms> is recognised
c7b7984a 259as well as B<SignatureAlgorithms>. Unless otherwise stated the B<value> names
3db935a9
DSH
260are also case insensitive.
261
8b3efb53 262Note: the command prefix (if set) alters the recognised B<option> values.
3db935a9
DSH
263
264=over 4
265
65f2a565 266=item B<CipherString>
3db935a9 267
9d2674cd
MC
268Sets the ciphersuite list for TLSv1.2 and below to B<value>. This list will be
269combined with any configured TLSv1.3 ciphersuites. Note: syntax
270checking of B<value> is currently not performed unless an B<SSL> or B<SSL_CTX>
8b3efb53 271structure is associated with B<ctx>.
9d2674cd
MC
272
273=item B<Ciphersuites>
274
8b3efb53
RS
275Sets the available ciphersuites for TLSv1.3 to B<value>. This is a
276colon-separated list of TLSv1.3 ciphersuite names in order of preference. This
9d2674cd 277list will be combined any configured TLSv1.2 and below ciphersuites.
1903a9b7 278See L<openssl-ciphers(1)> for more information.
3db935a9 279
ec2f7e56
DSH
280=item B<Certificate>
281
282Attempts to use the file B<value> as the certificate for the appropriate
fc1d88f0
RS
283context. It currently uses SSL_CTX_use_certificate_chain_file() if an B<SSL_CTX>
284structure is set or SSL_use_certificate_file() with filetype PEM if an B<SSL>
ec2f7e56
DSH
285structure is set. This option is only supported if certificate operations
286are permitted.
287
288=item B<PrivateKey>
289
290Attempts to use the file B<value> as the private key for the appropriate
291context. This option is only supported if certificate operations
2011b169
DSH
292are permitted. Note: if no B<PrivateKey> option is set then a private key is
293not loaded unless the B<SSL_CONF_FLAG_REQUIRE_PRIVATE> is set.
ec2f7e56 294
429261d0
DSH
295=item B<ChainCAFile>, B<ChainCAPath>, B<VerifyCAFile>, B<VerifyCAPath>
296
297These options indicate a file or directory used for building certificate
298chains or verifying certificate chains. These options are only supported
299if certificate operations are permitted.
300
5a185729
DSH
301=item B<RequestCAFile>
302
303This option indicates a file containing a set of certificates in PEM form.
304The subject names of the certificates are sent to the peer in the
305B<certificate_authorities> extension for TLS 1.3 (in ClientHello or
306CertificateRequest) or in a certificate request for previous versions or
307TLS.
308
5b7f36e8
DSH
309=item B<ServerInfoFile>
310
311Attempts to use the file B<value> in the "serverinfo" extension using the
312function SSL_CTX_use_serverinfo_file.
313
c557f921
DSH
314=item B<DHParameters>
315
316Attempts to use the file B<value> as the set of temporary DH parameters for
317the appropriate context. This option is only supported if certificate
318operations are permitted.
319
c649d10d
TS
320=item B<RecordPadding>
321
322755cc 322Attempts to pad TLSv1.3 records so that they are a multiple of B<value> in
c649d10d
TS
323length on send. A B<value> of 0 or 1 turns off padding. Otherwise, the
324B<value> must be >1 or <=16384.
325
3db935a9
DSH
326=item B<SignatureAlgorithms>
327
322755cc
HK
328This sets the supported signature algorithms for TLSv1.2 and TLSv1.3.
329For clients this
3db935a9
DSH
330value is used directly for the supported signature algorithms extension. For
331servers it is used to determine which signature algorithms to support.
332
333The B<value> argument should be a colon separated list of signature algorithms
322755cc
HK
334in order of decreasing preference of the form B<algorithm+hash> or
335B<signature_scheme>. B<algorithm>
3db935a9
DSH
336is one of B<RSA>, B<DSA> or B<ECDSA> and B<hash> is a supported algorithm
337OID short name such as B<SHA1>, B<SHA224>, B<SHA256>, B<SHA384> of B<SHA512>.
338Note: algorithm and hash names are case sensitive.
322755cc
HK
339B<signature_scheme> is one of the signature schemes defined in TLSv1.3,
340specified using the IETF name, e.g., B<ecdsa_secp256r1_sha256>, B<ed25519>,
341or B<rsa_pss_pss_sha256>.
3db935a9
DSH
342
343If this option is not set then all signature algorithms supported by the
344OpenSSL library are permissible.
345
322755cc
HK
346Note: algorithms which specify a PKCS#1 v1.5 signature scheme (either by
347using B<RSA> as the B<algorithm> or by using one of the B<rsa_pkcs1_*>
348identifiers) are ignored in TLSv1.3 and will not be negotiated.
349
3db935a9
DSH
350=item B<ClientSignatureAlgorithms>
351
352This sets the supported signature algorithms associated with client
322755cc
HK
353authentication for TLSv1.2 and TLSv1.3.
354For servers the value is used in the
355B<signature_algorithms> field of a B<CertificateRequest> message.
356For clients it is
357used to determine which signature algorithm to use with the client certificate.
358If a server does not request a certificate this option has no effect.
3db935a9
DSH
359
360The syntax of B<value> is identical to B<SignatureAlgorithms>. If not set then
361the value set for B<SignatureAlgorithms> will be used instead.
362
47f7cf05 363=item B<Groups>
3db935a9 364
47f7cf05
MC
365This sets the supported groups. For clients, the groups are
366sent using the supported groups extension. For servers, it is used
322755cc
HK
367to determine which group to use. This setting affects groups used for
368signatures (in TLSv1.2 and earlier) and key exchange. The first group listed
369will also be used for the B<key_share> sent by a client in a TLSv1.3
370B<ClientHello>.
3db935a9 371
47f7cf05
MC
372The B<value> argument is a colon separated list of groups. The group can be
373either the B<NIST> name (e.g. B<P-256>), some other commonly used name where
dfa1f547 374applicable (e.g. B<X25519>, B<ffdhe2048>) or an OpenSSL OID name
375(e.g B<prime256v1>). Group names are case sensitive. The list should be in
376order of preference with the most preferred group first.
377
378Currently supported groups for B<TLSv1.3> are B<P-256>, B<P-384>, B<P-521>,
379B<X25519>, B<X448>, B<ffdhe2048>, B<ffdhe3072>, B<ffdhe4096>, B<ffdhe6144>,
380B<ffdhe8192>.
47f7cf05
MC
381
382=item B<Curves>
383
384This is a synonym for the "Groups" command.
3db935a9 385
7946ab33
KR
386=item B<MinProtocol>
387
388This sets the minimum supported SSL, TLS or DTLS version.
389
57ce7b61 390Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>,
322755cc 391B<TLSv1.2>, B<TLSv1.3>, B<DTLSv1> and B<DTLSv1.2>.
869e978c 392The value B<None> will disable the limit.
7946ab33
KR
393
394=item B<MaxProtocol>
395
396This sets the maximum supported SSL, TLS or DTLS version.
397
57ce7b61 398Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>,
322755cc 399B<TLSv1.2>, B<TLSv1.3>, B<DTLSv1> and B<DTLSv1.2>.
869e978c 400The value B<None> will disable the limit.
7946ab33 401
3db935a9
DSH
402=item B<Protocol>
403
57ce7b61
VD
404This can be used to enable or disable certain versions of the SSL,
405TLS or DTLS protocol.
7946ab33 406
57ce7b61
VD
407The B<value> argument is a comma separated list of supported protocols
408to enable or disable.
7946ab33
KR
409If a protocol is preceded by B<-> that version is disabled.
410
411All protocol versions are enabled by default.
57ce7b61
VD
412You need to disable at least one protocol version for this setting have any
413effect.
414Only enabling some protocol versions does not disable the other protocol
415versions.
7946ab33 416
57ce7b61 417Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>,
322755cc 418B<TLSv1.2>, B<TLSv1.3>, B<DTLSv1> and B<DTLSv1.2>.
7946ab33 419The special value B<ALL> refers to all supported versions.
3db935a9 420
57ce7b61
VD
421This can't enable protocols that are disabled using B<MinProtocol>
422or B<MaxProtocol>, but can disable protocols that are still allowed
423by them.
7946ab33
KR
424
425The B<Protocol> command is fragile and deprecated; do not use it.
426Use B<MinProtocol> and B<MaxProtocol> instead.
57ce7b61
VD
427If you do use B<Protocol>, make sure that the resulting range of enabled
428protocols has no "holes", e.g. if TLS 1.0 and TLS 1.2 are both enabled, make
429sure to also leave TLS 1.1 enabled.
3db935a9
DSH
430
431=item B<Options>
432
433The B<value> argument is a comma separated list of various flags to set.
8106cb8b
VD
434If a flag string is preceded B<-> it is disabled.
435See the L<SSL_CTX_set_options(3)> function for more details of
436individual options.
3db935a9
DSH
437
438Each option is listed below. Where an operation is enabled by default
439the B<-flag> syntax is needed to disable it.
440
441B<SessionTicket>: session ticket support, enabled by default. Inverse of
442B<SSL_OP_NO_TICKET>: that is B<-SessionTicket> is the same as setting
443B<SSL_OP_NO_TICKET>.
444
445B<Compression>: SSL/TLS compression support, enabled by default. Inverse
446of B<SSL_OP_NO_COMPRESSION>.
447
448B<EmptyFragments>: use empty fragments as a countermeasure against a
449SSL 3.0/TLS 1.0 protocol vulnerability affecting CBC ciphers. It
450is set by default. Inverse of B<SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS>.
451
c7b7984a 452B<Bugs>: enable various bug workarounds. Same as B<SSL_OP_ALL>.
3db935a9 453
c7b7984a 454B<DHSingle>: enable single use DH keys, set by default. Inverse of
3db935a9
DSH
455B<SSL_OP_DH_SINGLE>. Only used by servers.
456
e1c7871d 457B<ECDHSingle>: enable single use ECDH keys, set by default. Inverse of
3db935a9
DSH
458B<SSL_OP_ECDH_SINGLE>. Only used by servers.
459
e1c7871d 460B<ServerPreference>: use server and not client preference order when
3db935a9
DSH
461determining which cipher suite, signature algorithm or elliptic curve
462to use for an incoming connection. Equivalent to
463B<SSL_OP_CIPHER_SERVER_PREFERENCE>. Only used by servers.
464
e1c7871d
TS
465B<PrioritizeChaCha>: prioritizes ChaCha ciphers when the client has a
466ChaCha20 cipher at the top of its preference list. This usually indicates
467a mobile client is in use. Equivalent to B<SSL_OP_PRIORITIZE_CHACHA>.
468Only used by servers.
469
470B<NoResumptionOnRenegotiation>: set
f0ef019d
DSH
471B<SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION> flag. Only used by servers.
472
4ac5e43d
HK
473B<NoRenegotiation>: disables all attempts at renegotiation in TLSv1.2 and
474earlier, same as setting B<SSL_OP_NO_RENEGOTIATION>.
475
e1c7871d 476B<UnsafeLegacyRenegotiation>: permits the use of unsafe legacy renegotiation.
3db935a9
DSH
477Equivalent to B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>.
478
e1c7871d 479B<UnsafeLegacyServerConnect>: permits the use of unsafe legacy renegotiation
3db935a9
DSH
480for OpenSSL clients only. Equivalent to B<SSL_OP_LEGACY_SERVER_CONNECT>.
481Set by default.
482
b3618f44
EK
483B<EncryptThenMac>: use encrypt-then-mac extension, enabled by
484default. Inverse of B<SSL_OP_NO_ENCRYPT_THEN_MAC>: that is,
485B<-EncryptThenMac> is the same as setting B<SSL_OP_NO_ENCRYPT_THEN_MAC>.
4e2bd9cb
MC
486
487B<AllowNoDHEKEX>: In TLSv1.3 allow a non-(ec)dhe based key exchange mode on
488resumption. This means that there will be no forward secrecy for the resumed
489session. Equivalent to B<SSL_OP_ALLOW_NO_DHE_KEX>.
b3618f44 490
1c4b1545
MC
491B<MiddleboxCompat>: If set then dummy Change Cipher Spec (CCS) messages are sent
492in TLSv1.3. This has the effect of making TLSv1.3 look more like TLSv1.2 so that
493middleboxes that do not understand TLSv1.3 will not drop the connection. This
494option is set by default. A future version of OpenSSL may not set this by
495default. Equivalent to B<SSL_OP_ENABLE_MIDDLEBOX_COMPAT>.
496
3bb5e5b0
MC
497B<AntiReplay>: If set then OpenSSL will automatically detect if a session ticket
498has been used more than once, TLSv1.3 has been negotiated, and early data is
499enabled on the server. A full handshake is forced if a session ticket is used a
500second or subsequent time. This option is set by default and is only used by
501servers. Anti-replay measures are required to comply with the TLSv1.3
502specification. Some applications may be able to mitigate the replay risks in
503other ways and in such cases the built-in OpenSSL functionality is not required.
504Disabling anti-replay is equivalent to setting B<SSL_OP_NO_ANTI_REPLAY>.
505
088dfa13
TS
506B<ExtendedMasterSecret>: use extended master secret extension, enabled by
507default. Inverse of B<SSL_OP_NO_EXTENDED_MASTER_SECRET>: that is,
508B<-ExtendedMasterSecret> is the same as setting B<SSL_OP_NO_EXTENDED_MASTER_SECRET>.
509
429261d0
DSH
510=item B<VerifyMode>
511
512The B<value> argument is a comma separated list of flags to set.
513
514B<Peer> enables peer verification: for clients only.
515
516B<Request> requests but does not require a certificate from the client.
517Servers only.
518
519B<Require> requests and requires a certificate from the client: an error
520occurs if the client does not present a certificate. Servers only.
521
522B<Once> requests a certificate from a client only on the initial connection:
523not when renegotiating. Servers only.
524
9d75dce3
TS
525B<RequestPostHandshake> configures the connection to support requests but does
526not require a certificate from the client post-handshake. A certificate will
527not be requested during the initial handshake. The server application must
528provide a mechanism to request a certificate post-handshake. Servers only.
529TLSv1.3 only.
530
531B<RequiresPostHandshake> configures the connection to support requests and
532requires a certificate from the client post-handshake: an error occurs if the
533client does not present a certificate. A certificate will not be requested
534during the initial handshake. The server application must provide a mechanism
535to request a certificate post-handshake. Servers only. TLSv1.3 only.
536
429261d0
DSH
537=item B<ClientCAFile>, B<ClientCAPath>
538
539A file or directory of certificates in PEM format whose names are used as the
540set of acceptable names for client CAs. Servers only. This option is only
541supported if certificate operations are permitted.
542
3db935a9
DSH
543=back
544
ec2f7e56
DSH
545=head1 SUPPORTED COMMAND TYPES
546
547The function SSL_CONF_cmd_value_type() currently returns one of the following
548types:
549
550=over 4
551
552=item B<SSL_CONF_TYPE_UNKNOWN>
553
8b3efb53 554The B<option> string is unrecognised, this return value can be use to flag
ec2f7e56
DSH
555syntax errors.
556
557=item B<SSL_CONF_TYPE_STRING>
558
559The value is a string without any specific structure.
560
561=item B<SSL_CONF_TYPE_FILE>
562
9c0586d5 563The value is a filename.
ec2f7e56
DSH
564
565=item B<SSL_CONF_TYPE_DIR>
566
567The value is a directory name.
568
656b2605
DSH
569=item B<SSL_CONF_TYPE_NONE>
570
571The value string is not used e.g. a command line option which doesn't take an
572argument.
573
fa9d77dc
CR
574=back
575
3db935a9
DSH
576=head1 NOTES
577
578The order of operations is significant. This can be used to set either defaults
579or values which cannot be overridden. For example if an application calls:
580
87d9cafa 581 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
3db935a9
DSH
582 SSL_CONF_cmd(ctx, userparam, uservalue);
583
87d9cafa 584it will disable SSLv3 support by default but the user can override it. If
3db935a9
DSH
585however the call sequence is:
586
587 SSL_CONF_cmd(ctx, userparam, uservalue);
87d9cafa 588 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
3db935a9 589
87d9cafa 590SSLv3 is B<always> disabled and attempt to override this by the user are
3db935a9
DSH
591ignored.
592
f5f85f75 593By checking the return code of SSL_CONF_cmd() it is possible to query if a
8b3efb53 594given B<option> is recognised, this is useful if SSL_CONF_cmd() values are
3db935a9
DSH
595mixed with additional application specific operations.
596
f5f85f75 597For example an application might call SSL_CONF_cmd() and if it returns
3db935a9
DSH
598-2 (unrecognised command) continue with processing of application specific
599commands.
600
f5f85f75
JS
601Applications can also use SSL_CONF_cmd() to process command lines though the
602utility function SSL_CONF_cmd_argv() is normally used instead. One way
821244cf 603to do this is to set the prefix to an appropriate value using
8b3efb53 604SSL_CONF_CTX_set1_prefix(), pass the current argument to B<option> and the
821244cf 605following argument to B<value> (which may be NULL).
3db935a9
DSH
606
607In this case if the return value is positive then it is used to skip that
f5f85f75 608number of arguments as they have been processed by SSL_CONF_cmd(). If -2 is
8b3efb53 609returned then B<option> is not recognised and application specific arguments
3db935a9
DSH
610can be checked instead. If -3 is returned a required argument is missing
611and an error is indicated. If 0 is returned some other error occurred and
612this can be reported back to the user.
613
7946ab33 614The function SSL_CONF_cmd_value_type() can be used by applications to
ec2f7e56
DSH
615check for the existence of a command or to perform additional syntax
616checking or translation of the command value. For example if the return
617value is B<SSL_CONF_TYPE_FILE> an application could translate a relative
618pathname to an absolute pathname.
619
4564e77a
PY
620=head1 RETURN VALUES
621
8b3efb53
RS
622SSL_CONF_cmd() returns 1 if the value of B<option> is recognised and B<value> is
623B<NOT> used and 2 if both B<option> and B<value> are used. In other words it
4564e77a
PY
624returns the number of arguments processed. This is useful when processing
625command lines.
626
8b3efb53 627A return value of -2 means B<option> is not recognised.
4564e77a 628
8b3efb53 629A return value of -3 means B<option> is recognised and the command requires a
4564e77a
PY
630value but B<value> is NULL.
631
8b3efb53 632A return code of 0 indicates that both B<option> and B<value> are valid but an
4564e77a
PY
633error occurred attempting to perform the operation: for example due to an
634error in the syntax of B<value> in this case the error queue may provide
635additional information.
636
3db935a9
DSH
637=head1 EXAMPLES
638
639Set supported signature algorithms:
640
641 SSL_CONF_cmd(ctx, "SignatureAlgorithms", "ECDSA+SHA256:RSA+SHA256:DSA+SHA256");
642
24c2cd39 643There are various ways to select the supported protocols.
7946ab33
KR
644
645This set the minimum protocol version to TLSv1, and so disables SSLv3.
646This is the recommended way to disable protocols.
647
648 SSL_CONF_cmd(ctx, "MinProtocol", "TLSv1");
649
650The following also disables SSLv3:
651
652 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
653
57ce7b61
VD
654The following will first enable all protocols, and then disable
655SSLv3.
656If no protocol versions were disabled before this has the same effect as
657"-SSLv3", but if some versions were disables this will re-enable them before
658disabling SSLv3.
3db935a9 659
87d9cafa 660 SSL_CONF_cmd(ctx, "Protocol", "ALL,-SSLv3");
3db935a9
DSH
661
662Only enable TLSv1.2:
663
7946ab33
KR
664 SSL_CONF_cmd(ctx, "MinProtocol", "TLSv1.2");
665 SSL_CONF_cmd(ctx, "MaxProtocol", "TLSv1.2");
666
667This also only enables TLSv1.2:
668
3db935a9
DSH
669 SSL_CONF_cmd(ctx, "Protocol", "-ALL,TLSv1.2");
670
671Disable TLS session tickets:
672
673 SSL_CONF_cmd(ctx, "Options", "-SessionTicket");
674
dc5744cb
EK
675Enable compression:
676
677 SSL_CONF_cmd(ctx, "Options", "Compression");
678
3db935a9
DSH
679Set supported curves to P-256, P-384:
680
681 SSL_CONF_cmd(ctx, "Curves", "P-256:P-384");
682
3db935a9
DSH
683=head1 SEE ALSO
684
98ca37e4 685L<ssl(7)>,
9b86974e
RS
686L<SSL_CONF_CTX_new(3)>,
687L<SSL_CONF_CTX_set_flags(3)>,
688L<SSL_CONF_CTX_set1_prefix(3)>,
689L<SSL_CONF_CTX_set_ssl_ctx(3)>,
8106cb8b
VD
690L<SSL_CONF_cmd_argv(3)>,
691L<SSL_CTX_set_options(3)>
3db935a9
DSH
692
693=head1 HISTORY
694
fc5ecadd 695The SSL_CONF_cmd() function was added in OpenSSL 1.0.2.
3db935a9 696
fc5ecadd
DMSP
697The B<SSL_OP_NO_SSL2> option doesn't have effect since 1.1.0, but the macro
698is retained for backwards compatibility.
45f55f6a 699
fc5ecadd 700The B<SSL_CONF_TYPE_NONE> was added in OpenSSL 1.1.0. In earlier versions of
656b2605
DSH
701OpenSSL passing a command which didn't take an argument would return
702B<SSL_CONF_TYPE_UNKNOWN>.
703
7946ab33
KR
704B<MinProtocol> and B<MaxProtocol> where added in OpenSSL 1.1.0.
705
e1c7871d
TS
706B<AllowNoDHEKEX> and B<PrioritizeChaCha> were added in OpenSSL 1.1.1.
707
e2f92610
RS
708=head1 COPYRIGHT
709
6738bf14 710Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 711
4746f25a 712Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
713this file except in compliance with the License. You can obtain a copy
714in the file LICENSE in the source distribution or at
715L<https://www.openssl.org/source/license.html>.
716
717=cut