דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. התקנת תעודת אבטחה ל httplib2 בפיתון

התקנת תעודת אבטחה ל httplib2 בפיתון

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 2 כותבים 65 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • MordechayM מנותק
    MordechayM מנותק
    Mordechay
    כתב נערך לאחרונה על ידי
    #1

    שלום.
    אשמח עם מישהו יודע כיצד עושים שhttplib2 (ספרייה בפיתון) תתמוך בתעודת אבטחה של נטפרי, כמובן התקנתי את התעודת אבטחה ושמתי את משתני הסביבה ואכן זה עובד עם ספריית request אבל לא עם httplib2 (אני מוגבל לספרייה הזאת ולא יכול לשנות את הקוד)
    תודה.

    זה הפלט:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
        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,
            ^^^^^^^^^^
        ...<5 lines>...
            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)
    
    A0533057932A תגובה 1 תגובה אחרונה
    0
    • MordechayM Mordechay

      שלום.
      אשמח עם מישהו יודע כיצד עושים שhttplib2 (ספרייה בפיתון) תתמוך בתעודת אבטחה של נטפרי, כמובן התקנתי את התעודת אבטחה ושמתי את משתני הסביבה ואכן זה עובד עם ספריית request אבל לא עם httplib2 (אני מוגבל לספרייה הזאת ולא יכול לשנות את הקוד)
      תודה.

      זה הפלט:

      Traceback (most recent call last):
        File "<string>", line 1, in <module>
          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,
              ^^^^^^^^^^
          ...<5 lines>...
              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)
      
      A0533057932A מנותק
      A0533057932A מנותק
      A0533057932
      כתב נערך לאחרונה על ידי
      #2

      @Mordechay
      הבעיה מוכרת ומתועדת ב-GitHub Issue #2.
      בניגוד ל-requests שמשתמש ב-REQUESTS_CA_BUNDLE, ל-httplib2 יש משתנה סביבה משלו: HTTPLIB2_CA_CERTS (נוסף ב-PR
      #117
      , גרסה v0.12.0).

      הפתרון (בלי לשנות קוד)

      1. שרשרו את תעודת Netfree עם התעודות הקיימות של httplib2:
        cat /path/to/netfree.pem $(python3 -c "import httplib2; print(httplib2.CA_CERTS)") > ~/combined-ca.pem
      
      1. הגדירו את משתנה הסביבה:
        export HTTPLIB2_CA_CERTS=~/combined-ca.pem                                                                                                                           
      
      1. בדקו שזה עובד:
        python3 -c "import httplib2; print(httplib2.Http().request('https://www.googleapis.com')[0].status)"
      

      חשוב: הקובץ חייב להכיל גם את תעודת Netfree וגם את תעודות ה-CA הרגילות, אחרת אתרים אחרים יפסיקו לעבוד.

      מקורות

      • https://github.com/httplib2/httplib2/issues/2 — Issue מתועד על הבעיה
      • https://github.com/httplib2/httplib2/blob/master/httplib2/certs.py — קוד המקור שמגדיר את סדר העדיפויות

      תשובת קלוד קוד לאחר מחקר על הספריה
      האם זה עוזר לך?

      תגובה 1 תגובה אחרונה
      3
      • MordechayM מנותק
        MordechayM מנותק
        Mordechay
        כתב נערך לאחרונה על ידי
        #3

        תודה (חסכת לי 20 דולר 😉 )
        בכל מקרה ניסיתי כבר להשתמש במשתנה סביבה וזה לא עבד, אבל כנראה שזה לא חל (משתמש בדוקר) עכשיו ניסיתי וזה כן עבד בנוגע לשרשור התעודות לכאורה אני לא צריך לעשות את זה כיוון שבנטפרי הכל חתום באותה תעודה, מה שכן זה יוכל ליצור לי בעיות אם בהמשך אני יפעיל את זה בלי נטפרי.
        (בנוסף אני משאר שנטפרי כבר ביצעו את שרשור התעדות כי אחרת כל התכונות שפעולות עם זה (java וכדו') לא היו עובדות ללא נטפרי)

        A0533057932A תגובה 1 תגובה אחרונה
        0
        • MordechayM Mordechay

          תודה (חסכת לי 20 דולר 😉 )
          בכל מקרה ניסיתי כבר להשתמש במשתנה סביבה וזה לא עבד, אבל כנראה שזה לא חל (משתמש בדוקר) עכשיו ניסיתי וזה כן עבד בנוגע לשרשור התעודות לכאורה אני לא צריך לעשות את זה כיוון שבנטפרי הכל חתום באותה תעודה, מה שכן זה יוכל ליצור לי בעיות אם בהמשך אני יפעיל את זה בלי נטפרי.
          (בנוסף אני משאר שנטפרי כבר ביצעו את שרשור התעדות כי אחרת כל התכונות שפעולות עם זה (java וכדו') לא היו עובדות ללא נטפרי)

          A0533057932A מנותק
          A0533057932A מנותק
          A0533057932
          כתב נערך לאחרונה על ידי
          #4

          @Mordechay https://github.com/httplib2/httplib2/blob/master/httplib2/cacerts.txt

          תמיד אתה יכול לערוך את זה ולהוסיף ידנית את התעודות של נטפרי

          תגובה 1 תגובה אחרונה
          1
          • MordechayM מנותק
            MordechayM מנותק
            Mordechay
            כתב נערך לאחרונה על ידי
            #5

            זה רעיון, בכל מקרה זה כבר עובד לי עם המשתנה סביב.

            תגובה 1 תגובה אחרונה
            0
            תגובה
            • תגובה כנושא
            התחברו כדי לפרסם תגובה
            • מהישן לחדש
            • מהחדש לישן
            • הכי הרבה הצבעות


            בא תתחבר לדף היומי!
            • התחברות

            • אין לך חשבון עדיין? הרשמה

            • התחברו או הירשמו כדי לחפש.
            • פוסט ראשון
              פוסט אחרון
            0
            • דף הבית
            • קטגוריות
            • פוסטים אחרונים
            • משתמשים
            • חיפוש
            • חוקי הפורום