What does ALPN, server did not agree to a protocol mean?

It may be that the server does not support ALPN. For example, Debian 8.0 (with OpenSSL 1.0.1k) does only support NPN 2. But Ubuntu 16.04 ship OpenSSL 1.0.2g, which support ALPN, so I'm not sure this is the issue.

I don't think it could cause HTTP 400 errors, except if the server enforce HTTP2.