8000 disable VERIFY_X509_STRICT for Python 3.13 support · PyMySQL/PyMySQL@3b1d215 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3b1d215

Browse files
committed
disable VERIFY_X509_STRICT for Python 3.13 support
1 parent 046d36c commit 3b1d215

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

pymysql/connections.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,12 @@ def _create_ssl_ctx(self, sslp):
377377
capath = sslp.get("capath")
378378
hasnoca = ca is None and capath is None
379379
ctx = ssl.create_default_context(cafile=ca, capath=capath)
380+
381+
# Python 3.13 enables VERIFY_X509_STRICT by default.
382+
# But self signed certificates that are generated by MySQL automatically
383+
# doesn't pass the verification.
384+
ctx.verify_flags &= ~ssl.VERIFY_X509_STRICT
385+
380386
ctx.check_hostname = not hasnoca and sslp.get("check_hostname", True)
381387
verify_mode_value = sslp.get("verify_mode")
382388
if verify_mode_value is None:

pymysql/tests/test_connection.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ def test_defer_connect(self):
558558
sock.close()
559559

560560
def test_ssl_connect(self):
561-
dummy_ssl_context = mock.Mock(options=0)
561+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
562562
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
563563
"pymysql.connections.ssl.create_default_context",
564564
new=mock.Mock(return_value=dummy_ssl_context),
@@ -581,7 +581,7 @@ def test_ssl_connect(self):
581581
)
582582
dummy_ssl_context.set_ciphers.assert_called_with("cipher")
583583

584-
dummy_ssl_context = mock.Mock(options=0)
584+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
585585
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
586586
"pymysql.connections.ssl.create_default_context",
587587
new=mock.Mock(return_value=dummy_ssl_context),
@@ -603,7 +603,7 @@ def test_ssl_connect(self):
603603
)
604604
dummy_ssl_context.set_ciphers.assert_not_called
605605

606-
dummy_ssl_context = mock.Mock(options=0)
606+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
607607
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
608608
"pymysql.connections.ssl.create_default_context",
609609
new=mock.Mock(return_value=dummy_ssl_context),
@@ -626,7 +626,7 @@ def test_ssl_connect(self):
626626
)
627627
dummy_ssl_context.set_ciphers.assert_not_called
628628

629-
dummy_ssl_context = mock.Mock(options=0)
629+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
630630
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
631631
"pymysql.connections.ssl.create_default_context",
632632
new=mock.Mock(return_value=dummy_ssl_context),
@@ -640,7 +640,7 @@ def test_ssl_connect(self):
640640
dummy_ssl_context.load_cert_chain.assert_not_called
641641
dummy_ssl_context.set_ciphers.assert_not_called
642642

643-
dummy_ssl_context = mock.Mock(options=0)
643+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
644644
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
645645
"pymysql.connections.ssl.create_default_context",
646646
new=mock.Mock(return_value=dummy_ssl_context),
@@ -661,7 +661,7 @@ def test_ssl_connect(self):
661661
dummy_ssl_context.set_ciphers.assert_not_called
662662

663663
for ssl_verify_cert in (True, "1", "yes", "true"):
664-
dummy_ssl_context = mock.Mock(options=0)
664+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
665665
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
666666
"pymysql.connections.ssl.create_default_context",
667667
new=mock.Mock(return_value=dummy_ssl_context),
@@ -682,7 +682,7 @@ def test_ssl_connect(self):
682682
dummy_ssl_context.set_ciphers.assert_not_called
683683

684684
for ssl_verify_cert in (None, False, "0", "no", "false"):
685-
dummy_ssl_context = mock.Mock(options=0)
685+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
686686
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
687687
"pymysql.connections.ssl.create_default_context",
688688
new=mock.Mock(return_value=dummy_ssl_context),
@@ -704,7 +704,7 @@ def test_ssl_connect(self):
704704

705705
for ssl_ca in ("ca", None):
706706
for ssl_verify_cert in ("foo", "bar", ""):
707-
dummy_ssl_context = mock.Mock(options=0)
707+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
708708
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
709709
"pymysql.connections.ssl.create_default_context",
710710
new=mock.Mock(return_value=dummy_ssl_context),
@@ -727,7 +727,7 @@ def test_ssl_connect(self):
727727
)
728728
dummy_ssl_context.set_ciphers.assert_not_called
729729

730-
dummy_ssl_context = mock.Mock(options=0)
730+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
731731
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
732732
"pymysql.connections.ssl.create_default_context",
733733
new=mock.Mock(return_value=dummy_ssl_context),
@@ -748,7 +748,7 @@ def test_ssl_connect(self):
748748
)
749749
dummy_ssl_context.set_ciphers.assert_not_called
750750

751-
dummy_ssl_context = mock.Mock(options=0)
751+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
752752
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
753753
"pymysql.connections.ssl.create_default_context",
754754
new=mock.Mock(return_value=dummy_ssl_context),
@@ -770,7 +770,7 @@ def test_ssl_connect(self):
770770
)
771771
dummy_ssl_context.set_ciphers.assert_not_called
772772

773-
dummy_ssl_context = mock.Mock(options=0)
773+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
774774
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
775775
"pymysql.connections.ssl.create_default_context",
776776
new=mock.Mock(return_value=dummy_ssl_context),
@@ -785,7 +785,7 @@ def test_ssl_connect(self):
785785
)
786786
assert not create_default_context.called
787787

788-
dummy_ssl_context = mock.Mock(options=0)
788+
dummy_ssl_context = mock.Mock(options=0, verify_flags=0)
789789
with mock.patch("pymysql.connections.Connection.connect"), mock.patch(
790790
"pymysql.connections.ssl.create_default_context",
791791
new=mock.Mock(return_value=dummy_ssl_context),

0 commit comments

Comments
 (0)
0