Home ⌂Doc Index ◂Up ▴

TLS: ESNI support in curl and libcurl

Summary

ESNI means Encrypted Server Name Indication, a TLS 1.3 extension which is currently the subject of an IETF Draft.

This file is intended to show the latest current state of ESNI support in curl and libcurl.

At end of August 2019, an experimental fork of curl, built using an experimental fork of OpenSSL, which in turn provided an implementation of ESNI, was demonstrated interoperating with a server belonging to the DEfO Project.

Further sections here describe

Resources needed

To build and demonstrate ESNI support in curl and/or libcurl, you will need

The following set of resources is currently known to be available.

Set Component Location Remarks
DEfO TLS library sftcd/openssl Tag esni-2019-08-30 avoids bleeding edge
curl fork niallor/curl Tag esni-2019-08-30 likewise
instructions ESNI-README

Progress

PR 4011 (Jun 2019) expected in curl release 7.67.0 (Oct 2019)

TODO

Additional detail

PR 4011

TLS: Provide ESNI support framework for curl and libcurl

The proposed change provides a framework to facilitate work to implement ESNI support in curl and libcurl. It is not intended either to provide ESNI functionality or to favour any particular TLS-providing backend. Specifically, the change reserves a feature bit for ESNI support (symbol CURL_VERSION_ESNI), implements setting and reporting of this bit, includes dummy book-keeping for the symbol, adds a build-time configuration option (--enable-esni), provides an extensible check for resources available to provide ESNI support, and defines a compiler pre-processor symbol (USE_ESNI) accordingly.

Proposed-by: @niallor (Niall O'Reilly)\ Encouraged-by: @sftcd (Stephen Farrell)\ See-also: this message

Limitations: - Book-keeping (symbols-in-versions) needs real release number, not 'DUMMY'.

References

Cloudflare blog: Encrypting SNI: Fixing One of the Core Internet Bugs

Cloudflare blog: Encrypt it or lose it: how encrypted SNI works

IETF Draft: Encrypted Server Name Indication for TLS 1.3




Home ⌂Doc Index ◂Up ▴