<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[התקנת תעודת אבטחה ל httplib2 בפיתון]]></title><description><![CDATA[<p dir="auto">שלום.<br />
אשמח עם מישהו יודע כיצד עושים שhttplib2 (ספרייה בפיתון) תתמוך בתעודת אבטחה של נטפרי, כמובן התקנתי את התעודת אבטחה ושמתי את משתני הסביבה ואכן זה עובד עם ספריית request אבל לא עם httplib2 (אני מוגבל לספרייה הזאת ולא יכול לשנות את הקוד)<br />
תודה.</p>
<p dir="auto">זה הפלט:</p>
<pre><code>Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
    import httplib2; h=httplib2.Http(); print(h.request('https://www.googleapis.com')[0].status)
                                              ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/httplib2/__init__.py", line 1701, in request
    (response, content) = self._request(
                          ~~~~~~~~~~~~~^
        conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/httplib2/__init__.py", line 1421, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
                          ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/httplib2/__init__.py", line 1343, in _conn_request
    conn.connect()
    ~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.14/site-packages/httplib2/__init__.py", line 1135, in connect
    self.sock = self._context.wrap_socket(sock, server_hostname=self.host)
                ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/ssl.py", line 455, in wrap_socket
    return self.sslsocket_class._create(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        sock=sock,
        ^^^^^^^^^^
    ...&lt;5 lines&gt;...
        session=session
        ^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/ssl.py", line 1076, in _create
    self.do_handshake()
    ~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.14/ssl.py", line 1372, in do_handshake
    self._sslobj.do_handshake()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1081)
</code></pre>
]]></description><link>https://tchumim.com/topic/17454/התקנת-תעודת-אבטחה-ל-httplib2-בפיתון</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Apr 2026 19:44:54 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/17454.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Apr 2026 22:55:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to התקנת תעודת אבטחה ל httplib2 בפיתון on Fri, 03 Apr 2026 08:44:00 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mordechay">@<bdi>Mordechay</bdi></a><br />
הבעיה מוכרת ומתועדת ב-<a href="https://github.com/httplib2/httplib2/issues/2" target="_blank" rel="noopener noreferrer nofollow ugc">GitHub Issue #2</a>.<br />
בניגוד ל-<code>requests</code> שמשתמש ב-<code>REQUESTS_CA_BUNDLE</code>, ל-httplib2 יש משתנה סביבה משלו: <strong><code>HTTPLIB2_CA_CERTS</code></strong> (נוסף ב-<a href="https://github.com/httplib2/httplib2/pull/117" target="_blank" rel="noopener noreferrer nofollow ugc">PR<br />
#117</a>, גרסה v0.12.0).</p>
<p dir="auto">הפתרון (בלי לשנות קוד)</p>
<ol>
<li>שרשרו את תעודת Netfree עם התעודות הקיימות של httplib2:</li>
</ol>
<pre><code class="language-bash">  cat /path/to/netfree.pem $(python3 -c "import httplib2; print(httplib2.CA_CERTS)") &gt; ~/combined-ca.pem
</code></pre>
<ol start="2">
<li>הגדירו את משתנה הסביבה:</li>
</ol>
<pre><code class="language-bash">  export HTTPLIB2_CA_CERTS=~/combined-ca.pem                                                                                                                           
</code></pre>
<ol start="3">
<li>בדקו שזה עובד:</li>
</ol>
<pre><code class="language-python">  python3 -c "import httplib2; print(httplib2.Http().request('https://www.googleapis.com')[0].status)"
</code></pre>
<p dir="auto">חשוב: הקובץ חייב להכיל גם את תעודת Netfree וגם את תעודות ה-CA הרגילות, אחרת אתרים אחרים יפסיקו לעבוד.</p>
<p dir="auto">מקורות</p>
<ul>
<li><a href="https://github.com/httplib2/httplib2/issues/2" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/httplib2/httplib2/issues/2</a> — Issue מתועד על הבעיה</li>
<li><a href="https://github.com/httplib2/httplib2/blob/master/httplib2/certs.py" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/httplib2/httplib2/blob/master/httplib2/certs.py</a> — קוד המקור שמגדיר את סדר העדיפויות</li>
</ul>
<p dir="auto">תשובת קלוד קוד לאחר מחקר על הספריה<br />
האם זה עוזר לך?</p>
]]></description><link>https://tchumim.com/post/170783</link><guid isPermaLink="true">https://tchumim.com/post/170783</guid><dc:creator><![CDATA[A0533057932]]></dc:creator><pubDate>Fri, 03 Apr 2026 08:44:00 GMT</pubDate></item></channel></rss>