Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
OPENSSL-S_SERVER(1ossl) 	     OpenSSL		 OPENSSL-S_SERVER(1ossl)

NAME
     openssl-s_server - SSL/TLS server program

SYNOPSIS
     openssl s_server [-help] [-port +int] [-accept val] [-unix val] [-4] [-6]
     [-unlink] [-context val] [-verify int] [-Verify int] [-cert infile] [-cert2
     infile] [-certform DER|PEM|P12] [-cert_chain infile] [-build_chain]
     [-serverinfo val] [-key filename|uri] [-key2 filename|uri] [-keyform
     DER|PEM|P12] [-pass val] [-dcert infile] [-dcertform DER|PEM|P12]
     [-dcert_chain infile] [-dkey filename|uri] [-dkeyform DER|PEM|P12] [-dpass
     val] [-nbio_test] [-crlf] [-debug] [-msg] [-msgfile outfile] [-state] [-no-
     cert] [-quiet] [-no_resume_ephemeral] [-www] [-WWW] [-http_server_binmode]
     [-no_ca_names] [-ignore_unexpected_eof] [-servername] [-servername_fatal]
     [-tlsextdebug] [-HTTP] [-id_prefix val] [-keymatexport val] [-keymatex-
     portlen +int] [-CRL infile] [-CRLform DER|PEM] [-crl_download] [-chain-
     CAfile infile] [-chainCApath dir] [-chainCAstore uri] [-verifyCAfile in-
     file] [-verifyCApath dir] [-verifyCAstore uri] [-no_cache] [-ext_cache]
     [-verify_return_error] [-verify_quiet] [-ign_eof] [-no_ign_eof] [-no_ems]
     [-status] [-status_all] [-status_verbose] [-status_timeout int] [-proxy
     [http[s]://][userinfo@]host[:port][/path][?query][#fragment]] [-no_proxy
     addresses] [-status_url val] [-status_file infile] [-ssl_config val]
     [-trace] [-security_debug] [-security_debug_verbose] [-brief] [-rev]
     [-async] [-max_send_frag +int] [-split_send_frag +int] [-max_pipelines
     +int] [-naccept +int] [-read_buf +int] [-no_tx_cert_comp]
     [-no_rx_cert_comp] [-dhparam infile] [-nbio] [-psk_identity val] [-psk_hint
     val] [-psk val] [-psk_session file] [-srpvfile infile] [-srpuserseed val]
     [-timeout] [-mtu +int] [-listen] [-sctp] [-sctp_label_bug] [-use_srtp val]
     [-no_dhe] [-nextprotoneg val] [-alpn val] [-ktls] [-sendfile] [-zero-
     copy_sendfile] [-keylogfile outfile] [-recv_max_early_data int]
     [-max_early_data int] [-early_data] [-stateless] [-anti_replay]
     [-no_anti_replay] [-num_tickets] [-tfo] [-cert_comp] [-nameopt option]
     [-no_ssl3] [-no_tls1] [-no_tls1_1] [-no_tls1_2] [-no_tls1_3] [-tls1]
     [-tls1_1] [-tls1_2] [-tls1_3] [-dtls] [-dtls1] [-dtls1_2] [-al-
     low_proxy_certs] [-attime timestamp] [-no_check_time] [-check_ss_sig]
     [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ig-
     nore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy arg]
     [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128]
     [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains]
     [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email]
     [-verify_hostname hostname] [-verify_ip ip] [-verify_name name]
     [-x509_strict] [-issuer_checks] [-bugs] [-no_comp] [-comp] [-no_ticket]
     [-serverpref] [-client_renegotiation] [-legacy_renegotiation] [-no_renego-
     tiation] [-no_resumption_on_reneg] [-legacy_server_connect]
     [-no_legacy_server_connect] [-no_etm] [-allow_no_dhe_kex] [-pre-
     fer_no_dhe_kex] [-prioritize_chacha] [-strict] [-sigalgs algs]
     [-client_sigalgs algs] [-groups groups] [-curves curves] [-named_curve
     curve] [-cipher ciphers] [-ciphersuites 1.3ciphers] [-min_protocol minprot]
     [-max_protocol maxprot] [-record_padding padding] [-debug_broken_protocol]
     [-no_middlebox] [-xkey infile] [-xcert file] [-xchain file] [-xchain_build
     file] [-xcertform DER|PEM]> [-xkeyform DER|PEM]> [-CAfile file]
     [-no-CAfile] [-CApath dir] [-no-CApath] [-CAstore uri] [-no-CAstore] [-rand
     files] [-writerand file] [-provider name] [-provider-path path] [-provparam
     [name:]key=value] [-propquery propq] [-enable_server_rpk] [-en-
     able_client_rpk] [-expected-rpks] [-ech_key filename] [-ech_dir dirname]
     [-ech_noretry_dir dirname] [-ech_trialdecrypt] [-ech_greaseretries]

DESCRIPTION
     This command implements a generic SSL/TLS server which listens for connec-
     tions on a given port using SSL/TLS.

OPTIONS
     In addition to the options below, this command also supports the common and
     server only options documented "Supported Command Line Commands" in
     SSL_CONF_cmd(3)

     -help
	 Print out a usage message.

     -port +int
	 The TCP port to listen on for connections. If not specified 4433 is
	 used.

     -accept val
	 The optional TCP host and port to listen on for connections. If not
	 specified, *:4433 is used.

     -unix val
	 Unix domain socket to accept on.

     -4  Use IPv4 only.

     -6  Use IPv6 only.

     -unlink
	 For -unix, unlink any existing socket first.

     -context val
	 Sets the SSL context id. It can be given any string value. If this op-
	 tion is not present a default value will be used.

     -verify int, -Verify int
	 The verify depth to use. This specifies the maximum length of the
	 client certificate chain and makes the server request a certificate
	 from the client. With the -verify option a certificate is requested but
	 the client does not have to send one, with the -Verify option the
	 client must supply a certificate or an error occurs.

	 If the cipher suite cannot request a client certificate (for example an
	 anonymous cipher suite or PSK) this option has no effect.

	 By default, validation of any supplied client certificate and its chain
	 is done w.r.t. the (D)TLS Client ("sslclient") purpose.  For details
	 see "Certificate Extensions" in openssl-verification-options(1).

     -cert infile
	 The certificate to use, most servers cipher suites require the use of a
	 certificate and some require a certificate with a certain public key
	 type: for example the DSS cipher suites require a certificate contain-
	 ing a DSS (DSA) key. If not specified then the filename server.pem will
	 be used.

     -cert2 infile
	 The certificate file to use for servername; default is "server2.pem".

     -certform DER|PEM|P12
	 The server certificate file format; unspecified by default.  See
	 openssl-format-options(1) for details.

     -cert_chain
	 A file or URI of untrusted certificates to use when attempting to build
	 the certificate chain related to the certificate specified via the
	 -cert option.	These untrusted certificates are sent to clients and
	 used for generating certificate status (aka OCSP stapling) requests.
	 The input can be in PEM, DER, or PKCS#12 format.

     -build_chain
	 Specify whether the application should build the server certificate
	 chain to be provided to the client.

     -serverinfo val
	 A file containing one or more blocks of PEM data.  Each PEM block must
	 encode a TLS ServerHello extension (2 bytes type, 2 bytes length, fol-
	 lowed by "length" bytes of extension data).  If the client sends an
	 empty TLS ClientHello extension matching the type, the corresponding
	 ServerHello extension will be returned.

     -key filename|uri
	 The private key to use. If not specified then the certificate file will
	 be used.

     -key2 filename|uri
	 The private Key file to use for servername if not given via -cert2.

     -keyform DER|PEM|P12
	 The key format; unspecified by default.  See openssl-format-options(1)
	 for details.

     -pass val
	 The private key and certificate file password source.	For more infor-
	 mation about the format of val, see openssl-passphrase-options(1).

     -dcert infile, -dkey filename|uri
	 Specify an additional certificate and private key, these behave in the
	 same manner as the -cert and -key options except there is no default if
	 they are not specified (no additional certificate and key is used). As
	 noted above some cipher suites require a certificate containing a key
	 of a certain type. Some cipher suites need a certificate carrying an
	 RSA key and some a DSS (DSA) key. By using RSA and DSS certificates and
	 keys a server can support clients which only support RSA or DSS cipher
	 suites by using an appropriate certificate.

     -dcert_chain
	 A file or URI of untrusted certificates to use when attempting to build
	 the server certificate chain when a certificate specified via the
	 -dcert option is in use.  The input can be in PEM, DER, or PKCS#12 for-
	 mat.

     -dcertform DER|PEM|P12
	 The format of the additional certificate file; unspecified by default.
	 See openssl-format-options(1) for details.

     -dkeyform DER|PEM|P12
	 The format of the additional private key; unspecified by default.  See
	 openssl-format-options(1) for details.

     -dpass val
	 The passphrase for the additional private key and certificate.  For
	 more information about the format of val, see openssl-passphrase-op-
	 tions(1).

     -nbio_test
	 Tests non blocking I/O.

     -crlf
	 This option translated a line feed from the terminal into CR+LF.

     -debug
	 Print extensive debugging information including a hex dump of all traf-
	 fic.

     -security_debug
	 Print output from SSL/TLS security framework.

     -security_debug_verbose
	 Print more output from SSL/TLS security framework

     -msgShow all protocol messages with hex dump.

     -msgfile outfile
	 File to send output of -msg or -trace to, default standard output.

     -state
	 Prints the SSL session states.

     -CRL infile
	 The CRL file to use.

     -CRLform DER|PEM
	 The CRL file format; unspecified by default.  See openssl-format-op-
	 tions(1) for details.

     -crl_download
	 Download CRLs from distribution points given in CDP extensions of cer-
	 tificates

     -verifyCAfile filename
	 A file in PEM format containing trusted CA certificates (root and/or
	 intermediate) used to verify the client certificate chain.

     -verifyCApath dir
	 A directory containing trusted certificates to use for verifying client
	 certificates.	This directory must be in "hash format", see
	 openssl-verify(1) for more information.

     -verifyCAstore uri
	 The URI of a store containing trusted certificates to use for verifying
	 client certificates.

	 When any of -verifyCAfile, -verifyCApath, or -verifyCAstore is speci-
	 fied, they are loaded into a separate verification store (via
	 SSL_CTX_set1_verify_cert_store(3)) and used for client certificate ver-
	 ification instead of the store built from -CAfile, -CApath, and -CAs-
	 tore. Note that -CAfile is the sole source of acceptable issuing CA
	 names sent to the client in the Certificate Request message during the
	 handshake; -CApath, -CAstore, and the -verifyCA* options do not con-
	 tribute to this list.

     -chainCAfile file
	 A file in PEM format containing trusted certificates to use when at-
	 tempting to build the server certificate chain.

     -chainCApath dir
	 A directory containing trusted certificates to use for building the
	 server certificate chain provided to the client.  This directory must
	 be in "hash format", see openssl-verify(1) for more information.

     -chainCAstore uri
	 The URI of a store containing trusted certificates to use for building
	 the server certificate chain provided to the client.  The URI may indi-
	 cate a single certificate, as well as a collection of them.  With URIs
	 in the "file:" scheme, this acts as -chainCAfile or -chainCApath, de-
	 pending on if the URI indicates a directory or a single file.	See
	 ossl_store-file(7) for more information on the "file:" scheme.

     -nocert
	 If this option is set then no certificate is used. This restricts the
	 cipher suites available to the anonymous ones (currently just anonymous
	 DH).

     -quiet
	 Inhibit printing of session and certificate information.

     -no_resume_ephemeral
	 Disable caching and tickets if ephemeral (EC)DH is used.

     -tlsextdebug
	 Print a hex dump of any TLS extensions received from the server.

     -wwwSends a status message back to the client when it connects. This in-
	 cludes information about the ciphers used and various session parame-
	 ters.	The output is in HTML format so this option can be used with a
	 web browser.  The special URL "/renegcert" turns on client cert valida-
	 tion, and "/reneg" tells the server to request renegotiation.

     -WWW, -HTTP
	 Emulates a simple web server. Pages will be resolved relative to the
	 current directory, for example if the URL "https://myhost/page.html" is
	 requested the file ./page.html will be sent.  If the -HTTP flag is
	 used, the files are sent directly, and should contain any HTTP response
	 headers (including status response line).  If the -WWW option is used,
	 the response headers are generated by the server, and the file exten-
	 sion is examined to determine the Content-Type header.  Extensions of
	 "html", "htm", and "php" are "text/html" and all others are
	 "text/plain".	In addition, the special URL "/stats" will return status
	 information like the -www option.

     -http_server_binmode
	 When acting as web-server (using option -WWW or -HTTP) open files re-
	 quested by the client in binary mode.

     -no_ca_names
	 Disable TLS Extension CA Names. You may want to disable it for security
	 reasons or for compatibility with some Windows TLS implementations
	 crashing when this extension is larger than 1024 bytes.

     -ignore_unexpected_eof
	 Some TLS implementations do not send the mandatory close_notify alert
	 on shutdown. If the application tries to wait for the close_notify
	 alert but the peer closes the connection without sending it, an error
	 is generated. When this option is enabled the peer does not need to
	 send the close_notify alert and a closed connection will be treated as
	 if the close_notify alert was received.  For more information on shut-
	 ting down a connection, see SSL_shutdown(3).

     -servername
	 Servername for HostName TLS extension.

     -servername_fatal
	 On servername mismatch send fatal alert (default: warning alert).

     -id_prefix val
	 Generate SSL/TLS session IDs prefixed by val. This is mostly useful for
	 testing any SSL/TLS code (e.g. proxies) that wish to deal with multiple
	 servers, when each of which might be generating a unique range of ses-
	 sion IDs (e.g. with a certain prefix).

     -keymatexport
	 Export keying material using label.

     -keymatexportlen
	 Export the given number of bytes of keying material; default 20.

     -no_cache
	 Disable session cache.

     -ext_cache.
	 Disable internal cache, set up and use external cache.

     -verify_return_error
	 Verification errors normally just print a message but allow the connec-
	 tion to continue, for debugging purposes.  If this option is used, then
	 verification errors close the connection.

     -verify_quiet
	 No verify output except verify errors.

     -ign_eof
	 Ignore input EOF (default: when -quiet).

     -no_ign_eof
	 Do not ignore input EOF.

     -no_ems
	 Disable Extended master secret negotiation.

     -status
	 Enables certificate status request support (aka OCSP stapling): an OCSP
	 response is provided for the leaf (server) certificate if requested by
	 the client side.

     -status_all
	 Like before, but for TLS v1.3 and beyond, status responses for all cer-
	 tificates in the chain (except the trust anchor) are provided if re-
	 quested by the client side.

     -status_verbose
	 Enables certificate status request support (aka OCSP stapling) and
	 gives a verbose printout of the OCSP response.  Use the -cert_chain op-
	 tion to specify the certificate of the server's certificate signer that
	 is required for certificate status requests.

     -status_timeout int
	 Sets the timeout for OCSP response to int seconds.

     -proxy [http[s]://][userinfo@]host[:port][/path][?query][#fragment]
	 The HTTP(S) proxy server to use for reaching the OCSP server unless
	 -no_proxy applies, see below.	If the host string is an IPv6 address,
	 it must be enclosed in "[" and "]".  The proxy port defaults to 80 or
	 443 if the scheme is "https"; apart from that the optional "http://" or
	 "https://" prefix is ignored, as well as any userinfo, path, query, and
	 fragment components.  Defaults to the environment variable "http_proxy"
	 if set, else "HTTP_PROXY" in case no TLS is used, otherwise
	 "https_proxy" if set, else "HTTPS_PROXY".

     -no_proxy addresses
	 List of IP addresses and/or DNS names of servers not to use an HTTP(S)
	 proxy for, separated by commas and/or whitespace (where in the latter
	 case the whole argument must be enclosed in "...").  Default is from
	 the environment variable "no_proxy" if set, else "NO_PROXY".

     -status_url val
	 Sets a fallback responder URL to use if no responder URL is present in
	 the server certificate. Without this option an error is returned if the
	 server certificate does not contain a responder address.  The optional
	 userinfo and fragment URL components are ignored.  Any given query com-
	 ponent is handled as part of the path component.

     -status_file infile
	 Overrides any OCSP responder URLs from the certificate and always pro-
	 vides the OCSP Response stored in the file. The file must be in DER
	 format.  This option may be used multiple times to specify OCSP re-
	 sponses for all certificates in the server certificate chain.

     -ssl_config val
	 Configure SSL_CTX using the given configuration value.

     -trace
	 Show verbose trace output of protocol messages.

     -brief
	 Provide a brief summary of connection parameters instead of the normal
	 verbose output.

     -revSimple echo server that sends back received text reversed. Also sets
	 -brief.  Cannot be used in conjunction with -early_data.

     -async
	 Switch on asynchronous mode. Cryptographic operations will be performed
	 asynchronously. This will only have an effect if an asynchronous capa-
	 ble provider is also used via the -provider option.

     -max_send_frag +int
	 The maximum size of data fragment to send.  See
	 SSL_CTX_set_max_send_fragment(3) for further information.

     -split_send_frag +int
	 This is used for pipelines. There is currently no support for cipher
	 pipelining in libssl. See SSL_CTX_set_max_send_fragment(3) for further
	 information.

     -max_pipelines +int
	 This is used for pipelines. There is currently no support for cipher
	 pipelining in libssl. See SSL_CTX_set_max_send_fragment(3) for further
	 information.

     -naccept +int
	 The server will exit after receiving the specified number of connec-
	 tions, default unlimited.

     -read_buf +int
	 The default read buffer size to be used for connections. This will only
	 have an effect if the buffer size is larger than the size that would
	 otherwise be used and pipelining is in use (see SSL_CTX_set_de-
	 fault_read_buffer_len(3) for further information).

     -no_tx_cert_comp
	 Disables support for sending TLSv1.3 compressed certificates.

     -no_rx_cert_comp
	 Disables support for receiving TLSv1.3 compressed certificates.

     -no_comp
	 Disable negotiation of TLS compression.  TLS compression is not recom-
	 mended and is off by default as of OpenSSL 1.1.0.

     -num_tickets
	 Control the number of tickets that will be sent to the client after a
	 full handshake in TLSv1.3. The default number of tickets is 2. This op-
	 tion does not affect the number of tickets sent after a resumption
	 handshake.

     -dhparam infile
	 The DH parameter file to use. The ephemeral DH cipher suites generate
	 keys using a set of DH parameters. If not specified then an attempt is
	 made to load the parameters from the server certificate file.	If this
	 fails then a static set of parameters hard coded into this command will
	 be used.

     -nbio
	 Turns on non blocking I/O.

     -timeout
	 Enable timeouts.

     -mtuSet link-layer MTU.

     -psk_identity val
	 Expect the client to send PSK identity val when using a PSK cipher
	 suite, and warn if they do not.  By default, the expected PSK identity
	 is the string "Client_identity".

     -psk_hint val
	 Use the PSK identity hint val when using a PSK cipher suite.

     -psk val
	 Use the PSK key val when using a PSK cipher suite. The key is given as
	 a hexadecimal number without leading 0x, for example -psk 1a2b3c4d.
	 This option must be provided in order to use a PSK cipher.

     -psk_session file
	 Use the pem encoded SSL_SESSION data stored in file as the basis of a
	 PSK.  Note that this will only work if TLSv1.3 is negotiated.

     -srpvfile
	 The verifier file for SRP.  This option is deprecated.

     -srpuserseed
	 A seed string for a default user salt.  This option is deprecated.

     -listen
	 This option can only be used in conjunction with one of the DTLS op-
	 tions above.  With this option, this command will listen on a UDP port
	 for incoming connections.  Any ClientHellos that arrive will be checked
	 to see if they have a cookie in them or not.  Any without a cookie will
	 be responded to with a HelloVerifyRequest.  If a ClientHello with a
	 cookie is received then this command will connect to that peer and com-
	 plete the handshake.

     -sctp
	 Use SCTP for the transport protocol instead of UDP in DTLS. Must be
	 used in conjunction with -dtls, -dtls1 or -dtls1_2. This option is only
	 available where OpenSSL has support for SCTP enabled.

     -sctp_label_bug
	 Use the incorrect behaviour of older OpenSSL implementations when com-
	 puting endpoint-pair shared secrets for DTLS/SCTP. This allows communi-
	 cation with older broken implementations but breaks interoperability
	 with correct implementations. Must be used in conjunction with -sctp.
	 This option is only available where OpenSSL has support for SCTP en-
	 abled.

     -use_srtp
	 Offer SRTP key management with a colon-separated profile list.

     -no_dhe
	 If this option is set then no DH parameters will be loaded effectively
	 disabling the ephemeral DH cipher suites.

     -alpn val, -nextprotoneg val
	 These flags enable the Application-Layer Protocol Negotiation or Next
	 Protocol Negotiation (NPN) extension, respectively. ALPN is the IETF
	 standard and replaces NPN.  The val list is a comma-separated list of
	 supported protocol names.  The list should contain the most desirable
	 protocols first.  Protocol names are printable ASCII strings, for exam-
	 ple "http/1.1" or "spdy/3".  The flag -nextprotoneg cannot be specified
	 if -tls1_3 is used.

     -ktls
	 Enable Kernel TLS for sending and receiving.  This option was intro-
	 duced in OpenSSL 3.2.0.  Kernel TLS is off by default as of OpenSSL
	 3.2.0.

     -sendfile
	 If this option is set and KTLS is enabled, SSL_sendfile() will be used
	 instead of BIO_write() to send the HTTP response requested by a client.
	 This option is only valid when -ktls along with -WWW or -HTTP are spec-
	 ified.

     -zerocopy_sendfile
	 If this option is set, SSL_sendfile() will use the zerocopy TX mode,
	 which gives a performance boost when used with KTLS hardware offload.
	 Note that invalid TLS records might be transmitted if the file is
	 changed while being sent.  This option depends on -sendfile; when used
	 alone, -sendfile is implied, and a warning is shown. Note that KTLS
	 sendfile on FreeBSD always runs in the zerocopy mode.

     -keylogfile outfile
	 Appends TLS secrets to the specified keylog file such that external
	 programs (like Wireshark) can decrypt TLS connections.

     -max_early_data int
	 Change the default maximum early data bytes that are specified for new
	 sessions and any incoming early data (when used in conjunction with the
	 -early_data flag). The default value is approximately 16k. The argument
	 must be an integer greater than or equal to 0.

     -recv_max_early_data int
	 Specify the hard limit on the maximum number of early data bytes that
	 will be accepted.

     -early_data
	 Accept early data where possible. Cannot be used in conjunction with
	 -www, -WWW, -HTTP or -rev.

     -stateless
	 Require TLSv1.3 cookies.

     -anti_replay, -no_anti_replay
	 Switches replay protection on or off, respectively. Replay protection
	 is on by default unless overridden by a configuration file. When it is
	 on, OpenSSL will automatically detect if a session ticket has been used
	 more than once, TLSv1.3 has been negotiated, and early data is enabled
	 on the server. A full handshake is forced if a session ticket is used a
	 second or subsequent time. Any early data that was sent will be re-
	 jected.

	 Note that the server manages an internal cache of session tickets. If a
	 client closes the connection without sending the close_notify alert,
	 the corresponding session ticket is removed and a full handshake is
	 forced.

     -tfoEnable acceptance of TCP Fast Open (RFC7413) connections.

     -cert_comp
	 Pre-compresses certificates (RFC8879) that will be sent during the
	 handshake.

     -nameopt option
	 This specifies how the subject or issuer names are displayed.	See
	 openssl-namedisplay-options(1) for details.

     -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3, -tls1, -tls1_1,
     -tls1_2, -tls1_3
	 See "TLS Version Options" in openssl(1).

     -dtls, -dtls1, -dtls1_2
	 These specify the use of DTLS instead of TLS.	See "TLS Version Op-
	 tions" in openssl(1).

     -bugs, -comp, -no_comp, -no_ticket, -serverpref, -client_renegotiation,
     -legacy_renegotiation, -no_renegotiation, -no_resumption_on_reneg,
     -legacy_server_connect, -no_legacy_server_connect, -no_etm -al-
     low_no_dhe_kex, -prefer_no_dhe_kex, -prioritize_chacha, -strict, -sigalgs
     algs, -client_sigalgs algs, -groups groups, -curves curves, -named_curve
     curve, -cipher ciphers, -ciphersuites 1.3ciphers, -min_protocol minprot,
     -max_protocol maxprot, -record_padding padding, -debug_broken_protocol,
     -no_middlebox
	 See "SUPPORTED COMMAND LINE COMMANDS" in SSL_CONF_cmd(3) for details.

     -xkey infile, -xcert file, -xchain file, -xchain_build file, -xcertform
     DER|PEM, -xkeyform DER|PEM
	 Set extended certificate verification options.  See "Extended Verifica-
	 tion Options" in openssl-verification-options(1) for details.

     -CAfile file, -no-CAfile, -CApath dir, -no-CApath, -CAstore uri, -no-CAs-
     tore
	 See "Trusted Certificate Options" in openssl-verification-options(1)
	 for details.

     -rand files, -writerand file
	 See "Random State Options" in openssl(1) for details.

     -provider name
     -provider-path path
     -provparam [name:]key=value
     -propquery propq
	 See "Provider Options" in openssl(1), provider(7), and property(7).

     -allow_proxy_certs, -attime, -no_check_time, -check_ss_sig, -crl_check,
     -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -in-
     hibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -pol-
     icy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only,
     -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -ver-
     ify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict -is-
     suer_checks
	 Set various options of certificate chain verification.  See "Verifica-
	 tion Options" in openssl-verification-options(1) for details.

	 If the server requests a client certificate, then verification errors
	 are displayed, for debugging, but the command will proceed unless the
	 -verify_return_error option is used.

     -enable_server_rpk
	 Enable support for sending raw public keys (RFC7250) to the client.  A
	 raw public key will be sent by the server, if solicited by the client,
	 provided a suitable key and public certificate pair is configured.
	 Clients that don't support raw public keys or prefer to use X.509 cer-
	 tificates can still elect to receive X.509 certificates as usual.

	 Raw public keys are extracted from the configured certificate/private
	 key.

     -enable_client_rpk
	 Enable support for receiving raw public keys (RFC7250) from the client.
	 Use of X.509 certificates by the client becomes optional, and clients
	 that support raw public keys may elect to use them.  Clients that don't
	 support raw public keys or prefer to use X.509 certificates can still
	 elect to send X.509 certificates as usual.

     -expected-rpks file
	 This option implies the -enable_client_rpk option and can be specified
	 multiple times.  Each PEM file should contain one or more public keys,
	 private keys or certificates.	With a private key or certificate an at-
	 tempt is made to extract the associated public key.  Each resulting
	 public key is added (via a call to SSL_add_expected_rpk(3) as a valid
	 raw public key that the client may present to be considered verified.
	 If a client nevertheless presents an X.509 certificate, the enclosed
	 public key is validated as though it were presented as a raw public key
	 instead.

	 Verification success or failure is reported as a DANE verification suc-
	 cess or failure, because verification of raw public keys is internally
	 mapped to verification of DANE TLSA records derived from the specified
	 keys.

     host:port
     -ech_key filename
	 Load one Encrypted Client Hello (ECH) key pair.

     -ech_dir dirname
	 Attempt to load an ECH key pair from every file in the named directory.
	 Any keys successfully loaded will be returned in 'retry_configs'.

     -ech_noretry_dir dirname
	 Attempt to load an ECH key pair from every file in the named directory.
	 Keys loaded will not be returned in 'retry_configs'.

     -ech_trialdecrypt
	 When an Encrypted Client Hello (ECH) extension is seen in a Clien-
	 tHello, attempt to decrypt with all known ECH private keys if neces-
	 sary. Without this, the ECH "config_id" is used to match against the
	 loaded ECH private keys and decryption is only attempted when there's a
	 match.

     -ech_greaseretries
	 If set, servers will add GREASEy ECHConfig values to those sent in
	 retry_configs.

CONNECTED COMMANDS
     If a connection request is established with an SSL client and neither the
     -www nor the -WWW option has been used then normally any data received from
     the client is displayed and any key presses will be sent to the client.

     Certain commands are also recognized which perform special operations.
     These commands are a letter which must appear at the start of a line. They
     are listed below.

     q	 End the current SSL connection but still accept new connections.

     Q	 End the current SSL connection and exit.

     r	 Renegotiate the SSL session (TLSv1.2 and below only).

     R	 Renegotiate the SSL session and request a client certificate (TLSv1.2
	 and below only).

     P	 Send some plain text down the underlying TCP connection: this should
	 cause the client to disconnect due to a protocol violation.

     S	 Print out some session cache status information.

     k	 Send a key update message to the client (TLSv1.3 only)

     K	 Send a key update message to the client and request one back (TLSv1.3
	 only)

     c	 Send a certificate request to the client (TLSv1.3 only)

NOTES
     This command can be used to debug SSL clients. To accept connections from a
     web browser the command:

      openssl s_server -accept 443 -www

     can be used for example.

     Although specifying an empty list of CAs when requesting a client certifi-
     cate is strictly speaking a protocol violation, some SSL clients interpret
     this to mean any CA is acceptable. This is useful for debugging purposes.

     The session parameters can printed out using the openssl-sess_id(1) com-
     mand.

BUGS
     Because this program has a lot of options and also because some of the
     techniques used are rather old, the C source for this command is rather
     hard to read and not a model of how things should be done.  A typical SSL
     server program would be much simpler.

     The output of common ciphers is wrong: it just gives the list of ciphers
     that OpenSSL recognizes and the client supports.

     There should be a way for this command to print out details of any unknown
     cipher suites a client says it supports.

SEE ALSO
     openssl(1), openssl-sess_id(1), openssl-s_client(1), openssl-ciphers(1),
     SSL_CONF_cmd(3), SSL_CTX_set_max_send_fragment(3),
     SSL_CTX_set_split_send_fragment(3), SSL_CTX_set_max_pipelines(3),
     ossl_store-file(7)

HISTORY
     The -no_alt_chains option was added in OpenSSL 1.1.0.

     The -allow-no-dhe-kex and -prioritize_chacha options were added in OpenSSL
     1.1.1.

     The -srpvfile and -srpuserseed option were deprecated in OpenSSL 3.0.

     The -enable_client_rpk, -enable_server_rpk, -no_rx_cert_comp,
     -no_tx_cert_comp, and -tfo options were added in OpenSSL 3.2.

     The -status_all option was added in OpenSSL 3.6.

     The ech options were added in OpenSSL 4.0.

     The -engine option was removed in OpenSSL 4.0.

     The -expected-rpks option was added in OpenSSL 4.0.

COPYRIGHT
     Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.

     Licensed under the Apache License 2.0 (the "License").  You may not use
     this file except in compliance with the License.  You can obtain a copy in
     the file LICENSE in the source distribution or at
     <https://www.openssl.org/source/license.html>.

4.0.2				   2026-08-25		 OPENSSL-S_SERVER(1ossl)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=openssl-s_server&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help