[openssl-users] OpenSSL - Session Resumption on an On-going Connection
Matt Caswell
matt at openssl.org
Thu Nov 22 11:56:23 UTC 2018
On 22/11/2018 11:15, Filipe Fernandes wrote:
>> You seem to be confused, and have not explained your requirements
>> clearly. What is your *goal*?
>
> My goal is to have the Openssl to "perform the TLS Resumption (initiated by the
> Hello Request message from the server or
> the Client Hello message from the client), in an ongoing TLS Session." (it's
> specifically stated on the spec, like this).
I think you need to get this spec clarified. It makes no sense. It seems to be
describing renegotiation, but uses the term resumption for it which has a
different meaning.
A handshake occurs between a client and a server at the start of a connection
and establishes the cryptographic parameters to be used for that connection
(including certificates/keys etc). Resumption refers to a type of handshake.
Resumptions handshakes are abbreviated forms of a full handshake. They are based
on the parameters established during a previous connection. So for example a
certificate is not exchanged because the same cert is used from the previous
connection.
Renegotiation refers to the process of starting a new handshake over an existing
TLS connection between a client and a server. Typically the objective is usually
either to update the keys, or to request a client certificate. Like any other
handshake it may be a full one or a resumption one.
Only a client can ever initiate a handshake. A server can *request* a
renegotiation by sending a HelloRequest message, but the client does not have to
honour it. A server cannot request a resumption.
>
>> What does "always on" mean to you?
>
> Always on, means that the socket connection is up for as long as it is possible,
> meaning that the socket is not closed and it keeps exchanging information all
> the time (server<->client)
Resumption does not give you this. Renegotiation does.
>
>> Only clients can resume previous
>> sessions, when reconnecting to a server. Is that what you're trying
>> to do? (Implement a server with a session cache for client resumption?
>
> I'm developing the server side with OpenSSL 1.0.2. And it supports cache (I've
> activated it on the method SSL_CTX_set_session_cache_mode).
>
>> Support session tickets? Is there just one server or a server "farm"?
>> Do the clients support resumption?)
>
> There's only 1 server, not a farm.
>
> How can I tell if the client supports resumption?
>
>
>> Or are you trying to periodically rekey a long-running connection?
>
> Maybe this is it.
>
> For me, Renegotiation is request "everything" (new pubkey, certificates, etc)
A renegotiation is a new handshake over an existing connection. It may use a
full handshake (certificates exchanged etc), or an abbreviated resumption
handshake (e.g. doesn't exchange certificates again). Only the client gets to
decide whether to attempt a resumption.
> Resumption, is just to refresh the keys? I'm a little confused here.
No. Resumption is an abbreviated handshake. It may be used at the start of a new
connection or as part of a renegotiation handshake. In either case it is
abbreviated because it is based on the parameters established during an earlier
connection.
Matt
>
>>
>> Or something else?
>
> I think this is it :)
>
>
> On Wed, 21 Nov 2018 at 23:12, Viktor Dukhovni <openssl-users at dukhovni.org
> <mailto:openssl-users at dukhovni.org>> wrote:
>
> On Wed, Nov 21, 2018 at 05:45:19PM +0000, Filipe Fernandes wrote:
>
> > I've followed your example, and it looks like the server is doing what it's
> > supposed to, however, I'm getting a disconnect from the server when the
> > session expires. Which should not happen, and I can't seem to find a reason
> > for this to be happening.
> >
> > As previously said, I'm developing a server that handles always-on TLS
> > connections, and I'm trying to perform a session resumption.
>
> I thought you wanted renegotiation, not resumption, servers can't
> do "resumption", because resumption is what you do to avoid a full
> handshake on a *new* connection, and only the client can reconnect.
>
> You seem to be confused, and have not explained your requirements
> clearly. What is your *goal*?
>
> What does "always on" mean to you? Only clients can resume previous
> sessions, when reconnecting to a server. Is that what you're trying
> to do? (Implement a server with a session cache for client resumption?
> Support session tickets? Is there just one server or a server "farm"?
> Do the clients support resumption?)
>
> Or are you trying to periodically rekey a long-running connection?
>
> Or something else?
>
> --
> Viktor.
> --
> openssl-users mailing list
> To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
>
>
More information about the openssl-users
mailing list