Skip to content

Commit f94d004

Browse files
committed
DOCSP-43384: Troubleshooting openssl legacy unsafe renegotiation (#115)
1 parent 24657d3 commit f94d004

File tree

1 file changed

+64
-1
lines changed
  • source/includes/troubleshooting

1 file changed

+64
-1
lines changed

source/includes/troubleshooting/tls.rst

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,67 @@ following steps:
122122

123123
- Downgrade Python to v3.9 or earlier
124124
- Upgrade {+mdb-server+} to v4.2 or later
125-
- Install {+driver-short+} with the :ref:`OCSP <pymongo-disable-ocsp>` option, which relies on PyOpenSSL
125+
- Install {+driver-short+} with the :ref:`OCSP <pymongo-disable-ocsp>` option, which relies on PyOpenSSL
126+
127+
Unsafe Legacy Renegotiation Disabled
128+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129+
130+
When using OpenSSL v3 or later, you might see an error similar to the following
131+
message:
132+
133+
.. code-block:: python
134+
135+
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled
136+
137+
These types of errors occur because of outdated or buggy SSL proxies that mistakenly
138+
enforce legacy `TLS renegotiation <https://www.ibm.com/docs/en/i/7.3?topic=settings-renegotiation>`__.
139+
140+
To resolve this issue, perform the following steps:
141+
142+
.. procedure::
143+
:style: normal
144+
145+
.. step:: Check OpenSSL Version
146+
147+
Run the following command to ensure that you have OpenSSL vv3.0.4 or
148+
later installed:
149+
150+
.. code-block:: bash
151+
152+
openssl version
153+
154+
.. step:: Use the ``UnsafeLegacyServerConnect`` Option
155+
156+
Create a configuration file that includes the
157+
``UnsafeLegacyServerConnect`` option. The following example shows how to set
158+
the ``UnsafeLegacyServerConnect`` option:
159+
160+
.. code-block:: shell
161+
:emphasize-lines: 10
162+
163+
openssl_conf = openssl_init
164+
165+
[openssl_init]
166+
ssl_conf = ssl_sect
167+
168+
[ssl_sect]
169+
system_default = system_default_sect
170+
171+
[system_default_sect]
172+
Options = UnsafeLegacyServerConnect
173+
174+
.. step:: Run Python with OpenSSL Configuration
175+
176+
Run Python while setting the ``OPENSSL_CONF`` environment variable to use
177+
the OpenSSL configuration file you just created:
178+
179+
.. code-block:: shell
180+
181+
OPENSSL_CONF=/path/to/the/config/file/above.cnf python ...
182+
183+
.. important::
184+
185+
Because setting the ``UnsafeLegacyServerConnect`` option has
186+
`security implications <https://docs.openssl.org/3.0/man3/SSL_CTX_set_options/#patched-openssl-client-and-unpatched-server>`__,
187+
use this workaround as a last
188+
resort to address ``unsafe legacy renegotiation disabled`` errors.

0 commit comments

Comments
 (0)