What is the expected behavior when a server hello contains an
unexpected reply for a TLS extension (e.g. ALPN)?
Suppongo che tu sia quando dici "risposta inaspettata" che stai suggerendo che il server risponda con un valore "protocollo selezionato" ALPN che non è tra quelli proposti dal cliente.
Should I (as a client) terminate the connection or just ignore the
extension? Is it defined in the RFC?
Mentre RFC 7301 non è esplicito, credo che l'aspettativa implicita sia che il client debba interrompere l'handshake TLS - proprio come farebbe il server se non supportasse alcun protocollo pubblicizzato dal cliente:
In the event that the server supports no protocols that
the client advertises, then the server SHALL respond
with a fatal "no_application_protocol" alert.
Should the behavior be different for different extensions?
Diverse estensioni possono gestire diversamente questo caso: i due handler più comuni sono "abort the handshake" e "ignorano il tentativo di estensione". Per loro stessa natura, le estensioni sono spesso tolleranti a diversi livelli di supporto e maturità di implementazione.