- From: Bradford Wetmore <bradford.wetmore@oracle.com>
- Date: Tue, 21 Jul 2015 17:52:25 -0700
- To: ietf-http-wg@w3.org
We are working on our ALPN/H2 implementation for JDK 9, and want to
clarify some assumptions about intended ALPN/H2 interactions/operations.
RFC 7301 (ALPN) suggests that the ALPN value be chosen so that
certificate selection may take the chosen ALPN value into account:
1. Introduction
...Further, it would be
advantageous to allow certificate selection based on the negotiated
application protocol.
and
4. ...By placing ownership of protocol
selection on the server, ALPN facilitates scenarios in which
certificate selection or connection rerouting may be based on the
negotiated protocol.
If I'm reading the OpenSSL/NSS code right, they both do:
1. Protocol Selection
2. Extension Processing (including ALPN selection)
3. Ciphersuite selection
For SSL/TLS implementations such as OpenSSL/NSS that do iterative
ciphersuite selection, that means that a blacklisted ciphersuite could
be chosen for HTTP/2. This is discussed in RFC 7540:
Note that clients might advertise support of cipher suites that are
on the black list in order to allow for connection to servers that do
not support HTTP/2. This allows servers to select HTTP/1.1 with a
cipher suite that is on the HTTP/2 black list. However, this can
result in HTTP/2 being negotiated with a black-listed cipher suite if
the application protocol and cipher suite are independently selected.
So a couple of questions:
1. Are server sockets expected to support *BOTH* HTTP/2 and HTTP/1.1?
Depending on that answer:
2. Are you expecting clients/server to try non-blacklisted ciphersuites
first? e.g. select H2 for ALPN, prioritize H2-appropriate suites first,
select a suite and hope for the best?
I suppose we could do some pre-connect probing and disable any H2 suites
that we know won't have appropriate key material. If there are no
H2-appropriate suites left, we can delete H2 from the server's ALPN
list. But that ciphersuite selection may fail for other reasons.
3. If a ALPN of H2 is received along with a blacklisted suite, are
clients expected to provide their own fallback by opening a second
connection with H2 not in the ALPN list?
Connection#1: {"h2", "http/1.1"}
Connection#2: {"http/1.1"}
Thanks,
Brad
Received on Wednesday, 22 July 2015 00:53:23 UTC