What Is New in OpenSSL 3.4
| Category | Highlights |
|---|---|
| New Features | Composite signature algorithms (e.g., RSA-SHA2-256), integrity-only TLS 1.3 cipher suites, RFC 9579 PBMAC1, jitterentropy RNG, attribute-certificate support |
| Improvements | FIPS provider indicators, pre-computed ECC group values for P-256, configurable OPENSSLDIR/ENGINESDIR/MODULESDIR on Windows, config_diagnostics validation |
| Bug Fixes | Numerous CVE-patched issues from 3.4.1 through 3.4.5, including DANE use-after-free, RSA-KEM handling, NULL dereferences, heap overflows, TLS 1.3 compressed certificate allocation |
| Breaking Changes | SHAKE-128/256 require explicit xoflen, empty renegotiation extension replaces SCSV, Y2038-safe session APIs replace deprecated time functions |
| Deprecations | TS_VERIFY_CTX_set_* functions, SSL_SESSION_get_time / SSL_SESSION_set_time, SSL_CTX_flush_sessions, legacy XOF defaults |
What new cryptographic algorithms and signature support does OpenSSL 3.4 provide?
OpenSSL 3.4 adds composite signature algorithms such as RSA-SHA2-256 and introduces integrity-only TLS 1.3 cipher suites defined in RFC 9150.
- Composite signatures are exposed via the EVP_PKEY algorithm identifier
RSA-SHA2-256and can be used withEVP_DigestSignInit. - TLS 1.3 now supports
TLS_SHA256_SHA256andTLS_SHA384_SHA384, useful for environments that require separate hash for handshake and traffic. - RFC 9579 PBMAC1 is implemented in the PKCS#12 module, allowing password-based MACs with stronger key derivation.
EVP_PKEY *pkey = EVP_PKEY_new_raw_private_key(EVP_PKEY_RSA, NULL, keybuf, keylen);
EVP_MD *md = EVP_get_digestbyname("SHA256");
EVP_DigestSignInit(ctx, NULL, md, NULL, pkey); // composite RSA-SHA2-256
How have the provider and FIPS modules changed in OpenSSL 3.4?
The FIPS provider now includes explicit FIPS-mode indicators and marks X25519/X448 as fips=no, while the default provider gains optional jitterentropy RNG support.
- FIPS indicators can be queried via
OSSL_PROVIDER_get_capabilities()to confirm that the provider is operating in validated mode. - X25519 and X448 are still available but will be disabled when the FIPS provider is loaded with
fips=yes. - The jitterentropy RNG source is linked statically; enable it by adding
rng = jitterto theopenssl.cnfRNG section.
Which APIs were deprecated or replaced in OpenSSL 3.4 and what should developers use instead?
Several legacy APIs have been superseded by Y2038-safe variants and new "_set0_" helpers.
TS_VERIFY_CTX_set_*functions are replaced byTS_VERIFY_CTX_set0_*which accept const pointers and avoid accidental modification.- Time-related session functions now use
SSL_SESSION_get_time_ex()andSSL_SESSION_set_time_ex(), which accept atime_tthat is safe on platforms with 64-bit time. SSL_CTX_flush_sessions()is deprecated; useSSL_CTX_flush_sessions_ex()for explicit control.
What are the most critical security fixes in the OpenSSL 3.4.x patch releases?
Each point-release from 3.4.1 to 3.4.5 addresses multiple CVEs, with the most severe being a High-severity fix in 3.4.4 and a Moderate-severity fix in 3.4.5.
- 3.4.5: Fixed use-after-free in DANE client code (CVE-2026-28387) and RSA-KEM encapsulation failure handling (CVE-2026-31790).
- 3.4.4: Patched PBMAC1 parameter validation (CVE-2025-11187) and TLS 1.3 compressed certificate memory blow-up (CVE-2025-66199).
- Earlier releases also fixed NULL dereferences in
SSL_CIPHER_find(), heap overflows in BIO line buffering, and out-of-bounds writes in PKCS#12 handling.
What configuration and runtime behavior changes should operators be aware of in OpenSSL 3.4?
OpenSSL 3.4 introduces stricter configuration validation and alters default TLS handshake extensions.
- Setting
config_diagnostics=1inopenssl.cnfforcesSSL_CTX_new()andSSL_CTX_new_ex()to return errors on misconfiguration, helping catch problems early. - On Windows, OPENSSLDIR, ENGINESDIR, and MODULESDIR can now be overridden at runtime via registry keys, removing the need for rebuilds.
- Clients with a minimum TLS version greater than 1.0 now send an empty renegotiation extension instead of the legacy SCSV, improving compliance with modern servers.
FAQ
Does OpenSSL 3.4 support integrity-only cipher suites in TLS 1.3?
Yes it adds TLS_SHA256_SHA256 and TLS_SHA384_SHA384 cipher suites defined in RFC 9150.
How do I enable the new jitterentropy RNG source in OpenSSL 3.4?
Add rng = jitter to the openssl.cnf file under the appropriate RNG section.
What function replaces SSL_SESSION_get_time in OpenSSL 3.4?
Use SSL_SESSION_get_time_ex which is Y2038-safe.
Are the X25519 and X448 implementations in the FIPS provider approved for FIPS mode?
No they are marked fips=no and cannot be used when the FIPS provider is in strict mode.
How can I trigger configuration validation errors during SSL_CTX creation in OpenSSL 3.4?
Set config_diagnostics=1 in openssl.cnf and SSL_CTX_new will return an error on misconfiguration.
Which CVE in the 3.4.5 release addresses a use-after-free in DANE client code?
CVE-2026-28387 fixes the potential use-after-free in DANE client code.