2012/11/6 Dave Thompson <dthomp...@prinpay.com>:
>> From: owner-openssl-us...@openssl.org On Behalf Of Frediano Ziglio
>> Sent: Saturday, 03 November, 2012 10:26
>
>>   I'm searching for a way to pass a TLS session between two programs
>> under Unix. I can use unix sockets to send the file descriptor but I
>> don't know how to request to OpenSSL crypto information (like
>> algorithm used and key) in order to pass to the other process.
>>
> Do you mean session or connection? Those aren't the same thing in SSL/TLS.
>
> A *connection* is an active thing, consisting of a socket TCP connection,
> over which handshake is done (and optionally re-done) and data sent and
> received (usually) encrypted and MACed. It is represented in OpenSSL by
> an SSL object (which is typedef to struct ssl_st), which has lots of
> pointers to lots of other things to many levels. I see no supported
> way to serialize or otherwise move an SSL to another program.
>

Yes, it's a connection, not a session in this case that I want to "move".

So as you say there is no currently a way to move a connection from a
process to another.

Thanks

> A *session* is basically the results of a full handshake, specifying
> ciphersuite, authentication, master-secret and related parameters
> for a (logical) client and server pair. Multiple connections can
> reuse the same session. The first connection does full handshake,
> and the resulting session is remembered somewhere, typically with
> a time limit such as an hour; subsequent connections using the same
> (remembered) session do an abbreviated handshake which identifies
> the session and thereby the master-secret, then skips to session-key
> derivation and activation with ChangeCipherSpec and Finished.
> This is called "resumption", which is slightly misleading because it can
> be used for concurrent connections: you can do full handshake on conn#1,
> end conn#1, then start conn#2 to "resume" the session; or you can do full
> conn#1, then start conn#2 to "resume" while conn#1 is still active.
>
> There are two ways to do sessions. The classic way is for server to
> assign an id, and client and server each remember it under that id.
> For servers handling very large numbers of clients (e.g. google)
> or subject to denial-of-service attacks (ditto), RFC 4507 added an
> alternate method where the server securely wraps the session info and
> returns it as a "ticket" to the client; the client can subsequently
> create a new connection using that session by providing the ticket,
> unless the server decides to reject (perhaps because it's too old).
>
> OpenSSL implements both. It can cache sessions in SSL_CTX which can be
> reused/shared by multiple SSL objects (connections) in the same process,
> although by default it enables cache only for server because the client
> selection logic requires application assistance. As others have said,
> it can DERify or PEMify an SSL_SESSION object for external sharing
> e.g. in a file, a database, or passing over over a pipe or similar.
> A ticket is already a byte string.
>
> Note that connections re-using a session are intended to be the same
> "parties"; this doesn't necessarily mean the same IPaddresses or the
> same machines, although those are reasonable approximations. But it
> should not exceed the authentication done, if any: if a session was
> created with server auth, it should be shared only with other servers
> using the same server cert(s), or a ticket should be accepted only by such
> (since the servers must share a secret key to decrypt the ticket anyway);
> if it was created with client auth, the client should share only with
> other clients using same client cert(s).
>
>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to