On 1/29/2015 1:16 PM, James Peach wrote:
On Jan 27, 2015, at 9:58 AM, Susan Hinrichs <shinr...@network-geographics.com> 
wrote:


On 1/27/2015 11:12 AM, James Peach wrote:
On Jan 27, 2015, at 8:34 AM, Susan Hinrichs <shinr...@network-geographics.com> 
wrote:


On 1/27/2015 10:30 AM, James Peach wrote:
On Jan 27, 2015, at 8:18 AM, Susan Hinrichs <shinr...@network-geographics.com> 
wrote:

Originally, I was planning on leaving in plugin support for both the SNI 
callback and the cert callback.  But as I reflect, I question that decision.  I 
think it adds complexity without giving more power to the plugin writer.

Both callbacks take place at the same point in the handshake.  From both 
callbacks you can set the certificate.  Depending on the version and patch 
level, only one of the callbacks will let you pause processing.

Perhaps it is better to support only point for the plugin to callback after the 
client hello during the handshake processing? If we did that, ATS could adapt 
depending on the linked version of openssl and the plugin would not change.  
I'd still add a TS_SSL_CERT_HOOK for clarity, but I'd make it the same value as 
TS_SSL_SNI_HOOK.
Why do you need to make this change? What is the compatibility impact?
Well we do need to support the certificate callbacks in openssl 1.0.2, so we 
have a means to pause handshake processing to load certificates, etc in a stock 
version of openssl.
Sorry I wasn't especially clear. I intended to ask why we need to change the 
hook name? Are the hooks so different that we can't do the right thing under 
the covers?
Ultimately, I think the name TS_SSL_CERT_HOOK is clearer.  From the plugin 
writer's perspective, the callback is being used for certificate processing.

But I'm proposing keeping TS_SSL_SNI_HOOK and just having TS_SSL_CERT_HOOK as 
an alias for the time being.

If openssl 1.0.1 is linked, it would execute the plugin's callback during the 
SNI callback.  If openssl 1.0.2 is linked, it would execute the plugin's 
callback during the certificate callback.
Did openssl 1.0.1 contain your patch? If there is no released version of 
openssl that contains the original callback you added, what is is that we need 
to support?
My patch was not rolled into open ssl.  The only reason to continue to support 
it is that we had previously supported it.  If you are unable to move to 
openssl 1.0.2, then at least you can patch up openssl 1.0.1 (though if you can 
run with a patched version you can likely upgrade too).

My second idea, would have the least impact upon people who have already 
invested effort in writing plugins on the SNI callback.

Judging from your questions, you don't see a reason to support both a SNI 
callback and a certificate callback either.  Is that right?
I don't really know. Are they different in the new OpenSSL API?
The certificate callback does more since it is also called on client 
certificate processing (if that is involved in the handshake).

On reflection, I don't think the SNI callback does anything more for us than 
the certificate callback.  The servername is available in both.  Both are 
executed after the client hello before ATS sends out any handshake messages.
Ok, then I think we should remove support for the non-upstream patch ASAP.

The I'm writing things, if you have openssl 1.0.2, the TS_SSL_CERT_HOOK/TS_SSL_SNI_HOOK will be triggered from the certificate callback.

Otherwise it will be triggered from the SNI callback. The server side cert callback does not exist before 1.0.2. If you have the 1.0.1 patch installed, you can pause processing from the callback.

In practice, I would assume most people who care to pause processing at this point will move to openssl 1.0.2.

J

Reply via email to