Hi Susan, Is it so, that TS_SSL_CERT_HOOK will (could?) be also called for server certificates inside ServerHello handler?
In this case ATS, being a SSL proxy, could provide a way to validate server certs chain and prevent a MITM attack if browser (for example) has 3rd party Root CA installed. -Lev 2015-01-27 21:58 GMT+02:00 Susan Hinrichs <shinr...@network-geographics.com>: > I've rejiggered things to be in a single callback, and I think it looks a > lot simpler for the plugin writer. As you noted multiple callbacks can be > confusing. > > I'm going to get my changes rest over night and post them tomorrow for > review. > > > > On 1/27/2015 11:04 AM, Roland Zink wrote: >> >> It is quite possible that the SNI option is used to select an appropriate >> certificate (usually web servers do this), when a plugin try to do this then >> the existence of more than one callback to do this could be confusing. SNI >> is a TLS option but there are others like ALPN so all of them could >> potential be in one callback. >> >> Regards, >> Roland >> >> -----Original Message----- >> From: Susan Hinrichs [mailto:shinr...@network-geographics.com] >> Sent: Tuesday, January 27, 2015 5:34 PM >> To: dev@trafficserver.apache.org >> Subject: Re: Certificate process in openssl 1.0.2 >> >> >> 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. >>>> >>>> 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? >> >>>> What are people's thoughts? >>>> >>>> Thanks, >>>> Susan >>>> >>>> On 1/27/2015 10:08 AM, Susan Hinrichs wrote: >>>>> >>>>> Hi All, >>>>> >>>>> With 1.0.2 openssl expanded their support of the certificate callback >>>>> to handle pausing processing during the SSL handshake negotiation. This >>>>> replaces the functionality I added to the SNI callback in my patch for >>>>> openssl 1.0.1. >>>>> >>>>> With TS-3319, I'm updating the ATS callback logic to support the >>>>> certificate callback if you are compiling against openssl 1.0.2. >>>>> >>>>> There is a new hook constant, TS_SSL_CERT_HOOK. If you had a SNI >>>>> callback that was pausing the handshake to make decisions about the >>>>> certificate, you can move it from the TS_SSL_SNI_HOOK to the >>>>> TS_SSL_CERT_HOOK. >>>>> >>>>> I'm finishing tidying up TS-3319. It should be ready later today or >>>>> tomorrow. >>>>> >>>>> Susan > > -- -Lev