> If example.com serves up a policy with includeSubdomains. And
> sub.example.com serves up a policy without includeSubdomains,
> max-age=0, and redirects to http://sub.example.com.
>
> I first visit example.com. And then I visit sub.example.com. What
> happens and where is this defined?
Ok, good question, I'll try to tease this apart a bit...
1. "load" of https://example.com yields, say,..
Strict-Transport-Security: max-age=31536000; includeSubdomains
note: receipt of the above HSTS Policy denotes example.com as an Known HSTS
Host (with includeSubdomains asserted) if it was not already so noted [1].
2. if a subsequent "load" of https://sub.example.com [0] (sub.example.com is
not as yet noted as an HSTS Host) yields..
Strict-Transport-Security: max-age=0
Location: http://sub.example.com
..then, this newly-asserted HSTS Policy (for sub.example.com) ought to be
"noted" per the HSTS storage model [2] since its domain name is not a
"congruent match" for "example.com" [3] -- but it is declaring a max-age of
zero, which would imply not noting it due to the NOTE in [5].
Regardless, due to the "URI Loading and Port Mapping" algorithm [4],
example.com's HSTS Policy will override sub.example.com's declared policy
(if it is noted by some errant UA). Thus the subsequent load of the
Location-specified resource ("the redirect") will have it's URI scheme
translated to "https" per [4], and the redirect will be essentially idempotent.
This will continue to be the situation until and if example.com rescinds
it's assertion of includeSubdomains or it's entire HSTS Policy. I.e.,
sub.example.com may declare an HSTS Policy, and it will be duly noted by
UAs, but it will be overruled by example.com's policy (until the latter is
altered per the foregoing).
This situation is implicated in the discussions in [6], but not explicitly
explained.
If anyone finds bug(s) in this analysis, please raise them.
HTH,
=JeffH
[0] or of http://sub.example.com which will become https://sub.example.com
per [4] due to the HSTS Policy established above.
[1] Strict-Transport-Security Response Header Field Processing
https://tools.ietf.org/html/rfc6797#section-8.1
[2] Noting an HSTS Host - Storage Model
https://tools.ietf.org/html/rfc6797#section-8.1.1
[3] Known HSTS Host Domain Name Matching
https://tools.ietf.org/html/rfc6797#section-8.2
[4] URI Loading and Port Mapping
https://tools.ietf.org/html/rfc6797#section-8.3
[5] The max-age Directive
https://tools.ietf.org/html/rfc6797#section-6.1.1
[6] Implications of includeSubDomains
https://tools.ietf.org/html/rfc6797#section-11.4
end
_______________________________________________
websec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/websec