> Because it means that if the client does not understand DC, then it must 
> reject the certificate, ...

This is the desired behavior, as far as I understand.

> ... but if client understands DC, it can accept it even in non-DC contexts.
I don't see why this is nonsensical. One way to understand this is that the 
server is presenting a certificate that it only wants to use with DC-capable 
clients. Perhaps noone would want to actually use this configuration, but I 
don't see why it should be deemed invalid.

> The other mismatch case also has well-defined technical meaning, it
> means that client that does not understand DC can use the certificate,
> but client that understands DC can only use it in DC context.
I don't quite understand. The issue I believe you pointed out is that when the 
extension is non-critical, but the strict flag is set, the server will be 
compelled to serve a DC even if the client doesn't support it. The relevant 
text (you'll have to look at the source on GitHub) is: "The extension MAY be 
marked crititcal. (See Section 4.2 of [RFC5280].) If the strict boolean is set 
to true, then the server MUST use delegated credential in the handshake; if no 
delegated credential is offered, then the client MUST abort the handshake with 
an “illegal_parameter” alert." A client who doesn't speak DC will either abort 
with an "unexpected_message" alert, or if it ignores the extension, then 
verification of the handshake will fail, since it's using the end-entity 
certificate public key, and not the DC public key.

Thus, I believe the only valid configurations are:

  *   strict=true, crit=true;
  *   strict=false, crit=true; and
  *   strict=false, crit=false.

The revised text should be:
"If the strict boolean is set to true, then the extension MUST be marked 
critical; otherwise it MAY be marked non-crititcal. If the strict boolean is 
set to true, then the server MUST use delegated credential in the handshake; if 
no delegated credential is offered, then the client MUST abort the handshake 
with an “illegal_parameter” alert.

-Chris

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to