=pod =head1 NAME s_server - SSL/TLS server program =head1 SYNOPSIS B B [B<-help>] [B<-port port>] [B<-accept val>] [B<-naccept count>] [B<-unix val>] [B<-unlink>] [B<-4>] [B<-6>] [B<-context id>] [B<-verify depth>] [B<-Verify depth>] [B<-crl_check>] [B<-crl_check_all>] [B<-cert filename>] [B<-certform DER|PEM>] [B<-key keyfile>] [B<-keyform DER|PEM>] [B<-pass arg>] [B<-dcert filename>] [B<-dcertform DER|PEM>] [B<-dkey keyfile>] [B<-dkeyform DER|PEM>] [B<-dpass arg>] [B<-dhparam filename>] [B<-nbio>] [B<-nbio_test>] [B<-crlf>] [B<-debug>] [B<-msg>] [B<-state>] [B<-CApath directory>] [B<-CAfile filename>] [B<-no-CAfile>] [B<-no-CApath>] [B<-attime timestamp>] [B<-check_ss_sig>] [B<-explicit_policy>] [B<-extended_crl>] [B<-ignore_critical>] [B<-inhibit_any>] [B<-inhibit_map>] [B<-no_check_time>] [B<-partial_chain>] [B<-policy arg>] [B<-policy_check>] [B<-policy_print>] [B<-purpose purpose>] [B<-suiteB_128>] [B<-suiteB_128_only>] [B<-suiteB_192>] [B<-trusted_first>] [B<-no_alt_chains>] [B<-use_deltas>] [B<-auth_level num>] [B<-nameopt option>] [B<-verify_depth num>] [B<-verify_return_error>] [B<-verify_email email>] [B<-verify_hostname hostname>] [B<-verify_ip ip>] [B<-verify_name name>] [B<-x509_strict>] [B<-nocert>] [B<-client_sigalgs sigalglist>] [B<-named_curve curve>] [B<-cipher cipherlist>] [B<-serverpref>] [B<-quiet>] [B<-ssl3>] [B<-tls1>] [B<-tls1_1>] [B<-tls1_2>] [B<-tls1_3>] [B<-dtls>] [B<-dtls1>] [B<-dtls1_2>] [B<-sctp>] [B<-listen>] [B<-async>] [B<-split_send_frag>] [B<-max_pipelines>] [B<-read_buf>] [B<-no_ssl3>] [B<-no_tls1>] [B<-no_tls1_1>] [B<-no_tls1_2>] [B<-no_tls1_3>] [B<-no_dhe>] [B<-bugs>] [B<-comp>] [B<-no_comp>] [B<-brief>] [B<-www>] [B<-WWW>] [B<-HTTP>] [B<-engine id>] [B<-tlsextdebug>] [B<-no_ticket>] [B<-id_prefix arg>] [B<-rand file(s)>] [B<-serverinfo file>] [B<-no_resumption_on_reneg>] [B<-status>] [B<-status_verbose>] [B<-status_timeout nsec>] [B<-status_url url>] [B<-status_file file>] [B<-alpn protocols>] [B<-nextprotoneg protocols>] [B<-max_early_data>] [B<-early_data>] =head1 DESCRIPTION The B command implements a generic SSL/TLS server which listens for connections on a given port using SSL/TLS. =head1 OPTIONS In addition to the options below the B utility also supports the common and server only options documented in the in the "Supported Command Line Commands" section of the L manual page. =over 4 =item B<-help> Print out a usage message. =item B<-port port> The TCP port to listen on for connections. If not specified 4433 is used. =item B<-accept val> The optional TCP host and port to listen on for connections. If not specified, *:4433 is used. =item B<-naccept count> The server will exit after receiving B connections, default unlimited. =item B<-unix val> Unix domain socket to accept on. =item B<-unlink> For -unix, unlink existing socket first. =item B<-4> Use IPv4 only. =item B<-6> Use IPv6 only. =item B<-context id> Sets the SSL context id. It can be given any string value. If this option is not present a default value will be used. =item B<-cert certname> 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 containing a DSS (DSA) key. If not specified then the filename "server.pem" will be used. =item B<-certform format> The certificate format to use: DER or PEM. PEM is the default. =item B<-key keyfile> The private key to use. If not specified then the certificate file will be used. =item B<-keyform format> The private format to use: DER or PEM. PEM is the default. =item B<-pass arg> The private key password source. For more information about the format of B see the B section in L. =item B<-dcert filename>, B<-dkey keyname> Specify an additional certificate and private key, these behave in the same manner as the B<-cert> and B<-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. =item B<-dcertform format>, B<-dkeyform format>, B<-dpass arg> Additional certificate and private key format and passphrase respectively. =item B<-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). =item B<-dhparam filename> 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 the B program will be used. =item B<-no_dhe> If this option is set then no DH parameters will be loaded effectively disabling the ephemeral DH cipher suites. =item B<-crl_check>, B<-crl_check_all> Check the peer certificate has not been revoked by its CA. The CRL(s) are appended to the certificate file. With the B<-crl_check_all> option all CRLs of all CAs in the chain are checked. =item B<-CApath directory> The directory to use for client certificate verification. This directory must be in "hash format", see B for more information. These are also used when building the server certificate chain. =item B<-CAfile file> A file containing trusted certificates to use during client authentication and to use when attempting to build the server certificate chain. The list is also used in the list of acceptable client CAs passed to the client when a certificate is requested. =item B<-no-CAfile> Do not load the trusted CA certificates from the default file location. =item B<-no-CApath> Do not load the trusted CA certificates from the default directory location. =item B<-verify depth>, B<-Verify depth> 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 B<-verify> option a certificate is requested but the client does not have to send one, with the B<-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. =item B<-nameopt option> Option which determines how the subject or issuer names are displayed. The B