/changelogs/openssl/openssl-3-to-4
OpenSSL 3.x to 4.0: removed features and breaking changes
The commands on this page have not been executed by our verification runner yet.updated 2026-10-20
- tool
- OpenSSL
- versions
- 3.x → 4.0
OpenSSL 4.0.0 was released on 2026-04-14. For applications that only use TLS through the high-level API the upgrade from 3.x is usually a rebuild; projects that still use engines, SSLv3, custom EVP methods or parse openssl -text output need changes. OpenSSL 3.5 remains the LTS release until 2030-04-08, so there is no rush for systems that want stability.
Removed
| Removed in 4.0 | Replacement |
|---|---|
| Engines (ENGINE_* API, -engine options) | providers (OSSL_PROVIDER) |
| SSLv3 | TLS 1.2 / TLS 1.3 |
| SSLv2-format Client Hello | — |
| c_rehash script | openssl rehash |
| openssl ca -msie-hack | — |
| Custom EVP_CIPHER, EVP_MD, EVP_PKEY, EVP_PKEY_ASN1 methods | providers |
| Fixed-version method functions (e.g. TLSv1_2_method) | TLS_method() with SSL_CTX_set_min/max_proto_version() |
| ERR_get_state(), ERR_remove_state(), ERR_remove_thread_state() | — |
| BIO_f_reliable() | none |
Behaviour changes to check
- Output format: key data printed in hex no longer has an extra leading
00:, and hex dumps use fixed widths (24 bytes for signatures, 16 otherwise). Scripts that scrapeopenssl x509 -textoropenssl pkey -textoutput may break. - Stricter verification: AKID checks with
X509_V_FLAG_X509_STRICT, and extra CRL checks. - Cleanup: libcrypto no longer frees global data through
atexit();OPENSSL_cleanup()runs in a global destructor, or not at all by default. - Build defaults: deprecated TLS curves (RFC 8422) and explicit EC curves are off unless you build with
enable-tls-deprecated-ec/enable-ec_explicit_curves. - API:
ASN1_STRINGis opaque, many X509 functions take or returnconstpointers, andX509_cmp_time()and friends are deprecated in favour ofX509_check_certificate_times().
New in 4.0
- Encrypted Client Hello (ECH, RFC 9849).
- SM2/SM3 TLS support (RFC 8998) and the hybrid post-quantum group
curveSM2MLKEM768.
Upgrade checklist
- Search the code for
ENGINE_,-engine,SSLv3_method,TLSv1_2_methodand other fixed-version methods. - Rebuild against 4.0 headers and fix
constwarnings. - Re-run any script that parses
openssl ... -textoutput. - Replace
c_rehashcalls withopenssl rehash.
Sources
Related pages
compat · opensslOpenSSL version support: LTS and end-of-life datesOpenSSL support in October 2026: 3.5 is LTS until 2030-04-08, 4.0 until 2027-05-14, 3.6 until 2026-11-01, 3.4 until 2026-10-22; 3.0 and 1.1.1 have ended.cheat sheets · opensslOpenSSL cheat sheet: keys, CSRs, certificates and TLS checksOpenSSL cheat sheet: generate keys and CSRs, inspect certificates, check that key and certificate match, convert PEM, DER and PFX, verify chains and test TLS.codes · opensslOpenSSL verify error codes: 2, 10, 18, 19, 20, 21, 62OpenSSL X509 verify errors explained: 10 certificate has expired, 18 self-signed, 19 self-signed in chain, 20 unable to get local issuer, 62 hostname mismatch.