OpenSSL 4.1.0
OpenSSL 4.1.0 Release Overview
OpenSSL has launched version 4.1.0, a major feature release designed to introduce significant new capabilities and architectural improvements to the library.
🛠️ Build & Compatibility Changes
This version introduces several modifications that may impact how the software is compiled or integrated.
New Build Targets
To address gaps in C99 standard support within MSVC 2013, the following targets have been added to provide necessary internal bridging functions:
VC-WIN32-MSVC2013VC-WIN64A-MSVC2013
Hardware Optimizations
The release includes specialized performance enhancements for various architectures:
| Architecture | Optimization Detail |
|---|---|
| ppc64le | Optimized NTT operations for ML-DSA and ML-KEM |
| x86_64 | Optimized ML-DSA operations |
| x86_64 | AVX-512-optimized SHAKE x4 operations (specifically for ML-DSA) |
| x86_64 | VAES and AVX-512 optimizations for AES-CBC decryption |
[!IMPORTANT] Utility Update: The
tsgettool has transitioned from the obsoleteWWW::Curl::EasytoNet::Curl::Easy(available via CPAN). Action Required: Users relying ontsgetmust installNet::Curl::Easyprior to performing the upgrade.
Deprecations and Removals
The following targets and configuration options have been removed:
(Windows-on-Itanium)VC-WIN64I(Windows CE)VC-CEandno-ecdsa(These options were removed as they failed to effectively disable the underlying implementations).no-ecdh
✨ New Feature Set
The 4.1.0 release expands protocol support through the implementation of the following:
- DTLS 1.3 Support: Full implementation of .
- GREASE Support: Implementation of (Generate Random Extensions And Sustain Extensibility).
Note: The NTT (Number Theoretic Transform) optimizations mentioned above improve the efficiency of polynomial multiplication, typically reducing complexity to .
⚠️ Known Issues
There are several documented bugs in this release, primarily affecting DTLS 1.3:
Retransmission and Handshake Errors
- Issue #32878: Upon receiving a DTLS 1.3
KeyUpdate, the retransmission buffer is cleared of all other pending post-handshake records. Consequently, records likeNewSessionTicketwill not be resent if the initial packet is lost. - Issue #33242: Servers may terminate handshakes with an
unexpected_messagealert if a client acknowledges the server's first flight (partially or fully) before sending its own response. This is common during packet loss or while the client generates authentication.
Connection Reporting Errors
- Issue #33277: A permanent failure in receiving on a DTLS listener might be incorrectly reported as
SSL_ERROR_WANT_READon an accepted connection. This can lead to applications hanging while waiting for a recovery that will never happen. - Issue #33278: On nonblocking connections from a DTLS listener, a retryable write failure may return
SSL_ERROR_SYSCALLinstead of the expectedSSL_ERROR_WANT_WRITE.
Summary of Error Codes
// Potential misleading return values in 4.1.0
int result = SSL_do_handshake(s);
if (result == SSL_ERROR_WANT_READ) {
// Might actually be a permanent failure (#33277)
} else if (result == SSL_ERROR_SYSCALL) {
// Might actually be a retryable write failure (#33278)
}