DEfO project LogoDeveloping ECH for OpenSSL (DEfO)

The encrypted ClientHello (ECH) mechanism (draft-spec) is a way to plug a few privacy-holes that remain in the Transport Layer Security (TLS) protocol that's used as the security layer for the web. OpenSSL is a widely used library that provides an implementation of the TLS protocol. The DEfO project is developing an implementation of ECH for OpenSSL, and various clients and servers that use OpenSSL as a demonstration and for interoperability testing. DEfO was initially funded by the Open Technology Fund, and subsequently by the National Democratic Initiative. Tolerant Networks Ltd. and people from the Guardian Project are doing the work in DEfO.

This site is for ECH (and ESNI, which is the name for an earlier version of ECH) interoperability testing. The matrix below indicates the various combinations of draft specification and server technology supported here. We aim to more fully fill in and expand that matrix over time. `

This is not a highly-scalable hugely-tested thing - let us know if you find any issues, but do expect to find issues - that's what this site is for after all!

As of 20211130 we've done some good interop testing with our draft-13 code. That's the latest interop target. We seem to work fine with boringssl and Cloudflare.

Earlier (20210609), our clients and servers were based on draft-10 of the ECH spec, which was the agreed interop target at that point. Back in 2019 we deployed draft-02 as some versions of firefox supported that at the time.


So what's deployed here is:

Server Technology draft-13 draft-10 (now turned off) draft-02 (very old, also off)
OpenSSL s_server for "normal" or for one that forces HRR to P-384
lighttpd 1.4
haproxy - haproxy shared mode (haproxy terminates TLS) - haproxy split mode (haproxy only decrypts ECH)
N/A - skipped to draft-13 N/A - no draft-02 version

ECH public keys for those servers are published in the DNS. For ports 12413 and 12414 (the haproxy services) we don't rotate those keys. For ports 8413, 8414, 9414, 10413 and 11413 we are currently publishing one HTTPS RR containing 3 public keys: the first is a long term ECH public key, the other two are short-term keys. Short term keys are usable for three hours, but only published for two hours, after which they are no longer published but are still usable for the third hour. A new short term key is generated hourly, so we publish 2 short term keys at any given moment. All 3 ECHConfig values are inside one ECHConfigList.

In addition, to help with testing, we are publishing some "broken" or "odd" HTTPS RRs for port 13413. Those will also change hourly, and you can find details here.

As of 2021-12-01, we've turned off the servers for draft-10 and draft-02. Happy to turn those back on if needed, just send us mail.


At the time of writing no browser yet supports draft-13. So to test you need to build from source for either our openssl s_client or curl, or use one of the Java clients we've developed that run on top of Conscrypt/boringssl..

Contact us at

More implementations

The TLS WG maintain a page with information about our and other implementations.

Tolerant Networks Logo
This fine domain brought to you by My-Own.Net a Tolerant Networks Limited production.
Last modified: 2021-09-11, but who cares?
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.