- From: Eric Rescorla <ekr@rtfm.com>
- Date: Tue, 15 Nov 2016 06:04:43 +0900
- To: Emily Stark <estark@google.com>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CABcZeBNuoiqKZQ4eWS6KJnwaeeCVzw6zmozf3T=jQJajgerSVg@mail.gmail.com>
On Sun, Nov 13, 2016 at 9:47 PM, Emily Stark <estark@google.com> wrote: > Hi, thanks for the comments. Replies inline. > > > Overall: > > Is there a reason to not have this be attached to the HSTS header (or, > > I guess more weakly to HPKP)? The syntax seems like it allows it. It > > seems like we go to all the trouble of making these headers extensible > > (indeed, the syntax in S 2.1) seems almost identical to HSTS but then > > we define a new header each time. > > If we try to attach it to HSTS or HPKP, the syntax gets kind of > clunky, which according to my understanding is one of the main reasons > that HPKP ended up as a separate header too. For example, one might > want separate max-ages for HSTS and Expect-CT, and one might want to > configure a report-uri but it should be clear that the report-uri > applies to Expect-CT but not to HSTS, and then you end up with > something like this: > > Strict-Transport-Security: max-age=31536000; expect-ct-enforce; > expect-ct-max-age=86400; expect-ct-report-uri=https://... > > which I don't think would be the end of the world, but it does feel > kind of clunky and error-prone to me. > In general, my intuition would be that all these parameters other than the policy should be the same. Is there some compelling use case fo why they should not? > At least, it would be nice to merge the report-uri function/description. > > I am probably missing something, but I don't see the text that defines > > what the actual semantics of enforcing CT are. The document says stuff > > like "The UA evaluates each connection to an Expect-CT host for > > compliance with the UA's Certificate Transparency (CT) policy" which > > leads me to believe that different UAs might have different policies. > > Assuming I am correct, this seems like a recipe for interop problems, > > even with the compliance checking in S 2.3.1. Consider the case where > > a UA's policy is that you must have CT for every cert in the chain > > and the operator has two certs, one from a CA which has CT for every > > cert in the chain and another from a CA which has CT just for the EE > > cert. If the client gets Expect-CT from a host with the first cert, > > then it will fail trying to connect to a host with the second cert. > > It is indeed the intention that different UAs can have different > policies. I think this reflects the reality that browser are not > necessarily planning to have identical CT policies > (https://groups.google.com/d/msg/mozilla.dev.security.policy/VJYX1Wnnhiw/ > ZaJBaKfKBQAJ). > That is, eventually, when browsers require CT for all certificates, > site owners will have to face this same problem of making sure that > all their certificate chains are compliant with the CT policies of all > the UAs that they care about. So I guess I see the interop problem as > somewhat separate, perhaps something that should be addressed on its > own when the CT ecosystem and implementations have matured enough that > UAs are able to standardize on one policy...? > > To put it another way, I see Expect-CT as a way that individual sites > can opt in to the future early ("the future" being when browsers > require CT for all certificates), and the future is quite possibly > different policies in different browsers, at least for some amount of > time. The problem is that as written the future is likely to involve a lot of bustage. > S 2.1.3. > > What's the rationale for not caching the directive in report-only mode. > > If the purpose of the report-only mode is to tell you when you have > > nonconforming servers, then don't you want to be able to turn it on > > on server A and detect hwen server B is broken? That seems like it > > doesn't work if you don't cache. > > I'm tempted to say "because that's how HPKP does it", but that's > probably not the answer you're looking for. :) I'd expect that sites > would generally serve the report-only header on all responses > unconditionally. I can't really think of a common misconfiguration > scenario that would cause a CT violation and would *also* cause the > header to not be served, but maybe that's a failure of imagination on > my part. > Two different independent servers with the same name behind a load balancer? Or a server farm where policies are rolled out slowly. -Ekr > > > > > -Ekr > >
Received on Monday, 14 November 2016 21:05:56 UTC