Latest in branch 3.0
3.0.20
Released 07 Apr 2026
(1 month ago)
SoftwareOpenSSL
Branch3.0
StatusLTS
Supported
Initial release3.0.0
07 Sep 2021
(4 years ago)
Latest release3.0.20
07 Apr 2026
(1 month ago)
End of
OSS support
07 Sep 2026
(Ends in 3 months)
Premium supportYes
Release noteshttps://github.com/openssl/openssl/releases/tag/openssl-3.0.20
Source codehttps://github.com/openssl/openssl/tree/openssl-3.0.20
Downloadhttps://github.com/openssl/openssl/releases/tag/openssl-3.0.20
OpenSSL 3.0 ReleasesView full list

What Is New in OpenSSL 3.0

What Is New in OpenSSL 3.0

Category Highlights
New Features Provider framework replaces ENGINE, new EVP_KDF/EVP_MAC APIs, built-in KTLS support, CMP/CRMF implementation, enhanced openssl list and info commands.
Improvements Pluggable TLSv1.3 groups, faster OBJ_obj2txt, mitigated side-channel leaks in RSA/ECDSA, better handling of large DH parameters, session growth fixes.
Bug Fixes Dozens of CVE-addressed issues: use-after-free, null-pointer derefs, buffer over-reads/writes, timing side-channels, heap corruptions across RSA, CMS, PKCS#12, DANE, and more.
Breaking Changes Legacy low-level crypto functions moved to the legacy provider, ENGINE API removed, default providers changed, SHA-1 certificates rejected at security level 1.
Deprecations All low-level EVP_* cipher/Digest/Key functions, RSA/DSA/ECDH/ECDSA/DH structures, ERR_load_* helpers, RAND_DRBG API, and the ENGINE subsystem.

How does the new provider architecture affect existing OpenSSL applications?

In OpenSSL 3.0 the provider model replaces the old ENGINE API, so cryptographic operations are fetched from named providers at runtime.

Key points for production:

  • Default providers are default (general purpose) and legacy (deprecated algorithms).
  • Applications can request a specific provider via OSSL_LIB_CTX or property strings, e.g. EVP_PKEY_new_from_name(ctx, "RSA", "provider=default").
  • If a key resides in a provider that does not expose the requested operation, OpenSSL will fall back to a provider that does, provided the property query permits it.
  • Code that directly called low-level RSA_* or DSA_* functions must migrate to the EVP API or explicitly load the legacy provider.
# List available providers
openssl list -providers

# Load the legacy provider in a program
OSSL_LIB_CTX *ctx = OSSL_LIB_CTX_new();
OSSL_PROVIDER_load(ctx, "legacy");

What are the most critical security fixes introduced in the 3.0 series?

OpenSSL 3.0 includes a steady stream of CVE-addressed patches that close use-after-free, null-pointer, and buffer-overflow bugs across the stack.

Highlights that matter to operators:

  • RSA KEM encapsulation failure handling (CVE-2026-31790) - prevents malformed ciphertext from causing silent failures.
  • Multiple NULL-pointer dereferences in CMS and PKCS#12 parsing (CVE-2026-28388-28390) - eliminates crashes when processing malformed messages.
  • Heap buffer overflow in hex conversion (CVE-2026-31789) - safeguards logging and debugging utilities.
  • Timing side-channel mitigations for ECDSA signatures (CVE-2024-13176) and RSA decryption (CVE-2022-4304) - improves resistance to remote timing attacks.
  • Session memory growth bug in TLS 1.3 (CVE-2024-2511) - prevents unbounded RAM consumption under heavy load.

In practice, most of these fixes are back-ported automatically when you upgrade to the latest 3.0.x release, but you should verify that your deployment is running at least 3.0.20 to cover the newest mitigations.

Which legacy algorithms and APIs have been moved or deprecated in OpenSSL 3.0?

OpenSSL 3.0 moves all legacy ciphers, digests, and key-type functions into the legacy provider and marks the low-level APIs as deprecated.

Key changes you need to audit:

  • Block ciphers such as DES, RC4, RC2, IDEA, and SEED are no longer available in the default provider; they require explicit loading of legacy.
  • Digest algorithms MD2, MD4, MD5, MDC2, RIPEMD-160, SHA-1, SHA-224/256/384/512 (in low-level form) are deprecated; use the EVP digest API instead.
  • Structures RSA, DSA, DH, EC_KEY and their *_METHOD counterparts are deprecated - migrate to EVP_PKEY and provider-based operations.
  • The ENGINE subsystem and related functions (ENGINE_by_id, ENGINE_load_private_key, etc.) have been removed.
  • ERR_load_* helpers are deprecated; use the new error-raising macros.

