Blog

The OpenSSL Library now supports Encrypted Client Hello (ECH)

Previous posts about the upcoming OpenSSL 4.0 release:

  1. removing ENGINE code
  2. removing deprecated functions for creating or modifying custom METHODS
  3. no longer registering a function via atexit function

Summary

The OpenSSL Library now supports Encrypted Client Hello (ECH) specified in RFC 9849, which was published this month. Applications that implement this standard will be able to encrypt sensitive information that is currently transmitted in plaintext in the TLS 1.3 handshake. In particular, ECH can protect the client’s target server name from being revealed to third parties.

The OpenSSL Library no longer registers an atexit function

Previous posts about features removed from OpenSSL 4.0:

  1. ENGINE code
  2. deprecated functions for creating or modifying custom METHODS

Summary

The OPENSSL_cleanup() function is no longer registered to be called upon the termination of the process. This means the OpenSSL Library does not automatically free resources so the operating system reclaims them when an application exits.

For most users, this will have no impact since the memory is freed one way or the other.

OpenSSL 4.0 Alpha Repository Freeze Approaching

The OpenSSL Project is announcing the upcoming release of OpenSSL 4.0 Alpha, scheduled for March 10, 2026. As a result, the repository will be frozen before the release on February 24, 2026.

Custom method functions removed from the OpenSSL Library

Following on from the removal of ENGINE code, deprecated functions for creating or modifying custom METHODS will be removed from OpenSSL 4.0.

Summary

For a complete list of deprecated functions removed in OpenSSL 4.0, please see the ossl-removed-api documentation. They are divided into the following pull requests:

  • Custom ciphers methods (EVP_CIPHER_meth_*) were removed in PR #29299.
  • Custom message digest methods (EVP_MD_meth_*) were removed in PR #29366.
  • Custom private key methods (EVP_PKEY_meth_*) were removed in PR #29384.
  • Custom private key Abstract Syntax Notation One methods (EVP_PKEY_asn1_*) were removed in PR #29405. (These functions were deprecated in OpenSSL 3.6.)

Instead of using these methods, developers are encouraged to use the provider framework.

ENGINE code removed from the OpenSSL Library

OpenSSL 4.0, to be released in April 2026, is the first major release since 3.0 which replaced the ENGINE interface with Providers. Removing ENGINEs is a primary goal of this major release and this post describes the change agreed to by both the OpenSSL Corporation and OpenSSL Foundation.

Summary

All symbols defined in openssl/engine.h have been removed from the shared library in OpenSSL 4.0. Applications that use the ENGINE API will fail to compile using the default build settings. This behavior matches what happens in previous versions when building OpenSSL with the no-engine configuration option with current versions. Up-to-date applications should not include openssl/engine.h at all.

OpenSSL Library is moving to clang-format

The OpenSSL Library would like to modernise and streamline development processes, especially to ensure effective code review and make the project easier for contributors to contribute to.

As part of this effort, we will be making some changes to our coding style guidelines and adopting clang-format using the WebKit C coding style as enforced by clang-format. We will transition to using clang-format to check pre-submissions and ensure code follows the format portions of the style guide before PRs are reviewed.

OpenSSL 3.2 End Of Life

OpenSSL 3.2 series has reached its End of Life (EOL). As such it will no longer receive publicly available security fixes.

Contributors to the OpenSSL Library (September 2025)

September has come and gone, so it’s past time to recognize new contributors to the OpenSSL Library:

author date PR
xiaoloudongfeng 2025-09-02 fix length of digestinfo_sm3_der
Pkeane22 2025-09-07 Fixed typo
LuiginoC 2025-09-10 crypto/evp/bio_ok.c:Integer Overflow in BIO_f_reliable record parser leads to Out-of-Bounds Read
ritesh006 2025-09-11 doc: clarify SSL_SESSION_get0_hostname notes
jedenastka 2025-09-11 Fix cipher protocol ID type in docs
leesugil 2025-09-14 FIPS 186-5 auxiliary prime length check condition updated (Fixed #28526)
rodeka 2025-09-16 crypto/ml_dsa: fix public_from_private() error path to return failure
jonathimer 2025-09-18 Add Linux Foundation Health Score badge to README
bleeqer 2025-09-29 ts_conf: fix memory leak in TS_CONF_set_policies

Here are more details on a sample of these pull requests.