The RFC only says the server “select[s]” from the ClientHello list.

There are two obvious ways, and openssl implements both.

“client preference” – server chooses the first entry in the client’s list 

that the server can support

“server preference” – server chooses the first entry in its own list 

that the client offers

libssl server by default does client preference but does server preference 

if you set option CIPHER_SERVER_PREFERENCE. Some applications using 

openssl can do this, notably apache httpd,and during the BEAST furor one 

widely recommended response was to configure httpd to prefer RC4. 

(Now RC4 seems to be threatened while BEAST has been mitigated 

client side, and this is no longer such a good idea.)

 

Other algorithms, such as randomly choosing a suite common to client 

and server (if there are more than one) would be legal, but silly.

 

TLSv1.2 as a protocol can support all suites implemented by openssl.

A given suite will be used only if implemented and (where applicable) 

configured on both the client and server. In particular, libssl server 

will agree a suite that uses RSA only if an RSA cert&key is configured,

similarly for DSS, and for ECC only if a cert&key is configured *and* 

it uses a curve and format agreed by the client. DH* and ECDH* suites 

also require that suitable ‘temporary’ parameters (or optionally keys) 

be available – through 1.0.1 either configured or via a callback.

(1.0.2 will apparently add new options?) Similarly PSK suites 

require PSK data is configured. Note that ECC, PSK, SRP, GCM, Camellia, 

SEED and ARIA suites are separate options not in the base RFC 

and thus a peer system can implement “TLS” without them.

 

TLSv1.1 and lower cannot support the suites labelled TLSv1.2. 

TLSv1.1 and TLSv1.0, and in openssl SSLv3, can support all suites labelled 

SSLv3, subject to the same conditions above. Technically the RFCs for 

ECC, PSK, SRP, and ciphers newer than 3DES only apply to TLS, because 

SSLv3 (and v2) weren’t IETF standards. openssl does implement them 

on SSLv3 if the peer agrees, but given the timeline I doubt 

any peer does except maybe AES.

 

Thus to answer your later question, ECDHE-(RSA,ECDSA)-RC4 

is officially supported for TLSv1.0,1.1,1.2 if RFC 4492 is (also) 

implemented, and for openssl server can be chosen if it has 

an appropriate key&cert and temporary parameters/key.

openssl can also do them on SSLv3 but others might not.

 

 

From: owner-openssl-us...@openssl.org [mailto:owner-openssl-us...@openssl.org] 
On Behalf Of Vladimir Belov
Sent: Monday, December 23, 2013 00:24
To: openssl-users@openssl.org
Subject: *** Spam *** What is the algorithm of choice cipher suite for 
connection by Server?

 

Hi,
On Server we have an ordered list of cipher suits. Server gets a cipher suits 
of client in ClientHello. What is the algorithm of choice cipher suite for 
connection by Server from client's list?
Is it simple so: server looks at its ciphers list from top to bottom and the 
first corresponding cipher suite that will be in ClientHello's cipher list will 
be chosen for connection. Or something else?

And the second question.
with command:
openssl ciphers -V
we can see cipher suits are determined as TLSv1.2 or SSLv3 cipher suits.
How can I know all cipher suits which will be use:
1) for TLS 1.2 connections
2) for TLS 1.1 connections
3) for TLS 1.0 connections
4) for SSL 3.0 connections

Reply via email to