OpenSSL 4.0.0 Released: Strengthening Security by Cutting Legacy Debt
The OpenSSL Project has officially released OpenSSL 4.0.0, a feature release that marks a significant shift in the library’s architecture. By removing long-deprecated protocols and refining its API, the update aims to reduce the attack surface and modernize the toolkit used by millions of servers and applications worldwide.
Key Changes in OpenSSL 4.0.0
This release focuses on “cleaning house,” removing legacy support that has hindered security and performance for years. The most notable changes include:
Removal of Legacy Protocols
- SSLv3: Support for SSLv3 has been completely removed. While it was deprecated in 2015 and disabled by default since version 1.1.0, it is now entirely excised from the codebase.
- SSLv2 Client Hello: Support for the SSLv2 Client Hello has also been removed.
Architectural and API Updates
- Engine Support: Support for engines has been removed. The
OPENSSL_NO_ENGINEmacro and theno-enginebuild option are now always present. - ASN1_STRING: This has been made opaque, preventing direct access to internal structures and improving stability.
- Memory Management:
libcryptono longer cleans up globally allocated data viaatexit(). Instead,OPENSSL_cleanup()now runs in a global destructor or not at all by default. - API Refinements: Many API functions, specifically those related to X509 processing, now include
constqualifiers for return and argument types where appropriate.
Verification and Formatting Improvements
- Hexadecimal Dumps: The width of hexadecimal dumps is now standardized to 24 bytes for signatures and 16 bytes for all other data. The extra leading ’00:’ previously added when printing key data (like an RSA modulus) where the first byte is >= 0x80 has been removed.
- X509 and CRL Checks: New AKID verification checks are now enforced when
X509_V_FLAG_X509_STRICTis set, and the CRL verification process has been augmented with additional checks. - FIPS Compliance: Lower bounds checks are now enforced when using the
PKCS5_PBKDF2_HMACAPI with the FIPS provider.
Deprecations and Tooling Changes
As part of the move toward a more streamlined library, several tools and functions have been phased out:
- X509 Time Functions:
X509_cmp_time(),X509_cmp_current_time(), andX509_cmp_timeframe()are deprecated. Users should transition toX509_check_certificate_times(). - c_rehash: The
c_rehashscript tool has been removed; users should useopenssl rehashinstead. - CA Command: The deprecated
msie-hackoption has been removed from theopenssl cacommand.
- Verify that your applications do not rely on SSLv3 or SSLv2.
- Update your build configurations to account for the removal of engine support.
- Switch from
c_rehashto theopenssl rehashcommand. - Review X509 time-comparison logic to adopt
X509_check_certificate_times().
Looking Ahead
The release of OpenSSL 4.0.0 is a critical step in maintaining the security of the global web infrastructure. By stripping away outdated protocols and refining the internal API, the OpenSSL Project is ensuring that the library remains performant and secure against modern threats. For those currently using the library, auditing dependencies for legacy protocol reliance is the most immediate priority before upgrading to this version.
For more detailed technical information, developers can refer to the official OpenSSL GitHub releases page or the official project announcements.
Worth a look