0

httplib2.Http クラスの request メソッドが取るパラメータは何だろうと思っていました。単純な get メソッドを使用しようとしていますが、SSL3_GET_SERVER_CERTIFICATE エラーが発生するため、使用する URL は検証が必要な証明書を提供しているようです。そのため、httplib2 ライブラリを使用して、リクエストに証明書の検証を無視するように指示できるかどうか疑問に思っていました (urllib.request の検証不可能なパラメーターなど)。これが私のコードです:

   import httplib2
   h = httplib2.Http(".cache")
   h.credentials_add(username, password)
   resp, content = h.request(url, "GET")
4

1 に答える 1

4

disable_ssl_certificate_validation証明書の検証を無視するために使用できます。以下のサンプルを確認してください。ただし、 Python 3.x では以下のバグにより動作しません。Python33\Lib\site-packages\httplib2\__init__.pyしたがって、この問題のコメントで推奨されているように更新する必要があります。

disable_ssl_certificate_validation = True の場合、HTTPS 要求が機能しない

import httplib2

h = httplib2.Http(".cache", disable_ssl_certificate_validation=True)
resp, content = h.request("https://github.com/", "GET")

Python 3.x のパッチ:

diff --git a/__init__.py b/__init__.py
index 65f90ac..4495994 100644
--- a/__init__.py
+++ b/__init__.py
@@ -823,10 +823,13 @@ class HTTPSConnectionWithTimeout(http.client.HTTPSConnection):
                 context.load_cert_chain(cert_file, key_file)
             if ca_certs:
                 context.load_verify_locations(ca_certs)
+        check_hostname = True
+        if disable_ssl_certificate_validation:
+            check_hostname = False
         http.client.HTTPSConnection.__init__(
                 self, host, port=port, key_file=key_file,
                 cert_file=cert_file, timeout=timeout, context=context,
-                check_hostname=True)
+                check_hostname=check_hostname)


 SCHEME_TO_CONNECTION = {
于 2013-10-17T09:21:46.837 に答える