I see this quite regularly when using various calls in curl.

I'm not sure if its the root cause to some of my returns resulting in error 400 but as a newbie just curious more than anything.

2 Answers 2


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.


From Craig Hicks's excellent answer to ""server certificate verification OK" but "ALPN, server did not agree to a protocol"":

Exactly what this line

* ALPN, server did not agree to a protocol

means is still a mystery, but I'm guessing it means either (1) not agreeing to HTTP/2, or less likely (2) the client asked if it continue without authorization and was refused, and thereupon used authorization. A truly bad choice of language for diagnostic output. Google returns thousands of results for that literal expression.

I did an HTTP2 test (tools.keycdn.com/http2-test used in HBruijn's answer to a similar question) on a site that returned the same line, and got this:

HTTP/2 protocol is not supported.
ALPN extension is not supported.

I.e. it would seem that the ALPN, server did not agree to a protocol line may show up simply because the endpoint doesn't support ALPN (Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension for application layer protocol negotiation).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .