ALPN Status

David Benjamin edited this page Feb 16, 2016 · 33 revisions

This page tracks implementation status of ALPN.

Language Library Status Notes
C OpenSSL released as of 1.0.2
C GnuTLS released as of 3.2.0
C NSS released client and server support
C PolarSSL released since 1.3.6
Python native in 3.5 and 2.7.10 OpenSSL based
Python tlslite requested
Python pyOpenSSL released 0.15.0, with cryptography 0.9
Go native released as of 1.4
C++ yaSSL requested
JavaScript NodeJS released as of 5.0.0
Ruby native released as of 2.3.0, OpenSSL-based
C SChannel released Added in Windows 8.1 / Server 2012 R2
Java android released Added in Android 4.4
Java jetty released
Haskell warp hackage released
Lua luaossl released Added in 20150422

Note that some client implementations deal very poorly if a server sends both ALPN and NPN in the ServerHello. When a server responds negotiating a protocol via ALPN in the ServerHello, it must not also send a list of protocols for NPN negotiation as well.