Watch out for configuration files or scripts that still reference the old names; they will fail unless the legacy provider is loaded.

How have TLS 1.3 and related session handling been improved?

OpenSSL 3.0 introduces several performance and stability enhancements for TLS 1.3.

  • Session cache growth is now bounded, fixing unbounded memory usage (CVE-2024-2511).
  • Pluggable TLS 1.3 groups allow applications to select post-quantum or custom groups via provider properties.
  • Improved handling of large DH parameters reduces CPU spikes during handshake.
  • Kernel TLS (KTLS) support is now part of the default provider, enabling zero-copy encryption on supported kernels.

In practice, enabling KTLS can reduce CPU overhead on high-throughput servers; configure it with SSL_set_options(ssl, SSL_OP_ENABLE_KTLS) after creating the context.

FAQ

Do I need to recompile my applications after upgrading to OpenSSL 3.0?
Most applications that use the high-level EVP API will work without recompilation, but code that calls deprecated low-level functions must be updated.

How can I list the providers available in my OpenSSL installation?
Run openssl list -providers to see default, legacy and any custom providers.

Is SHA-1 still supported for TLS handshakes in OpenSSL 3.0?
SHA-1 certificates are rejected at security level 1, so they are not usable for normal TLS connections.

Can I still use the ENGINE API for hardware acceleration?
The ENGINE API has been removed; you must use a provider that implements the hardware backend.

What command shows the OpenSSL version and built-in providers?
Run openssl version -a to display version information and the list of compiled-in providers.

How do I enable the legacy provider for legacy ciphers?
Add OSSL_PROVIDER_load(ctx, "legacy") in your code or set OPENSSL_CONF to load the legacy provider at startup.

Releases In Branch 3.0

VersionRelease date
3.0.2007 Apr 2026
(1 month ago)
3.0.1927 Jan 2026
(3 months ago)
3.0.1830 Sep 2025
(7 months ago)
3.0.1701 Jul 2025
(10 months ago)
3.0.1611 Feb 2025
(1 year ago)
3.0.1503 Sep 2024
(1 year ago)
3.0.1404 Jun 2024
(1 year ago)
3.0.1330 Jan 2024
(2 years ago)
3.0.1224 Oct 2023
(2 years ago)
3.0.1119 Sep 2023
(2 years ago)
3.0.1001 Aug 2023
(2 years ago)
3.0.930 May 2023
(2 years ago)
3.0.807 Feb 2023
(3 years ago)
3.0.701 Nov 2022
(3 years ago)
3.0.611 Oct 2022
(3 years ago)
3.0.505 Jul 2022
(3 years ago)
3.0.421 Jun 2022
(3 years ago)
3.0.303 May 2022
(4 years ago)
3.0.215 Mar 2022
(4 years ago)
3.0.114 Dec 2021
(4 years ago)
3.0.007 Sep 2021
(4 years ago)
3.0.0-beta229 Jul 2021
(4 years ago)
3.0.0-beta117 Jun 2021
(4 years ago)
3.0.0-alpha1720 May 2021
(4 years ago)
3.0.0-alpha1606 May 2021
(5 years ago)
3.0.0-alpha1522 Apr 2021
(5 years ago)
3.0.0-alpha1408 Apr 2021
(5 years ago)
3.0.0-alpha1311 Mar 2021
(5 years ago)
3.0.0-alpha1218 Feb 2021
(5 years ago)
3.0.0-alpha1128 Jan 2021
(5 years ago)
3.0.0-alpha1007 Jan 2021
(5 years ago)
3.0.0-alpha926 Nov 2020
(5 years ago)
3.0.0-alpha805 Nov 2020
(5 years ago)
3.0.0-alpha715 Oct 2020
(5 years ago)
3.0.0-alpha606 Aug 2020
(5 years ago)
3.0.0-alpha516 Jul 2020
(5 years ago)
3.0.0-alpha425 Jun 2020
(5 years ago)
3.0.0-alpha304 Jun 2020
(5 years ago)
3.0.0-alpha215 May 2020
(6 years ago)
3.0.0-alpha123 Apr 2020
(6 years ago)