summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2026-06-14 14:30:52 +0000
committerjsing <>2026-06-14 14:30:52 +0000
commit10f1c5f3b1878fc0729a303d0b2257d43206b087 (patch)
treee712f358159f84a14bf7f77f5e49fb96e4a654b2 /src/lib
parent299a1344c51031d924e952fa2df617b31de379db (diff)
downloadopenbsd-10f1c5f3b1878fc0729a303d0b2257d43206b087.tar.gz
openbsd-10f1c5f3b1878fc0729a303d0b2257d43206b087.tar.bz2
openbsd-10f1c5f3b1878fc0729a303d0b2257d43206b087.zip
Mop up SSL_CTX_set_options(3).
SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS is now a no-op, tidy up SSL_OP_LEGACY_SERVER_CONNECT and reflect the current state of SSL_OP_ALL Delete the entire "SECURE RENEGOTIATION" section that contained ancient ramblings. ok beck@ tb@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/man/SSL_CTX_set_options.394
1 files changed, 5 insertions, 89 deletions
diff --git a/src/lib/libssl/man/SSL_CTX_set_options.3 b/src/lib/libssl/man/SSL_CTX_set_options.3
index 5e81c978bd..ec8900f0f3 100644
--- a/src/lib/libssl/man/SSL_CTX_set_options.3
+++ b/src/lib/libssl/man/SSL_CTX_set_options.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: SSL_CTX_set_options.3,v 1.17 2025/06/08 22:52:00 schwarze Exp $ 1.\" $OpenBSD: SSL_CTX_set_options.3,v 1.18 2026/06/14 14:30:52 jsing Exp $
2.\" full merge up to: OpenSSL 7946ab33 Dec 6 17:56:41 2015 +0100 2.\" full merge up to: OpenSSL 7946ab33 Dec 6 17:56:41 2015 +0100
3.\" selective merge up to: OpenSSL edb79c3a Mar 29 10:07:14 2017 +1000 3.\" selective merge up to: OpenSSL edb79c3a Mar 29 10:07:14 2017 +1000
4.\" 4.\"
@@ -52,7 +52,7 @@
52.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 52.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
53.\" OF THE POSSIBILITY OF SUCH DAMAGE. 53.\" OF THE POSSIBILITY OF SUCH DAMAGE.
54.\" 54.\"
55.Dd $Mdocdate: June 8 2025 $ 55.Dd $Mdocdate: June 14 2026 $
56.Dt SSL_CTX_SET_OPTIONS 3 56.Dt SSL_CTX_SET_OPTIONS 3
57.Os 57.Os
58.Sh NAME 58.Sh NAME
@@ -151,14 +151,8 @@ The following
151.Em bug workaround 151.Em bug workaround
152options are available: 152options are available:
153.Bl -tag -width Ds 153.Bl -tag -width Ds
154.It Dv SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
155Disables a countermeasure against a TLS 1.0 protocol vulnerability
156affecting CBC ciphers, which cannot be handled by some broken SSL
157implementations.
158This option has no effect for connections using other ciphers.
159.It Dv SSL_OP_ALL 154.It Dv SSL_OP_ALL
160This is currently an alias for 155This currently does nothing.
161.Dv SSL_OP_LEGACY_SERVER_CONNECT .
162.El 156.El
163.Pp 157.Pp
164It is usually safe to use 158It is usually safe to use
@@ -179,9 +173,7 @@ When set, the server will choose following its own preferences.
179Turn on Cookie Exchange as described in RFC 4347 Section 4.2.1. 173Turn on Cookie Exchange as described in RFC 4347 Section 4.2.1.
180Only affects DTLS connections. 174Only affects DTLS connections.
181.It Dv SSL_OP_LEGACY_SERVER_CONNECT 175.It Dv SSL_OP_LEGACY_SERVER_CONNECT
182Allow legacy insecure renegotiation between OpenSSL and unpatched servers 176Allow connections to legacy servers that do not support secure renegotiation.
183.Em only :
184this option is currently set by default.
185See the 177See the
186.Sx SECURE RENEGOTIATION 178.Sx SECURE RENEGOTIATION
187section for more details. 179section for more details.
@@ -229,6 +221,7 @@ instead.
229The following options used to be supported at some point in the past 221The following options used to be supported at some point in the past
230and no longer have any effect: 222and no longer have any effect:
231.Dv SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION , 223.Dv SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION ,
224.Dv SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS ,
232.Dv SSL_OP_EPHEMERAL_RSA , 225.Dv SSL_OP_EPHEMERAL_RSA ,
233.Dv SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER , 226.Dv SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER ,
234.Dv SSL_OP_MICROSOFT_SESS_ID_BUG , 227.Dv SSL_OP_MICROSOFT_SESS_ID_BUG ,
@@ -250,83 +243,6 @@ and no longer have any effect:
250.Dv SSL_OP_TLS_D5_BUG , 243.Dv SSL_OP_TLS_D5_BUG ,
251.Dv SSL_OP_TLS_ROLLBACK_BUG , 244.Dv SSL_OP_TLS_ROLLBACK_BUG ,
252.Dv SSL_OP_TLSEXT_PADDING . 245.Dv SSL_OP_TLSEXT_PADDING .
253.Sh SECURE RENEGOTIATION
254OpenSSL 0.9.8m and later always attempts to use secure renegotiation as
255described in RFC 5746.
256This counters the prefix attack described in CVE-2009-3555 and elsewhere.
257.Pp
258This attack has far-reaching consequences which application writers should be
259aware of.
260In the description below an implementation supporting secure renegotiation is
261referred to as
262.Dq patched .
263A server not supporting secure
264renegotiation is referred to as
265.Dq unpatched .
266.Pp
267The following sections describe the operations permitted by OpenSSL's secure
268renegotiation implementation.
269.Ss Patched client and server
270Connections and renegotiation are always permitted by OpenSSL implementations.
271.Ss Unpatched client and patched OpenSSL server
272The initial connection succeeds but client renegotiation is denied by the
273server with a
274.Em no_renegotiation
275warning alert.
276.Pp
277If the patched OpenSSL server attempts to renegotiate, a fatal
278.Em handshake_failure
279alert is sent.
280This is because the server code may be unaware of the unpatched nature of the
281client.
282.Pp
283Note that a bug in OpenSSL clients earlier than 0.9.8m (all of which
284are unpatched) will result in the connection hanging if it receives a
285.Em no_renegotiation
286alert.
287OpenSSL versions 0.9.8m and later will regard a
288.Em no_renegotiation
289alert as fatal and respond with a fatal
290.Em handshake_failure
291alert.
292This is because the OpenSSL API currently has no provision to indicate to an
293application that a renegotiation attempt was refused.
294.Ss Patched OpenSSL client and unpatched server
295If the option
296.Dv SSL_OP_LEGACY_SERVER_CONNECT
297is set then initial connections and renegotiation between patched OpenSSL
298clients and unpatched servers succeeds.
299If neither option is set then initial connections to unpatched servers will
300fail.
301.Pp
302The option
303.Dv SSL_OP_LEGACY_SERVER_CONNECT
304is currently set by default even though it has security implications:
305otherwise it would be impossible to connect to unpatched servers (i.e., all of
306them initially) and this is clearly not acceptable.
307Renegotiation is permitted because this does not add any additional security
308issues: during an attack clients do not see any renegotiations anyway.
309.Pp
310As more servers become patched, the option
311.Dv SSL_OP_LEGACY_SERVER_CONNECT
312will
313.Em not
314be set by default in a future version of OpenSSL.
315.Pp
316OpenSSL client applications wishing to ensure they can connect to unpatched
317servers should always
318.Em set
319.Dv SSL_OP_LEGACY_SERVER_CONNECT .
320.Pp
321OpenSSL client applications that want to ensure they can
322.Em not
323connect to unpatched servers (and thus avoid any security issues) should always
324.Em clear
325.Dv SSL_OP_LEGACY_SERVER_CONNECT
326using
327.Fn SSL_CTX_clear_options
328or
329.Fn SSL_clear_options .
330.Sh RETURN VALUES 246.Sh RETURN VALUES
331.Fn SSL_CTX_set_options 247.Fn SSL_CTX_set_options
332and 248and