Bug 2254550

Summary: Port python3.6 to OpenSSL 3
Product: [Fedora] Fedora Reporter: Miro Hrončok <mhroncok>
Component: python3.6Assignee: Charalampos Stratakis <cstratak>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 40CC: crypto-team, cstratak, dbelyavs, jistone, mhroncok, python-maint, python-packagers-sig, shebburn, torsava, vstinner, zbyszek
Target Milestone: ---Keywords: FutureFeature, Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python3.6-3.6.15-29.fc41 python3.6-3.6.15-29.fc40 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-04-02 14:17:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2258090    
Attachments:
Description Flags
forward port of python2.7's openssl-3 patch none

Description Miro Hrončok 2023-12-14 13:32:52 UTC
Due to https://fedoraproject.org/wiki/Changes/RemoveOpensslCompat we will need to port Python 3.6 to OpenSSL 3.

This is a tracking Bugzilla for the effort.

Comment 1 Josh Stone 2024-01-04 18:48:39 UTC
Created attachment 2007224 [details]
forward port of python2.7's openssl-3 patch

I took a stab at forward-porting the patch from the python2.7 package. It builds and passes many of the tests, but fails on 5 in test_ssl. Hopefully that's still helpful for someone else to take this the rest of the way...

Comment 2 Josh Stone 2024-01-04 18:50:43 UTC
Here are the failures with that patch (and changing the spec to BR plain openssl-devel):

======================================================================
ERROR: test_load_cert_chain (test.test_ssl.ContextTests)
----------------------------------------------------------------------
ValueError: password cannot be longer than 1024 bytes

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 1118, in test_load_cert_chain
    ctx.load_cert_chain(CERTFILE_PROTECTED, password=getpass_huge)
SystemError: PyEval_EvalFrameEx returned a result with an error set

======================================================================
ERROR: test_subclass (test.test_ssl.SSLErrorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 1494, in test_subclass
    c.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1033, in do_handshake
    self._sslobj.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 645, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL] internal error (_ssl.c:883)

======================================================================
ERROR: test_nonblocking_send (test.test_ssl.ThreadedTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 3099, in test_nonblocking_send
    s.connect((HOST, server.port))
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1065, in connect
    self._real_connect(addr, False)
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1056, in _real_connect
    self.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1033, in do_handshake
    self._sslobj.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 645, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL] internal error (_ssl.c:883)

======================================================================
ERROR: test_session (test.test_ssl.ThreadedTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 3662, in test_session
    stats = server_params_test(client_context, server_context)
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 2324, in server_params_test
    s.connect((HOST, server.port))
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1065, in connect
    self._real_connect(addr, False)
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1056, in _real_connect
    self.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1033, in do_handshake
    self._sslobj.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 645, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL] internal error (_ssl.c:883)

======================================================================
ERROR: test_shared_ciphers (test.test_ssl.ThreadedTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 3615, in test_shared_ciphers
    stats = server_params_test(client_context, server_context)
  File "/builddir/build/BUILD/Python-3.6.15/Lib/test/test_ssl.py", line 2324, in server_params_test
    s.connect((HOST, server.port))
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1065, in connect
    self._real_connect(addr, False)
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1056, in _real_connect
    self.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 1033, in do_handshake
    self._sslobj.do_handshake()
  File "/builddir/build/BUILD/Python-3.6.15/Lib/ssl.py", line 645, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL] internal error (_ssl.c:883)

----------------------------------------------------------------------

Ran 135 tests in 2.253s

FAILED (errors=5, skipped=11)
test test_ssl failed

Comment 3 Miro Hrončok 2024-01-04 20:27:32 UTC
Thank you.

Comment 4 Charalampos Stratakis 2024-03-11 19:59:48 UTC
PR: https://src.fedoraproject.org/rpms/python3.6/pull-request/95

Comment 5 Fedora Update System 2024-03-25 21:04:33 UTC
FEDORA-2024-627f86cea8 (python3.6-3.6.15-29.fc40) has been submitted as an update to Fedora 40.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-627f86cea8

Comment 6 Fedora Update System 2024-03-25 21:37:16 UTC
FEDORA-2024-d33286ec1b (python3.6-3.6.15-29.fc41) has been submitted as an update to Fedora 41.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-d33286ec1b

Comment 7 Fedora Update System 2024-03-25 21:42:27 UTC
FEDORA-2024-d33286ec1b (python3.6-3.6.15-29.fc41) has been pushed to the Fedora 41 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 8 Fedora Update System 2024-03-26 01:21:25 UTC
FEDORA-2024-627f86cea8 has been pushed to the Fedora 40 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-627f86cea8`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-627f86cea8

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 9 Fedora Update System 2024-04-02 14:17:35 UTC
FEDORA-2024-627f86cea8 (python3.6-3.6.15-29.fc40) has been pushed to the Fedora 40 stable repository.
If problem still persists, please make note of it in this bug report.