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