Skip to content

Commit b3397f1

Browse files
committed
doc: add quictls/openssl info in OpenSSL strategy
This commit updates the OpenSSL strategy document to include information about the usage of quictls/openssl in 16.x. PR-URL: #1010 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Michael Dawson <midawson@redhat.com>
1 parent 5a5963a commit b3397f1

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

OpenSSL-Strategy.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,11 @@ Node.js EOL dates:
123123

124124
## Node.js version 15.x (est. Oct 2020) (EOL Jun 2021)
125125

126-
* OpenSSL version: 1.1.1
126+
* quictls/OpenSSL version: 1.1.1+quic
127+
Node.js currently uses a temporary OpenSSL fork, which closely tracks the main
128+
openssl/openssl releases with the addition of APIs to support the QUIC protocol.
129+
Details on the fork, as well as the latest sources, can be found at
130+
<https://github.com/quictls/openssl>.
127131
* Allowed shared OpenSSL version: 1.1.1
128132
* Default minimum TLS version is TLSv1.2, default maximum is TLSv1.3. TLSv1
129133
and TLSv1.1 are *not* supported by default, only by explicit run-time
@@ -137,8 +141,13 @@ of 15.x (which is only about 8 months), that experimental support for OpenSSL
137141

138142
## Node.js version 16.x (est Apr 2021) (EOL Apr 2024)
139143

140-
* OpenSSL version: 3.x (because of OpenSSL EOL)
141-
* Allowed shared OpenSSL version: 1.1.1 (proposed...)
144+
* quictls/OpenSSL version: openssl-3.0.0+quic
145+
Node.js currently uses a temporary OpenSSL fork, which closely tracks the main
146+
openssl/openssl releases with the addition of APIs to support the QUIC protocol.
147+
This will be used until OpenSSL releases support for the QUIC protocol. Details
148+
on the fork, as well as the latest sources, can be found at
149+
<https://github.com/quictls/openssl>.
150+
* Allowed shared OpenSSL version: 3.0.0, 3.0.0+quic, 1.1.1, 1.1.1+quic
142151
* Default minimum TLS version is TLSv1.2, default maximum is TLSv1.3. TLSv1
143152
and TLSv1.1 are *not* supported by default, only by explicit run-time
144153
configuration.
@@ -154,6 +163,11 @@ a `semver-minor` (ABI, API, and behavioural compatible) update to 16.x.
154163
For minimal disruption, it would probably be helpful if Node.js supported
155164
building against OpenSSL 1.1.1 out-of-tree, even if OpenSSL 3.x was in-tree.
156165

166+
The plan described above is to:
167+
168+
* Once OpenSSL has been updated with support for the QUIC protocol replace the
169+
temporary quictls/openssl depencency with it.
170+
157171
Challenges are:
158172

159173
1. OpenSSL 3.x moved many algorithms into a legacy library, that is only
@@ -165,9 +179,6 @@ Challenges are:
165179
APIs, but the alternatives to those deprecated APIs do not exist in OpenSSL
166180
1.1.1. So, Node.js 16.x either needs to ship calling deprecated APIs, or
167181
break compatibility with OpenSSL 1.1.1 (so it will _only build with 3.x_).
168-
4. Behavioural differences in OpenSSL 3.x currently fail many tests in the
169-
Node.js master test suite (effort to fix this is unknown, impact of fixing
170-
in terms of compatibility is unknown).
171182

172183
Tracking issue: <https://github.com/nodejs/node/issues/29817>
173184

0 commit comments

Comments
 (0)