Status: Untriaged
Owner:
j...@chromium.org
CC:
j...@chromium.org,
a...@chromium.org,
w...@chromium.org,
rsl...@chromium.org
Labels: Type-Bug Pri-2 OS-Android Area-Internals Internals-Network-SSL
New issue 131769 by
j...@chromium.org: Chromium Android fails when SSL
server gives a empty protocol list in NPN extension in a ServerHello
message.
http://code.google.com/p/chromium/issues/detail?id=131769
Description of the Issue:
Chromium Android fails when SSL server gives a empty protocol list in NPN
extension in a ServerHello message.
When visiting
https://www.ossifrage.net/ by using Chromium Android,
gets "Error 2 (net::ERR_FAILED): Unknown error". The site works fine in
desktop chrome and in the android browser.
Reproducibility:
just try to visit
https://www.ossifrage.net/.
After investigation. the failure is caused by server doesn't give any
advertised protocols in TLS "Next Protocol Negotiation" extension in a
ServerHello message.
Adam(cced) have proposed a new TLS extension: "Next Protocol Negotiation"
(aka NPN) since 2010 and recently added in openssl. You can find the
specification on
http://tools.ietf.org/id/draft-agl-tls-nextprotoneg-03.html or
https://technotes.googlecode.com/git/nextprotoneg.html.
In the specification of NPN, it says "The extension_data field of a
next_protocol_negotiation extension in a ServerHello contains an optional
list of protocols advertised by the server.", which means the server may
not send the protocol list in NPN extension in a ServerHello message. Then
in "Protocol selection" phase, the spec says
"It's expected that a client will have a list of protocols that it
supports, in preference order, and will only select a protocol if the
server supports it. In that case, the client SHOULD select the first
protocol advertised by the server that it also supports. In the event that
the client doesn't support any of server's protocols, or the server doesn't
advertise any, it SHOULD select the first protocol that it supports."
Seems Chromium NSS implementation handles the case that the server doesn't
advertise any protocols, but Chromium openssl implementation doesn't.