1ebfedea0SLionel Sambuc 2ebfedea0SLionel Sambuc=pod 3ebfedea0SLionel Sambuc 4ebfedea0SLionel Sambuc=head1 NAME 5ebfedea0SLionel Sambuc 6ebfedea0SLionel Sambucs_server - SSL/TLS server program 7ebfedea0SLionel Sambuc 8ebfedea0SLionel Sambuc=head1 SYNOPSIS 9ebfedea0SLionel Sambuc 10ebfedea0SLionel SambucB<openssl> B<s_server> 11ebfedea0SLionel Sambuc[B<-accept port>] 12ebfedea0SLionel Sambuc[B<-context id>] 13ebfedea0SLionel Sambuc[B<-verify depth>] 14ebfedea0SLionel Sambuc[B<-Verify depth>] 15ebfedea0SLionel Sambuc[B<-crl_check>] 16ebfedea0SLionel Sambuc[B<-crl_check_all>] 17ebfedea0SLionel Sambuc[B<-cert filename>] 18ebfedea0SLionel Sambuc[B<-certform DER|PEM>] 19ebfedea0SLionel Sambuc[B<-key keyfile>] 20ebfedea0SLionel Sambuc[B<-keyform DER|PEM>] 21ebfedea0SLionel Sambuc[B<-pass arg>] 22ebfedea0SLionel Sambuc[B<-dcert filename>] 23ebfedea0SLionel Sambuc[B<-dcertform DER|PEM>] 24ebfedea0SLionel Sambuc[B<-dkey keyfile>] 25ebfedea0SLionel Sambuc[B<-dkeyform DER|PEM>] 26ebfedea0SLionel Sambuc[B<-dpass arg>] 27ebfedea0SLionel Sambuc[B<-dhparam filename>] 28ebfedea0SLionel Sambuc[B<-nbio>] 29ebfedea0SLionel Sambuc[B<-nbio_test>] 30ebfedea0SLionel Sambuc[B<-crlf>] 31ebfedea0SLionel Sambuc[B<-debug>] 32ebfedea0SLionel Sambuc[B<-msg>] 33ebfedea0SLionel Sambuc[B<-state>] 34ebfedea0SLionel Sambuc[B<-CApath directory>] 35ebfedea0SLionel Sambuc[B<-CAfile filename>] 36*0a6a1f1dSLionel Sambuc[B<-no_alt_chains>] 37ebfedea0SLionel Sambuc[B<-nocert>] 38ebfedea0SLionel Sambuc[B<-cipher cipherlist>] 39*0a6a1f1dSLionel Sambuc[B<-serverpref>] 40ebfedea0SLionel Sambuc[B<-quiet>] 41ebfedea0SLionel Sambuc[B<-no_tmp_rsa>] 42ebfedea0SLionel Sambuc[B<-ssl2>] 43ebfedea0SLionel Sambuc[B<-ssl3>] 44ebfedea0SLionel Sambuc[B<-tls1>] 45ebfedea0SLionel Sambuc[B<-no_ssl2>] 46ebfedea0SLionel Sambuc[B<-no_ssl3>] 47ebfedea0SLionel Sambuc[B<-no_tls1>] 48ebfedea0SLionel Sambuc[B<-no_dhe>] 49*0a6a1f1dSLionel Sambuc[B<-no_ecdhe>] 50ebfedea0SLionel Sambuc[B<-bugs>] 51ebfedea0SLionel Sambuc[B<-hack>] 52ebfedea0SLionel Sambuc[B<-www>] 53ebfedea0SLionel Sambuc[B<-WWW>] 54ebfedea0SLionel Sambuc[B<-HTTP>] 55ebfedea0SLionel Sambuc[B<-engine id>] 56ebfedea0SLionel Sambuc[B<-tlsextdebug>] 57ebfedea0SLionel Sambuc[B<-no_ticket>] 58ebfedea0SLionel Sambuc[B<-id_prefix arg>] 59ebfedea0SLionel Sambuc[B<-rand file(s)>] 60*0a6a1f1dSLionel Sambuc[B<-status>] 61*0a6a1f1dSLionel Sambuc[B<-status_verbose>] 62*0a6a1f1dSLionel Sambuc[B<-status_timeout nsec>] 63*0a6a1f1dSLionel Sambuc[B<-status_url url>] 64*0a6a1f1dSLionel Sambuc[B<-nextprotoneg protocols>] 65ebfedea0SLionel Sambuc 66ebfedea0SLionel Sambuc=head1 DESCRIPTION 67ebfedea0SLionel Sambuc 68ebfedea0SLionel SambucThe B<s_server> command implements a generic SSL/TLS server which listens 69ebfedea0SLionel Sambucfor connections on a given port using SSL/TLS. 70ebfedea0SLionel Sambuc 71ebfedea0SLionel Sambuc=head1 OPTIONS 72ebfedea0SLionel Sambuc 73ebfedea0SLionel Sambuc=over 4 74ebfedea0SLionel Sambuc 75ebfedea0SLionel Sambuc=item B<-accept port> 76ebfedea0SLionel Sambuc 77ebfedea0SLionel Sambucthe TCP port to listen on for connections. If not specified 4433 is used. 78ebfedea0SLionel Sambuc 79ebfedea0SLionel Sambuc=item B<-context id> 80ebfedea0SLionel Sambuc 81ebfedea0SLionel Sambucsets the SSL context id. It can be given any string value. If this option 82ebfedea0SLionel Sambucis not present a default value will be used. 83ebfedea0SLionel Sambuc 84ebfedea0SLionel Sambuc=item B<-cert certname> 85ebfedea0SLionel Sambuc 86ebfedea0SLionel SambucThe certificate to use, most servers cipher suites require the use of a 87ebfedea0SLionel Sambuccertificate and some require a certificate with a certain public key type: 88ebfedea0SLionel Sambucfor example the DSS cipher suites require a certificate containing a DSS 89ebfedea0SLionel Sambuc(DSA) key. If not specified then the filename "server.pem" will be used. 90ebfedea0SLionel Sambuc 91ebfedea0SLionel Sambuc=item B<-certform format> 92ebfedea0SLionel Sambuc 93ebfedea0SLionel SambucThe certificate format to use: DER or PEM. PEM is the default. 94ebfedea0SLionel Sambuc 95ebfedea0SLionel Sambuc=item B<-key keyfile> 96ebfedea0SLionel Sambuc 97ebfedea0SLionel SambucThe private key to use. If not specified then the certificate file will 98ebfedea0SLionel Sambucbe used. 99ebfedea0SLionel Sambuc 100ebfedea0SLionel Sambuc=item B<-keyform format> 101ebfedea0SLionel Sambuc 102ebfedea0SLionel SambucThe private format to use: DER or PEM. PEM is the default. 103ebfedea0SLionel Sambuc 104ebfedea0SLionel Sambuc=item B<-pass arg> 105ebfedea0SLionel Sambuc 106ebfedea0SLionel Sambucthe private key password source. For more information about the format of B<arg> 107ebfedea0SLionel Sambucsee the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>. 108ebfedea0SLionel Sambuc 109ebfedea0SLionel Sambuc=item B<-dcert filename>, B<-dkey keyname> 110ebfedea0SLionel Sambuc 111ebfedea0SLionel Sambucspecify an additional certificate and private key, these behave in the 112ebfedea0SLionel Sambucsame manner as the B<-cert> and B<-key> options except there is no default 113ebfedea0SLionel Sambucif they are not specified (no additional certificate and key is used). As 114ebfedea0SLionel Sambucnoted above some cipher suites require a certificate containing a key of 115ebfedea0SLionel Sambuca certain type. Some cipher suites need a certificate carrying an RSA key 116ebfedea0SLionel Sambucand some a DSS (DSA) key. By using RSA and DSS certificates and keys 117ebfedea0SLionel Sambuca server can support clients which only support RSA or DSS cipher suites 118ebfedea0SLionel Sambucby using an appropriate certificate. 119ebfedea0SLionel Sambuc 120ebfedea0SLionel Sambuc=item B<-dcertform format>, B<-dkeyform format>, B<-dpass arg> 121ebfedea0SLionel Sambuc 122*0a6a1f1dSLionel Sambucadditional certificate and private key format and passphrase respectively. 123ebfedea0SLionel Sambuc 124ebfedea0SLionel Sambuc=item B<-nocert> 125ebfedea0SLionel Sambuc 126ebfedea0SLionel Sambucif this option is set then no certificate is used. This restricts the 127ebfedea0SLionel Sambuccipher suites available to the anonymous ones (currently just anonymous 128ebfedea0SLionel SambucDH). 129ebfedea0SLionel Sambuc 130ebfedea0SLionel Sambuc=item B<-dhparam filename> 131ebfedea0SLionel Sambuc 132ebfedea0SLionel Sambucthe DH parameter file to use. The ephemeral DH cipher suites generate keys 133ebfedea0SLionel Sambucusing a set of DH parameters. If not specified then an attempt is made to 134ebfedea0SLionel Sambucload the parameters from the server certificate file. If this fails then 135ebfedea0SLionel Sambuca static set of parameters hard coded into the s_server program will be used. 136ebfedea0SLionel Sambuc 137ebfedea0SLionel Sambuc=item B<-no_dhe> 138ebfedea0SLionel Sambuc 139ebfedea0SLionel Sambucif this option is set then no DH parameters will be loaded effectively 140ebfedea0SLionel Sambucdisabling the ephemeral DH cipher suites. 141ebfedea0SLionel Sambuc 142*0a6a1f1dSLionel Sambuc=item B<-no_ecdhe> 143*0a6a1f1dSLionel Sambuc 144*0a6a1f1dSLionel Sambucif this option is set then no ECDH parameters will be loaded effectively 145*0a6a1f1dSLionel Sambucdisabling the ephemeral ECDH cipher suites. 146*0a6a1f1dSLionel Sambuc 147ebfedea0SLionel Sambuc=item B<-no_tmp_rsa> 148ebfedea0SLionel Sambuc 149ebfedea0SLionel Sambuccertain export cipher suites sometimes use a temporary RSA key, this option 150ebfedea0SLionel Sambucdisables temporary RSA key generation. 151ebfedea0SLionel Sambuc 152ebfedea0SLionel Sambuc=item B<-verify depth>, B<-Verify depth> 153ebfedea0SLionel Sambuc 154ebfedea0SLionel SambucThe verify depth to use. This specifies the maximum length of the 155ebfedea0SLionel Sambucclient certificate chain and makes the server request a certificate from 156ebfedea0SLionel Sambucthe client. With the B<-verify> option a certificate is requested but the 157ebfedea0SLionel Sambucclient does not have to send one, with the B<-Verify> option the client 158ebfedea0SLionel Sambucmust supply a certificate or an error occurs. 159ebfedea0SLionel Sambuc 160*0a6a1f1dSLionel SambucIf the ciphersuite cannot request a client certificate (for example an 161*0a6a1f1dSLionel Sambucanonymous ciphersuite or PSK) this option has no effect. 162*0a6a1f1dSLionel Sambuc 163ebfedea0SLionel Sambuc=item B<-crl_check>, B<-crl_check_all> 164ebfedea0SLionel Sambuc 165ebfedea0SLionel SambucCheck the peer certificate has not been revoked by its CA. 166ebfedea0SLionel SambucThe CRL(s) are appended to the certificate file. With the B<-crl_check_all> 167ebfedea0SLionel Sambucoption all CRLs of all CAs in the chain are checked. 168ebfedea0SLionel Sambuc 169ebfedea0SLionel Sambuc=item B<-CApath directory> 170ebfedea0SLionel Sambuc 171ebfedea0SLionel SambucThe directory to use for client certificate verification. This directory 172ebfedea0SLionel Sambucmust be in "hash format", see B<verify> for more information. These are 173ebfedea0SLionel Sambucalso used when building the server certificate chain. 174ebfedea0SLionel Sambuc 175ebfedea0SLionel Sambuc=item B<-CAfile file> 176ebfedea0SLionel Sambuc 177ebfedea0SLionel SambucA file containing trusted certificates to use during client authentication 178ebfedea0SLionel Sambucand to use when attempting to build the server certificate chain. The list 179ebfedea0SLionel Sambucis also used in the list of acceptable client CAs passed to the client when 180ebfedea0SLionel Sambuca certificate is requested. 181ebfedea0SLionel Sambuc 182*0a6a1f1dSLionel Sambuc=item B<-no_alt_chains> 183*0a6a1f1dSLionel Sambuc 184*0a6a1f1dSLionel SambucSee the L<B<verify>|verify(1)> manual page for details. 185*0a6a1f1dSLionel Sambuc 186ebfedea0SLionel Sambuc=item B<-state> 187ebfedea0SLionel Sambuc 188ebfedea0SLionel Sambucprints out the SSL session states. 189ebfedea0SLionel Sambuc 190ebfedea0SLionel Sambuc=item B<-debug> 191ebfedea0SLionel Sambuc 192ebfedea0SLionel Sambucprint extensive debugging information including a hex dump of all traffic. 193ebfedea0SLionel Sambuc 194ebfedea0SLionel Sambuc=item B<-msg> 195ebfedea0SLionel Sambuc 196ebfedea0SLionel Sambucshow all protocol messages with hex dump. 197ebfedea0SLionel Sambuc 198ebfedea0SLionel Sambuc=item B<-nbio_test> 199ebfedea0SLionel Sambuc 200ebfedea0SLionel Sambuctests non blocking I/O 201ebfedea0SLionel Sambuc 202ebfedea0SLionel Sambuc=item B<-nbio> 203ebfedea0SLionel Sambuc 204ebfedea0SLionel Sambucturns on non blocking I/O 205ebfedea0SLionel Sambuc 206ebfedea0SLionel Sambuc=item B<-crlf> 207ebfedea0SLionel Sambuc 208ebfedea0SLionel Sambucthis option translated a line feed from the terminal into CR+LF. 209ebfedea0SLionel Sambuc 210ebfedea0SLionel Sambuc=item B<-quiet> 211ebfedea0SLionel Sambuc 212ebfedea0SLionel Sambucinhibit printing of session and certificate information. 213ebfedea0SLionel Sambuc 214ebfedea0SLionel Sambuc=item B<-psk_hint hint> 215ebfedea0SLionel Sambuc 216ebfedea0SLionel SambucUse the PSK identity hint B<hint> when using a PSK cipher suite. 217ebfedea0SLionel Sambuc 218ebfedea0SLionel Sambuc=item B<-psk key> 219ebfedea0SLionel Sambuc 220ebfedea0SLionel SambucUse the PSK key B<key> when using a PSK cipher suite. The key is 221ebfedea0SLionel Sambucgiven as a hexadecimal number without leading 0x, for example -psk 222ebfedea0SLionel Sambuc1a2b3c4d. 223ebfedea0SLionel Sambuc 224ebfedea0SLionel Sambuc=item B<-ssl2>, B<-ssl3>, B<-tls1>, B<-no_ssl2>, B<-no_ssl3>, B<-no_tls1> 225ebfedea0SLionel Sambuc 226ebfedea0SLionel Sambucthese options disable the use of certain SSL or TLS protocols. By default 227ebfedea0SLionel Sambucthe initial handshake uses a method which should be compatible with all 228ebfedea0SLionel Sambucservers and permit them to use SSL v3, SSL v2 or TLS as appropriate. 229ebfedea0SLionel Sambuc 230ebfedea0SLionel Sambuc=item B<-bugs> 231ebfedea0SLionel Sambuc 232ebfedea0SLionel Sambucthere are several known bug in SSL and TLS implementations. Adding this 233ebfedea0SLionel Sambucoption enables various workarounds. 234ebfedea0SLionel Sambuc 235ebfedea0SLionel Sambuc=item B<-hack> 236ebfedea0SLionel Sambuc 237ebfedea0SLionel Sambucthis option enables a further workaround for some some early Netscape 238ebfedea0SLionel SambucSSL code (?). 239ebfedea0SLionel Sambuc 240ebfedea0SLionel Sambuc=item B<-cipher cipherlist> 241ebfedea0SLionel Sambuc 242ebfedea0SLionel Sambucthis allows the cipher list used by the server to be modified. When 243ebfedea0SLionel Sambucthe client sends a list of supported ciphers the first client cipher 244ebfedea0SLionel Sambucalso included in the server list is used. Because the client specifies 245ebfedea0SLionel Sambucthe preference order, the order of the server cipherlist irrelevant. See 246ebfedea0SLionel Sambucthe B<ciphers> command for more information. 247ebfedea0SLionel Sambuc 248*0a6a1f1dSLionel Sambuc=item B<-serverpref> 249*0a6a1f1dSLionel Sambuc 250*0a6a1f1dSLionel Sambucuse the server's cipher preferences, rather than the client's preferences. 251*0a6a1f1dSLionel Sambuc 252ebfedea0SLionel Sambuc=item B<-tlsextdebug> 253ebfedea0SLionel Sambuc 254ebfedea0SLionel Sambucprint out a hex dump of any TLS extensions received from the server. 255ebfedea0SLionel Sambuc 256ebfedea0SLionel Sambuc=item B<-no_ticket> 257ebfedea0SLionel Sambuc 258ebfedea0SLionel Sambucdisable RFC4507bis session ticket support. 259ebfedea0SLionel Sambuc 260ebfedea0SLionel Sambuc=item B<-www> 261ebfedea0SLionel Sambuc 262ebfedea0SLionel Sambucsends a status message back to the client when it connects. This includes 263ebfedea0SLionel Sambuclots of information about the ciphers used and various session parameters. 264ebfedea0SLionel SambucThe output is in HTML format so this option will normally be used with a 265ebfedea0SLionel Sambucweb browser. 266ebfedea0SLionel Sambuc 267ebfedea0SLionel Sambuc=item B<-WWW> 268ebfedea0SLionel Sambuc 269ebfedea0SLionel Sambucemulates a simple web server. Pages will be resolved relative to the 270ebfedea0SLionel Sambuccurrent directory, for example if the URL https://myhost/page.html is 271ebfedea0SLionel Sambucrequested the file ./page.html will be loaded. 272ebfedea0SLionel Sambuc 273ebfedea0SLionel Sambuc=item B<-HTTP> 274ebfedea0SLionel Sambuc 275ebfedea0SLionel Sambucemulates a simple web server. Pages will be resolved relative to the 276ebfedea0SLionel Sambuccurrent directory, for example if the URL https://myhost/page.html is 277ebfedea0SLionel Sambucrequested the file ./page.html will be loaded. The files loaded are 278ebfedea0SLionel Sambucassumed to contain a complete and correct HTTP response (lines that 279ebfedea0SLionel Sambucare part of the HTTP response line and headers must end with CRLF). 280ebfedea0SLionel Sambuc 281ebfedea0SLionel Sambuc=item B<-engine id> 282ebfedea0SLionel Sambuc 283ebfedea0SLionel Sambucspecifying an engine (by its unique B<id> string) will cause B<s_server> 284ebfedea0SLionel Sambucto attempt to obtain a functional reference to the specified engine, 285ebfedea0SLionel Sambucthus initialising it if needed. The engine will then be set as the default 286ebfedea0SLionel Sambucfor all available algorithms. 287ebfedea0SLionel Sambuc 288ebfedea0SLionel Sambuc=item B<-id_prefix arg> 289ebfedea0SLionel Sambuc 290ebfedea0SLionel Sambucgenerate SSL/TLS session IDs prefixed by B<arg>. This is mostly useful 291ebfedea0SLionel Sambucfor testing any SSL/TLS code (eg. proxies) that wish to deal with multiple 292ebfedea0SLionel Sambucservers, when each of which might be generating a unique range of session 293ebfedea0SLionel SambucIDs (eg. with a certain prefix). 294ebfedea0SLionel Sambuc 295ebfedea0SLionel Sambuc=item B<-rand file(s)> 296ebfedea0SLionel Sambuc 297ebfedea0SLionel Sambuca file or files containing random data used to seed the random number 298ebfedea0SLionel Sambucgenerator, or an EGD socket (see L<RAND_egd(3)|RAND_egd(3)>). 299ebfedea0SLionel SambucMultiple files can be specified separated by a OS-dependent character. 300ebfedea0SLionel SambucThe separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for 301ebfedea0SLionel Sambucall others. 302ebfedea0SLionel Sambuc 303*0a6a1f1dSLionel Sambuc=item B<-status> 304*0a6a1f1dSLionel Sambuc 305*0a6a1f1dSLionel Sambucenables certificate status request support (aka OCSP stapling). 306*0a6a1f1dSLionel Sambuc 307*0a6a1f1dSLionel Sambuc=item B<-status_verbose> 308*0a6a1f1dSLionel Sambuc 309*0a6a1f1dSLionel Sambucenables certificate status request support (aka OCSP stapling) and gives 310*0a6a1f1dSLionel Sambuca verbose printout of the OCSP response. 311*0a6a1f1dSLionel Sambuc 312*0a6a1f1dSLionel Sambuc=item B<-status_timeout nsec> 313*0a6a1f1dSLionel Sambuc 314*0a6a1f1dSLionel Sambucsets the timeout for OCSP response to B<nsec> seconds. 315*0a6a1f1dSLionel Sambuc 316*0a6a1f1dSLionel Sambuc=item B<-status_url url> 317*0a6a1f1dSLionel Sambuc 318*0a6a1f1dSLionel Sambucsets a fallback responder URL to use if no responder URL is present in the 319*0a6a1f1dSLionel Sambucserver certificate. Without this option an error is returned if the server 320*0a6a1f1dSLionel Sambuccertificate does not contain a responder address. 321*0a6a1f1dSLionel Sambuc 322*0a6a1f1dSLionel Sambuc=item B<-nextprotoneg protocols> 323*0a6a1f1dSLionel Sambuc 324*0a6a1f1dSLionel Sambucenable Next Protocol Negotiation TLS extension and provide a 325*0a6a1f1dSLionel Sambuccomma-separated list of supported protocol names. 326*0a6a1f1dSLionel SambucThe list should contain most wanted protocols first. 327*0a6a1f1dSLionel SambucProtocol names are printable ASCII strings, for example "http/1.1" or 328*0a6a1f1dSLionel Sambuc"spdy/3". 329*0a6a1f1dSLionel Sambuc 330ebfedea0SLionel Sambuc=back 331ebfedea0SLionel Sambuc 332ebfedea0SLionel Sambuc=head1 CONNECTED COMMANDS 333ebfedea0SLionel Sambuc 334ebfedea0SLionel SambucIf a connection request is established with an SSL client and neither the 335ebfedea0SLionel SambucB<-www> nor the B<-WWW> option has been used then normally any data received 336ebfedea0SLionel Sambucfrom the client is displayed and any key presses will be sent to the client. 337ebfedea0SLionel Sambuc 338ebfedea0SLionel SambucCertain single letter commands are also recognized which perform special 339ebfedea0SLionel Sambucoperations: these are listed below. 340ebfedea0SLionel Sambuc 341ebfedea0SLionel Sambuc=over 4 342ebfedea0SLionel Sambuc 343ebfedea0SLionel Sambuc=item B<q> 344ebfedea0SLionel Sambuc 345ebfedea0SLionel Sambucend the current SSL connection but still accept new connections. 346ebfedea0SLionel Sambuc 347ebfedea0SLionel Sambuc=item B<Q> 348ebfedea0SLionel Sambuc 349ebfedea0SLionel Sambucend the current SSL connection and exit. 350ebfedea0SLionel Sambuc 351ebfedea0SLionel Sambuc=item B<r> 352ebfedea0SLionel Sambuc 353ebfedea0SLionel Sambucrenegotiate the SSL session. 354ebfedea0SLionel Sambuc 355ebfedea0SLionel Sambuc=item B<R> 356ebfedea0SLionel Sambuc 357ebfedea0SLionel Sambucrenegotiate the SSL session and request a client certificate. 358ebfedea0SLionel Sambuc 359ebfedea0SLionel Sambuc=item B<P> 360ebfedea0SLionel Sambuc 361ebfedea0SLionel Sambucsend some plain text down the underlying TCP connection: this should 362ebfedea0SLionel Sambuccause the client to disconnect due to a protocol violation. 363ebfedea0SLionel Sambuc 364ebfedea0SLionel Sambuc=item B<S> 365ebfedea0SLionel Sambuc 366ebfedea0SLionel Sambucprint out some session cache status information. 367ebfedea0SLionel Sambuc 368ebfedea0SLionel Sambuc=back 369ebfedea0SLionel Sambuc 370ebfedea0SLionel Sambuc=head1 NOTES 371ebfedea0SLionel Sambuc 372ebfedea0SLionel SambucB<s_server> can be used to debug SSL clients. To accept connections from 373ebfedea0SLionel Sambuca web browser the command: 374ebfedea0SLionel Sambuc 375ebfedea0SLionel Sambuc openssl s_server -accept 443 -www 376ebfedea0SLionel Sambuc 377ebfedea0SLionel Sambuccan be used for example. 378ebfedea0SLionel Sambuc 379ebfedea0SLionel SambucMost web browsers (in particular Netscape and MSIE) only support RSA cipher 380ebfedea0SLionel Sambucsuites, so they cannot connect to servers which don't use a certificate 381ebfedea0SLionel Sambuccarrying an RSA key or a version of OpenSSL with RSA disabled. 382ebfedea0SLionel Sambuc 383ebfedea0SLionel SambucAlthough specifying an empty list of CAs when requesting a client certificate 384ebfedea0SLionel Sambucis strictly speaking a protocol violation, some SSL clients interpret this to 385ebfedea0SLionel Sambucmean any CA is acceptable. This is useful for debugging purposes. 386ebfedea0SLionel Sambuc 387ebfedea0SLionel SambucThe session parameters can printed out using the B<sess_id> program. 388ebfedea0SLionel Sambuc 389ebfedea0SLionel Sambuc=head1 BUGS 390ebfedea0SLionel Sambuc 391ebfedea0SLionel SambucBecause this program has a lot of options and also because some of 392ebfedea0SLionel Sambucthe techniques used are rather old, the C source of s_server is rather 393ebfedea0SLionel Sambuchard to read and not a model of how things should be done. A typical 394ebfedea0SLionel SambucSSL server program would be much simpler. 395ebfedea0SLionel Sambuc 396ebfedea0SLionel SambucThe output of common ciphers is wrong: it just gives the list of ciphers that 397ebfedea0SLionel SambucOpenSSL recognizes and the client supports. 398ebfedea0SLionel Sambuc 399ebfedea0SLionel SambucThere should be a way for the B<s_server> program to print out details of any 400ebfedea0SLionel Sambucunknown cipher suites a client says it supports. 401ebfedea0SLionel Sambuc 402ebfedea0SLionel Sambuc=head1 SEE ALSO 403ebfedea0SLionel Sambuc 404ebfedea0SLionel SambucL<sess_id(1)|sess_id(1)>, L<s_client(1)|s_client(1)>, L<ciphers(1)|ciphers(1)> 405ebfedea0SLionel Sambuc 406*0a6a1f1dSLionel Sambuc=head1 HISTORY 407*0a6a1f1dSLionel Sambuc 408*0a6a1f1dSLionel SambucThe -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b. 409*0a6a1f1dSLionel Sambuc 410ebfedea0SLionel Sambuc=cut 411