18890: when ARVADOS_API_HOST_INSECURE is set, also disable certificate
authorWard Vandewege <ward@curii.com>
Thu, 17 Mar 2022 17:06:50 +0000 (13:06 -0400)
committerWard Vandewege <ward@curii.com>
Thu, 17 Mar 2022 17:06:50 +0000 (13:06 -0400)
       hostname checking in the Python SDK when talking to Keep.

Arvados-DCO-1.1-Signed-off-by: Ward Vandewege <ward@curii.com>

sdk/python/arvados/keep.py
sdk/python/tests/test_keep_client.py

index 0018687ff35a585c33ce07378acb7f05e0b98522..1a83eae944c59f8dde5e3a7c63de8bbe9c62a9c9 100644 (file)
@@ -376,6 +376,7 @@ class KeepClient(object):
                     curl.setopt(pycurl.HEADERFUNCTION, self._headerfunction)
                     if self.insecure:
                         curl.setopt(pycurl.SSL_VERIFYPEER, 0)
+                        curl.setopt(pycurl.SSL_VERIFYHOST, 0)
                     else:
                         curl.setopt(pycurl.CAINFO, arvados.util.ca_certs_path())
                     if method == "HEAD":
@@ -478,6 +479,7 @@ class KeepClient(object):
                     curl.setopt(pycurl.HEADERFUNCTION, self._headerfunction)
                     if self.insecure:
                         curl.setopt(pycurl.SSL_VERIFYPEER, 0)
+                        curl.setopt(pycurl.SSL_VERIFYHOST, 0)
                     else:
                         curl.setopt(pycurl.CAINFO, arvados.util.ca_certs_path())
                     self._setcurltimeouts(curl, timeout)
index aa7e371bf47223773b40008fca6b924d87627ac6..605b90301cd0bd78133a7ece408b6138b3aba864 100644 (file)
@@ -265,6 +265,9 @@ class KeepClientServiceTestCase(unittest.TestCase, tutil.ApiClientMock):
             self.assertEqual(
                 mock.responses[0].getopt(pycurl.SSL_VERIFYPEER),
                 0)
+            self.assertEqual(
+                mock.responses[0].getopt(pycurl.SSL_VERIFYHOST),
+                0)
 
         api_client.insecure = False
         with tutil.mock_keep_responses(b'foo', 200) as mock:
@@ -276,6 +279,9 @@ class KeepClientServiceTestCase(unittest.TestCase, tutil.ApiClientMock):
             self.assertEqual(
                 mock.responses[0].getopt(pycurl.SSL_VERIFYPEER),
                 None)
+            self.assertEqual(
+                mock.responses[0].getopt(pycurl.SSL_VERIFYHOST),
+                None)
 
     def test_refresh_signature(self):
         blk_digest = '6f5902ac237024bdd0c176cb93063dc4+11'