Q1: Is this ClientHello ALPN list valid under RFC 7301?
Multiple ChoiceA client sends three protocol identifiers: h2, an empty byte string, and http/1.1. The implementation proposes ignoring the empty entry and continuing.
Scope: RFC 7301 defines per-connection application-protocol negotiation for the TLS versions current when it was published. TLS 1.3 carries the server selection in EncryptedExtensions rather than ServerHello. ALPN selects a protocol; it does not authenticate an agent, authorize a task, or bind two separately terminated TLS connections.
A client sends three protocol identifiers: h2, an empty byte string, and http/1.1. The implementation proposes ignoring the empty entry and continuing.
The client advertises h2 then http/1.1. The server supports both and orders its own preference as http/1.1 then h2.
A server processes ALPN, supports only http/1.1, and receives a ClientHello whose only advertised protocol is h2.
A client offers h2 and http/1.1. TLS completes, but the client reports no negotiated ALPN value and the server returned no ALPN extension.
The server returns an ALPN selection of h2, then sends HTTP/1.1 application data on the same TLS connection because its backend pool changed.
A previous session negotiated h2. During resumption, the new ClientHello offers only http/1.1, which the server supports.
A privacy review claims that using TLS 1.3 makes the complete ALPN exchange invisible to an ordinary on-path observer.
An A2A gateway terminates a client TLS connection that selected h2. It opens a separate TLS connection to a backend and forwards a header saying external-alpn=h2. The backend proposes treating that header as proof of the original secure channel, agent identity, grant holder, and task authorization.