5 SSL_CONF_cmd_value_type,
6 SSL_CONF_cmd - send configuration command
10 #include <openssl/ssl.h>
12 int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
13 int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);
17 The function SSL_CONF_cmd() performs configuration operation B<cmd> with
18 optional parameter B<value> on B<ctx>. Its purpose is to simplify application
19 configuration of B<SSL_CTX> or B<SSL> structures by providing a common
20 framework for command line options or configuration files.
22 SSL_CONF_cmd_value_type() returns the type of value that B<cmd> refers to.
24 =head1 SUPPORTED COMMAND LINE COMMANDS
26 Currently supported B<cmd> names for command lines (i.e. when the
27 flag B<SSL_CONF_CMDLINE> is set) are listed below. Note: all B<cmd> names
28 are case sensitive. Unless otherwise stated commands can be used by
29 both clients and servers and the B<value> parameter is not used. The default
30 prefix for command line commands is B<-> and that is reflected below.
36 This sets the supported signature algorithms for TLSv1.2 and TLSv1.3.
38 value is used directly for the supported signature algorithms extension. For
39 servers it is used to determine which signature algorithms to support.
41 The B<value> argument should be a colon separated list of signature algorithms
42 in order of decreasing preference of the form B<algorithm+hash> or
43 B<signature_scheme>. B<algorithm>
44 is one of B<RSA>, B<DSA> or B<ECDSA> and B<hash> is a supported algorithm
45 OID short name such as B<SHA1>, B<SHA224>, B<SHA256>, B<SHA384> of B<SHA512>.
46 Note: algorithm and hash names are case sensitive.
47 B<signature_scheme> is one of the signature schemes defined in TLSv1.3,
48 specified using the IETF name, e.g., B<ecdsa_secp256r1_sha256>, B<ed25519>,
49 or B<rsa_pss_pss_sha256>.
51 If this option is not set then all signature algorithms supported by the
52 OpenSSL library are permissible.
54 Note: algorithms which specify a PKCS#1 v1.5 signature scheme (either by
55 using B<RSA> as the B<algorithm> or by using one of the B<rsa_pkcs1_*>
56 identifiers) are ignored in TLSv1.3 and will not be negotiated.
58 =item B<-client_sigalgs>
60 This sets the supported signature algorithms associated with client
61 authentication for TLSv1.2 and TLSv1.3.
62 For servers the value is used in the
63 B<signature_algorithms> field of a B<CertificateRequest> message.
65 used to determine which signature algorithm to use with the client certificate.
66 If a server does not request a certificate this option has no effect.
68 The syntax of B<value> is identical to B<-sigalgs>. If not set then
69 the value set for B<-sigalgs> will be used instead.
73 This sets the supported groups. For clients, the groups are
74 sent using the supported groups extension. For servers, it is used
75 to determine which group to use. This setting affects groups used for
76 signatures (in TLSv1.2 and earlier) and key exchange. The first group listed
77 will also be used for the B<key_share> sent by a client in a TLSv1.3
80 The B<value> argument is a colon separated list of groups. The group can be
81 either the B<NIST> name (e.g. B<P-256>), some other commonly used name where
82 applicable (e.g. B<X25519>, B<ffdhe2048>) or an OpenSSL OID name
83 (e.g B<prime256v1>). Group names are case sensitive. The list should be in
84 order of preference with the most preferred group first.
86 Currently supported groups for B<TLSv1.3> are B<P-256>, B<P-384>, B<P-521>,
87 B<X25519>, B<X448>, B<ffdhe2048>, B<ffdhe3072>, B<ffdhe4096>, B<ffdhe6144>,
92 This is a synonym for the "-groups" command.
96 This sets the temporary curve used for ephemeral ECDH modes. Only used by
99 The B<value> argument is a curve name or the special value B<auto> which
100 picks an appropriate curve based on client and server preferences. The curve
101 can be either the B<NIST> name (e.g. B<P-256>) or an OpenSSL OID name
102 (e.g B<prime256v1>). Curve names are case sensitive.
106 Sets the TLSv1.2 and below ciphersuite list to B<value>. This list will be
107 combined with any configured TLSv1.3 ciphersuites. Note: syntax checking
108 of B<value> is currently not performed unless a B<SSL> or B<SSL_CTX> structure is
109 associated with B<cctx>.
111 =item B<-ciphersuites>
113 Sets the available ciphersuites for TLSv1.3 to value. This is a simple colon
114 (":") separated list of TLSv1.3 ciphersuite names in order of preference. This
115 list will be combined any configured TLSv1.2 and below ciphersuites.
116 See L<ciphers(1)> for more information.
121 Attempts to use the file B<value> as the certificate for the appropriate
122 context. It currently uses SSL_CTX_use_certificate_chain_file() if an B<SSL_CTX>
123 structure is set or SSL_use_certificate_file() with filetype PEM if an B<SSL>
124 structure is set. This option is only supported if certificate operations
129 Attempts to use the file B<value> as the private key for the appropriate
130 context. This option is only supported if certificate operations
131 are permitted. Note: if no B<-key> option is set then a private key is
132 not loaded unless the flag B<SSL_CONF_FLAG_REQUIRE_PRIVATE> is set.
136 Attempts to use the file B<value> as the set of temporary DH parameters for
137 the appropriate context. This option is only supported if certificate
138 operations are permitted.
140 =item B<-record_padding>
142 Attempts to pad TLSv1.3 records so that they are a multiple of B<value> in
143 length on send. A B<value> of 0 or 1 turns off padding. Otherwise, the
144 B<value> must be >1 or <=16384.
146 =item B<-no_renegotiation>
148 Disables all attempts at renegotiation in TLSv1.2 and earlier, same as setting
149 B<SSL_OP_NO_RENEGOTIATION>.
151 =item B<-min_protocol>, B<-max_protocol>
153 Sets the minimum and maximum supported protocol.
154 Currently supported protocol values are B<SSLv3>, B<TLSv1>,
155 B<TLSv1.1>, B<TLSv1.2>, B<TLSv1.3> for TLS and B<DTLSv1>, B<DTLSv1.2> for DTLS,
156 and B<None> for no limit.
157 If either bound is not specified then only the other bound applies,
159 To restrict the supported protocol versions use these commands rather
160 than the deprecated alternative commands below.
162 =item B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>, B<-no_tls1_3>
164 Disables protocol support for SSLv3, TLSv1.0, TLSv1.1, TLSv1.2 or TLSv1.3 by
165 setting the corresponding options B<SSL_OP_NO_SSLv3>, B<SSL_OP_NO_TLSv1>,
166 B<SSL_OP_NO_TLSv1_1>, B<SSL_OP_NO_TLSv1_2> and B<SSL_OP_NO_TLSv1_3>
167 respectively. These options are deprecated, instead use B<-min_protocol> and
172 Various bug workarounds are set, same as setting B<SSL_OP_ALL>.
176 Enables support for SSL/TLS compression, same as clearing
177 B<SSL_OP_NO_COMPRESSION>.
178 This command was introduced in OpenSSL 1.1.0.
179 As of OpenSSL 1.1.0, compression is off by default.
183 Disables support for SSL/TLS compression, same as setting
184 B<SSL_OP_NO_COMPRESSION>.
185 As of OpenSSL 1.1.0, compression is off by default.
189 Disables support for session tickets, same as setting B<SSL_OP_NO_TICKET>.
193 Use server and not client preference order when determining which cipher suite,
194 signature algorithm or elliptic curve to use for an incoming connection.
195 Equivalent to B<SSL_OP_CIPHER_SERVER_PREFERENCE>. Only used by servers.
197 =item B<-prioritize_chacha>
199 Prioritize ChaCha ciphers when the client has a ChaCha20 cipher at the top of
200 its preference list. This usually indicates a client without AES hardware
201 acceleration (e.g. mobile) is in use. Equivalent to B<SSL_OP_PRIORITIZE_CHACHA>.
202 Only used by servers. Requires B<-serverpref>.
204 =item B<-no_resumption_on_reneg>
206 set SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION flag. Only used by servers.
208 =item B<-legacyrenegotiation>
210 permits the use of unsafe legacy renegotiation. Equivalent to setting
211 B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>.
213 =item B<-legacy_server_connect>, B<-no_legacy_server_connect>
215 permits or prohibits the use of unsafe legacy renegotiation for OpenSSL
216 clients only. Equivalent to setting or clearing B<SSL_OP_LEGACY_SERVER_CONNECT>.
219 =item B<-allow_no_dhe_kex>
221 In TLSv1.3 allow a non-(ec)dhe based key exchange mode on resumption. This means
222 that there will be no forward secrecy for the resumed session.
226 enables strict mode protocol handling. Equivalent to setting
227 B<SSL_CERT_FLAG_TLS_STRICT>.
229 =item B<-anti_replay>, B<-no_anti_replay>
231 Switches replay protection, on or off respectively. With replay protection on,
232 OpenSSL will automatically detect if a session ticket has been used more than
233 once, TLSv1.3 has been negotiated, and early data is enabled on the server. A
234 full handshake is forced if a session ticket is used a second or subsequent
235 time. Anti-Replay is on by default unless overridden by a configuration file and
236 is only used by servers. Anti-replay measures are required for compliance with
237 the TLSv1.3 specification. Some applications may be able to mitigate the replay
238 risks in other ways and in such cases the built-in OpenSSL functionality is not
239 required. Switching off anti-replay is equivalent to B<SSL_OP_NO_ANTI_REPLAY>.
243 =head1 SUPPORTED CONFIGURATION FILE COMMANDS
245 Currently supported B<cmd> names for configuration files (i.e. when the
246 flag B<SSL_CONF_FLAG_FILE> is set) are listed below. All configuration file
247 B<cmd> names are case insensitive so B<signaturealgorithms> is recognised
248 as well as B<SignatureAlgorithms>. Unless otherwise stated the B<value> names
249 are also case insensitive.
251 Note: the command prefix (if set) alters the recognised B<cmd> values.
255 =item B<CipherString>
257 Sets the ciphersuite list for TLSv1.2 and below to B<value>. This list will be
258 combined with any configured TLSv1.3 ciphersuites. Note: syntax
259 checking of B<value> is currently not performed unless an B<SSL> or B<SSL_CTX>
260 structure is associated with B<cctx>.
262 =item B<Ciphersuites>
264 Sets the available ciphersuites for TLSv1.3 to B<value>. This is a simple colon
265 (":") separated list of TLSv1.3 ciphersuite names in order of preference. This
266 list will be combined any configured TLSv1.2 and below ciphersuites.
267 See L<ciphers(1)> for more information.
271 Attempts to use the file B<value> as the certificate for the appropriate
272 context. It currently uses SSL_CTX_use_certificate_chain_file() if an B<SSL_CTX>
273 structure is set or SSL_use_certificate_file() with filetype PEM if an B<SSL>
274 structure is set. This option is only supported if certificate operations
279 Attempts to use the file B<value> as the private key for the appropriate
280 context. This option is only supported if certificate operations
281 are permitted. Note: if no B<PrivateKey> option is set then a private key is
282 not loaded unless the B<SSL_CONF_FLAG_REQUIRE_PRIVATE> is set.
284 =item B<ChainCAFile>, B<ChainCAPath>, B<VerifyCAFile>, B<VerifyCAPath>
286 These options indicate a file or directory used for building certificate
287 chains or verifying certificate chains. These options are only supported
288 if certificate operations are permitted.
290 =item B<RequestCAFile>
292 This option indicates a file containing a set of certificates in PEM form.
293 The subject names of the certificates are sent to the peer in the
294 B<certificate_authorities> extension for TLS 1.3 (in ClientHello or
295 CertificateRequest) or in a certificate request for previous versions or
298 =item B<ServerInfoFile>
300 Attempts to use the file B<value> in the "serverinfo" extension using the
301 function SSL_CTX_use_serverinfo_file.
303 =item B<DHParameters>
305 Attempts to use the file B<value> as the set of temporary DH parameters for
306 the appropriate context. This option is only supported if certificate
307 operations are permitted.
309 =item B<RecordPadding>
311 Attempts to pad TLSv1.3 records so that they are a multiple of B<value> in
312 length on send. A B<value> of 0 or 1 turns off padding. Otherwise, the
313 B<value> must be >1 or <=16384.
315 =item B<SignatureAlgorithms>
317 This sets the supported signature algorithms for TLSv1.2 and TLSv1.3.
319 value is used directly for the supported signature algorithms extension. For
320 servers it is used to determine which signature algorithms to support.
322 The B<value> argument should be a colon separated list of signature algorithms
323 in order of decreasing preference of the form B<algorithm+hash> or
324 B<signature_scheme>. B<algorithm>
325 is one of B<RSA>, B<DSA> or B<ECDSA> and B<hash> is a supported algorithm
326 OID short name such as B<SHA1>, B<SHA224>, B<SHA256>, B<SHA384> of B<SHA512>.
327 Note: algorithm and hash names are case sensitive.
328 B<signature_scheme> is one of the signature schemes defined in TLSv1.3,
329 specified using the IETF name, e.g., B<ecdsa_secp256r1_sha256>, B<ed25519>,
330 or B<rsa_pss_pss_sha256>.
332 If this option is not set then all signature algorithms supported by the
333 OpenSSL library are permissible.
335 Note: algorithms which specify a PKCS#1 v1.5 signature scheme (either by
336 using B<RSA> as the B<algorithm> or by using one of the B<rsa_pkcs1_*>
337 identifiers) are ignored in TLSv1.3 and will not be negotiated.
339 =item B<ClientSignatureAlgorithms>
341 This sets the supported signature algorithms associated with client
342 authentication for TLSv1.2 and TLSv1.3.
343 For servers the value is used in the
344 B<signature_algorithms> field of a B<CertificateRequest> message.
346 used to determine which signature algorithm to use with the client certificate.
347 If a server does not request a certificate this option has no effect.
349 The syntax of B<value> is identical to B<SignatureAlgorithms>. If not set then
350 the value set for B<SignatureAlgorithms> will be used instead.
354 This sets the supported groups. For clients, the groups are
355 sent using the supported groups extension. For servers, it is used
356 to determine which group to use. This setting affects groups used for
357 signatures (in TLSv1.2 and earlier) and key exchange. The first group listed
358 will also be used for the B<key_share> sent by a client in a TLSv1.3
361 The B<value> argument is a colon separated list of groups. The group can be
362 either the B<NIST> name (e.g. B<P-256>), some other commonly used name where
363 applicable (e.g. B<X25519>, B<ffdhe2048>) or an OpenSSL OID name
364 (e.g B<prime256v1>). Group names are case sensitive. The list should be in
365 order of preference with the most preferred group first.
367 Currently supported groups for B<TLSv1.3> are B<P-256>, B<P-384>, B<P-521>,
368 B<X25519>, B<X448>, B<ffdhe2048>, B<ffdhe3072>, B<ffdhe4096>, B<ffdhe6144>,
373 This is a synonym for the "Groups" command.
377 This sets the minimum supported SSL, TLS or DTLS version.
379 Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>,
380 B<TLSv1.2>, B<TLSv1.3>, B<DTLSv1> and B<DTLSv1.2>.
381 The value B<None> will disable the limit.
385 This sets the maximum supported SSL, TLS or DTLS version.
387 Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>,
388 B<TLSv1.2>, B<TLSv1.3>, B<DTLSv1> and B<DTLSv1.2>.
389 The value B<None> will disable the limit.
393 This can be used to enable or disable certain versions of the SSL,
394 TLS or DTLS protocol.
396 The B<value> argument is a comma separated list of supported protocols
397 to enable or disable.
398 If a protocol is preceded by B<-> that version is disabled.
400 All protocol versions are enabled by default.
401 You need to disable at least one protocol version for this setting have any
403 Only enabling some protocol versions does not disable the other protocol
406 Currently supported protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>,
407 B<TLSv1.2>, B<TLSv1.3>, B<DTLSv1> and B<DTLSv1.2>.
408 The special value B<ALL> refers to all supported versions.
410 This can't enable protocols that are disabled using B<MinProtocol>
411 or B<MaxProtocol>, but can disable protocols that are still allowed
414 The B<Protocol> command is fragile and deprecated; do not use it.
415 Use B<MinProtocol> and B<MaxProtocol> instead.
416 If you do use B<Protocol>, make sure that the resulting range of enabled
417 protocols has no "holes", e.g. if TLS 1.0 and TLS 1.2 are both enabled, make
418 sure to also leave TLS 1.1 enabled.
422 The B<value> argument is a comma separated list of various flags to set.
423 If a flag string is preceded B<-> it is disabled.
424 See the L<SSL_CTX_set_options(3)> function for more details of
427 Each option is listed below. Where an operation is enabled by default
428 the B<-flag> syntax is needed to disable it.
430 B<SessionTicket>: session ticket support, enabled by default. Inverse of
431 B<SSL_OP_NO_TICKET>: that is B<-SessionTicket> is the same as setting
434 B<Compression>: SSL/TLS compression support, enabled by default. Inverse
435 of B<SSL_OP_NO_COMPRESSION>.
437 B<EmptyFragments>: use empty fragments as a countermeasure against a
438 SSL 3.0/TLS 1.0 protocol vulnerability affecting CBC ciphers. It
439 is set by default. Inverse of B<SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS>.
441 B<Bugs>: enable various bug workarounds. Same as B<SSL_OP_ALL>.
443 B<DHSingle>: enable single use DH keys, set by default. Inverse of
444 B<SSL_OP_DH_SINGLE>. Only used by servers.
446 B<ECDHSingle>: enable single use ECDH keys, set by default. Inverse of
447 B<SSL_OP_ECDH_SINGLE>. Only used by servers.
449 B<ServerPreference>: use server and not client preference order when
450 determining which cipher suite, signature algorithm or elliptic curve
451 to use for an incoming connection. Equivalent to
452 B<SSL_OP_CIPHER_SERVER_PREFERENCE>. Only used by servers.
454 B<PrioritizeChaCha>: prioritizes ChaCha ciphers when the client has a
455 ChaCha20 cipher at the top of its preference list. This usually indicates
456 a mobile client is in use. Equivalent to B<SSL_OP_PRIORITIZE_CHACHA>.
457 Only used by servers.
459 B<NoResumptionOnRenegotiation>: set
460 B<SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION> flag. Only used by servers.
462 B<NoRenegotiation>: disables all attempts at renegotiation in TLSv1.2 and
463 earlier, same as setting B<SSL_OP_NO_RENEGOTIATION>.
465 B<UnsafeLegacyRenegotiation>: permits the use of unsafe legacy renegotiation.
466 Equivalent to B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>.
468 B<UnsafeLegacyServerConnect>: permits the use of unsafe legacy renegotiation
469 for OpenSSL clients only. Equivalent to B<SSL_OP_LEGACY_SERVER_CONNECT>.
472 B<EncryptThenMac>: use encrypt-then-mac extension, enabled by
473 default. Inverse of B<SSL_OP_NO_ENCRYPT_THEN_MAC>: that is,
474 B<-EncryptThenMac> is the same as setting B<SSL_OP_NO_ENCRYPT_THEN_MAC>.
476 B<AllowNoDHEKEX>: In TLSv1.3 allow a non-(ec)dhe based key exchange mode on
477 resumption. This means that there will be no forward secrecy for the resumed
478 session. Equivalent to B<SSL_OP_ALLOW_NO_DHE_KEX>.
480 B<MiddleboxCompat>: If set then dummy Change Cipher Spec (CCS) messages are sent
481 in TLSv1.3. This has the effect of making TLSv1.3 look more like TLSv1.2 so that
482 middleboxes that do not understand TLSv1.3 will not drop the connection. This
483 option is set by default. A future version of OpenSSL may not set this by
484 default. Equivalent to B<SSL_OP_ENABLE_MIDDLEBOX_COMPAT>.
486 B<AntiReplay>: If set then OpenSSL will automatically detect if a session ticket
487 has been used more than once, TLSv1.3 has been negotiated, and early data is
488 enabled on the server. A full handshake is forced if a session ticket is used a
489 second or subsequent time. This option is set by default and is only used by
490 servers. Anti-replay measures are required to comply with the TLSv1.3
491 specification. Some applications may be able to mitigate the replay risks in
492 other ways and in such cases the built-in OpenSSL functionality is not required.
493 Disabling anti-replay is equivalent to setting B<SSL_OP_NO_ANTI_REPLAY>.
495 B<ExtendedMasterSecret>: use extended master secret extension, enabled by
496 default. Inverse of B<SSL_OP_NO_EXTENDED_MASTER_SECRET>: that is,
497 B<-ExtendedMasterSecret> is the same as setting B<SSL_OP_NO_EXTENDED_MASTER_SECRET>.
501 The B<value> argument is a comma separated list of flags to set.
503 B<Peer> enables peer verification: for clients only.
505 B<Request> requests but does not require a certificate from the client.
508 B<Require> requests and requires a certificate from the client: an error
509 occurs if the client does not present a certificate. Servers only.
511 B<Once> requests a certificate from a client only on the initial connection:
512 not when renegotiating. Servers only.
514 B<RequestPostHandshake> configures the connection to support requests but does
515 not require a certificate from the client post-handshake. A certificate will
516 not be requested during the initial handshake. The server application must
517 provide a mechanism to request a certificate post-handshake. Servers only.
520 B<RequiresPostHandshake> configures the connection to support requests and
521 requires a certificate from the client post-handshake: an error occurs if the
522 client does not present a certificate. A certificate will not be requested
523 during the initial handshake. The server application must provide a mechanism
524 to request a certificate post-handshake. Servers only. TLSv1.3 only.
526 =item B<ClientCAFile>, B<ClientCAPath>
528 A file or directory of certificates in PEM format whose names are used as the
529 set of acceptable names for client CAs. Servers only. This option is only
530 supported if certificate operations are permitted.
534 =head1 SUPPORTED COMMAND TYPES
536 The function SSL_CONF_cmd_value_type() currently returns one of the following
541 =item B<SSL_CONF_TYPE_UNKNOWN>
543 The B<cmd> string is unrecognised, this return value can be use to flag
546 =item B<SSL_CONF_TYPE_STRING>
548 The value is a string without any specific structure.
550 =item B<SSL_CONF_TYPE_FILE>
552 The value is a filename.
554 =item B<SSL_CONF_TYPE_DIR>
556 The value is a directory name.
558 =item B<SSL_CONF_TYPE_NONE>
560 The value string is not used e.g. a command line option which doesn't take an
567 The order of operations is significant. This can be used to set either defaults
568 or values which cannot be overridden. For example if an application calls:
570 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
571 SSL_CONF_cmd(ctx, userparam, uservalue);
573 it will disable SSLv3 support by default but the user can override it. If
574 however the call sequence is:
576 SSL_CONF_cmd(ctx, userparam, uservalue);
577 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
579 SSLv3 is B<always> disabled and attempt to override this by the user are
582 By checking the return code of SSL_CONF_cmd() it is possible to query if a
583 given B<cmd> is recognised, this is useful if SSL_CONF_cmd() values are
584 mixed with additional application specific operations.
586 For example an application might call SSL_CONF_cmd() and if it returns
587 -2 (unrecognised command) continue with processing of application specific
590 Applications can also use SSL_CONF_cmd() to process command lines though the
591 utility function SSL_CONF_cmd_argv() is normally used instead. One way
592 to do this is to set the prefix to an appropriate value using
593 SSL_CONF_CTX_set1_prefix(), pass the current argument to B<cmd> and the
594 following argument to B<value> (which may be NULL).
596 In this case if the return value is positive then it is used to skip that
597 number of arguments as they have been processed by SSL_CONF_cmd(). If -2 is
598 returned then B<cmd> is not recognised and application specific arguments
599 can be checked instead. If -3 is returned a required argument is missing
600 and an error is indicated. If 0 is returned some other error occurred and
601 this can be reported back to the user.
603 The function SSL_CONF_cmd_value_type() can be used by applications to
604 check for the existence of a command or to perform additional syntax
605 checking or translation of the command value. For example if the return
606 value is B<SSL_CONF_TYPE_FILE> an application could translate a relative
607 pathname to an absolute pathname.
611 SSL_CONF_cmd() returns 1 if the value of B<cmd> is recognised and B<value> is
612 B<NOT> used and 2 if both B<cmd> and B<value> are used. In other words it
613 returns the number of arguments processed. This is useful when processing
616 A return value of -2 means B<cmd> is not recognised.
618 A return value of -3 means B<cmd> is recognised and the command requires a
619 value but B<value> is NULL.
621 A return code of 0 indicates that both B<cmd> and B<value> are valid but an
622 error occurred attempting to perform the operation: for example due to an
623 error in the syntax of B<value> in this case the error queue may provide
624 additional information.
628 Set supported signature algorithms:
630 SSL_CONF_cmd(ctx, "SignatureAlgorithms", "ECDSA+SHA256:RSA+SHA256:DSA+SHA256");
632 There are various ways to select the supported protocols.
634 This set the minimum protocol version to TLSv1, and so disables SSLv3.
635 This is the recommended way to disable protocols.
637 SSL_CONF_cmd(ctx, "MinProtocol", "TLSv1");
639 The following also disables SSLv3:
641 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
643 The following will first enable all protocols, and then disable
645 If no protocol versions were disabled before this has the same effect as
646 "-SSLv3", but if some versions were disables this will re-enable them before
649 SSL_CONF_cmd(ctx, "Protocol", "ALL,-SSLv3");
653 SSL_CONF_cmd(ctx, "MinProtocol", "TLSv1.2");
654 SSL_CONF_cmd(ctx, "MaxProtocol", "TLSv1.2");
656 This also only enables TLSv1.2:
658 SSL_CONF_cmd(ctx, "Protocol", "-ALL,TLSv1.2");
660 Disable TLS session tickets:
662 SSL_CONF_cmd(ctx, "Options", "-SessionTicket");
666 SSL_CONF_cmd(ctx, "Options", "Compression");
668 Set supported curves to P-256, P-384:
670 SSL_CONF_cmd(ctx, "Curves", "P-256:P-384");
674 L<SSL_CONF_CTX_new(3)>,
675 L<SSL_CONF_CTX_set_flags(3)>,
676 L<SSL_CONF_CTX_set1_prefix(3)>,
677 L<SSL_CONF_CTX_set_ssl_ctx(3)>,
678 L<SSL_CONF_cmd_argv(3)>,
679 L<SSL_CTX_set_options(3)>
683 The SSL_CONF_cmd() function was added in OpenSSL 1.0.2.
685 The B<SSL_OP_NO_SSL2> option doesn't have effect since 1.1.0, but the macro
686 is retained for backwards compatibility.
688 The B<SSL_CONF_TYPE_NONE> was added in OpenSSL 1.1.0. In earlier versions of
689 OpenSSL passing a command which didn't take an argument would return
690 B<SSL_CONF_TYPE_UNKNOWN>.
692 B<MinProtocol> and B<MaxProtocol> where added in OpenSSL 1.1.0.
694 B<AllowNoDHEKEX> and B<PrioritizeChaCha> were added in OpenSSL 1.1.1.
698 Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved.
700 Licensed under the Apache License 2.0 (the "License"). You may not use
701 this file except in compliance with the License. You can obtain a copy
702 in the file LICENSE in the source distribution or at
703 L<https://www.openssl.org/source/license.html>.