I May Have a HTTP/2 Upgrade Request in ClientHello in Server App, But I Don't Know How to Parse ClientHello

Matt Caswell matt at openssl.org
Thu Jul 21 10:44:39 UTC 2022

On 21/07/2022 01:11, Osman Zakir wrote:
> Hello, everyone.
> I have this C++ server app I'm hosting on my computer (source code on 
> GitHub <https://github.com/DragonOsman/currency_converter> -- I'm using 
> Google Maps as a GUI, and it's basically a currency converter app).  I 
> was recently having SSL issues on it, but after sorting them out I have 
> another issue: this error came up:
>     Lines 625 and 626:
>     handshake: unsupported protocol (SSL routines,
>     tls_early_post_process_client_hello)
> ​This is likely a HTTP/2 upgrade request inside a TLS ClientHello 
> message, no?  And if it is, how do I parse the ClientHello message to 
> extract it and respond?

The unsupported protocol error usually means there is a mismatch between 
the supported TLS versions on the client and the server. For example if 
the server only supports TLSv1.3 and the client only supports TLSv1.2.


> Boost.Beast, the low-level HTTP/S and WebSocket on top of Boost.ASIO 
> that I'm using to handle HTTPS, doesn't support this and it also doesn't 
> directly support HTTP/2.  For HTTP/2 I could just relegate to a server 
> does support it, though I'll need one that supports POST requests unless 
> there's a way for me to use my own server code through a HTTP/2 proxy 
> server (hopefully this is possible).
> Anyway, would someone please help me figure out how to parse the 
> ClientHello for the request in question?  Thanks.

More information about the openssl-users mailing list