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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. PHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate

PHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 4 כותבים 513 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • איש נחמדא
    איש נחמדא
    איש נחמד
    כתב ב נערך לאחרונה על ידי איש נחמד
    #1

    הקוד התמים:

    <?php
    $url = 'https://gtfs.mot.gov.il/gtfsfiles/zones_2022.zip';
    // $data = call_api( $url, [] );
    $data = call_api( $url );
    var_dump( $data );
    
    
    function call_api( $url )
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
    
        // Receive server response ...
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        // curl_setopt($ch,CURLOPT_CAINFO,'cacert.pem');
        // curl_setopt($ch,CURLOPT_CAPATH,'cacert.pem');
        // curl_setopt($ch, CURLOPT_CAINFO, 'ca-bundle.crt');
        
        $server_output = curl_exec($ch);
        $error_msg = false;
        if (curl_errno($ch)) {
            $error_msg = curl_error($ch);
        }
            
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        
        curl_close ($ch);
    
        return [ 'code' => $http_code, 'output' => $server_output, 'error' => $error_msg ];
    }
    

    הרצה של הקוד הזה מביאה את התוצאה עם השגיאה:

    array(3) {
      ["code"]=>
      int(0)
      ["output"]=>
      bool(false)
      ["error"]=>
      string(63) "SSL certificate problem: unable to get local issuer certificate"
    }
    

    ראיתי ב-stackoverflow הצעה להוריד את תעודת האבטחה מ-https://curl.se/ca/cacert.pem אבל גם זה לא עזר (מופיע בקוד למעלה בשורה מבוטלת)
    לצערי גם הפתרון שזכה שם ל-724 הצבעות לא עזר במקרה שלי
    ניסיתי את הקוד משרתים שונים: אירוח אתרים של hostinger, אירוח של hostgator, שרת VPS של box
    בכולם השגיאה חוזרת על עצמה
    היה מי שהציע לבדוק אם הזמן בשרת מכוון, הגדרתי את ה-VPS לשעון ישראל אבל גם זה לא פתר את הבעיה

    בדקתי גם את ההצעה של @dovid באשכול דומה:

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    

    אבל גם אז אני מקבל שגיאה:

    array(3) {
      ["code"]=>
      int(0)
      ["output"]=>
      bool(false)
      ["error"]=>
      string(53) "OpenSSL SSL_read: Connection reset by peer, errno 104"
    }
    

    חשוב לציין שכל השרתים אינם עוברים דרך הרשת של נטפרי

    להיות איש נחמד זה מחייב...

    nigunN תגובה 1 תגובה אחרונה
    1
    • איש נחמדא איש נחמד

      הקוד התמים:

      <?php
      $url = 'https://gtfs.mot.gov.il/gtfsfiles/zones_2022.zip';
      // $data = call_api( $url, [] );
      $data = call_api( $url );
      var_dump( $data );
      
      
      function call_api( $url )
      {
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
      
          // Receive server response ...
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          // curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
          // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
          // curl_setopt($ch,CURLOPT_CAINFO,'cacert.pem');
          // curl_setopt($ch,CURLOPT_CAPATH,'cacert.pem');
          // curl_setopt($ch, CURLOPT_CAINFO, 'ca-bundle.crt');
          
          $server_output = curl_exec($ch);
          $error_msg = false;
          if (curl_errno($ch)) {
              $error_msg = curl_error($ch);
          }
              
          $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
          
          curl_close ($ch);
      
          return [ 'code' => $http_code, 'output' => $server_output, 'error' => $error_msg ];
      }
      

      הרצה של הקוד הזה מביאה את התוצאה עם השגיאה:

      array(3) {
        ["code"]=>
        int(0)
        ["output"]=>
        bool(false)
        ["error"]=>
        string(63) "SSL certificate problem: unable to get local issuer certificate"
      }
      

      ראיתי ב-stackoverflow הצעה להוריד את תעודת האבטחה מ-https://curl.se/ca/cacert.pem אבל גם זה לא עזר (מופיע בקוד למעלה בשורה מבוטלת)
      לצערי גם הפתרון שזכה שם ל-724 הצבעות לא עזר במקרה שלי
      ניסיתי את הקוד משרתים שונים: אירוח אתרים של hostinger, אירוח של hostgator, שרת VPS של box
      בכולם השגיאה חוזרת על עצמה
      היה מי שהציע לבדוק אם הזמן בשרת מכוון, הגדרתי את ה-VPS לשעון ישראל אבל גם זה לא פתר את הבעיה

      בדקתי גם את ההצעה של @dovid באשכול דומה:

          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
      

      אבל גם אז אני מקבל שגיאה:

      array(3) {
        ["code"]=>
        int(0)
        ["output"]=>
        bool(false)
        ["error"]=>
        string(53) "OpenSSL SSL_read: Connection reset by peer, errno 104"
      }
      

      חשוב לציין שכל השרתים אינם עוברים דרך הרשת של נטפרי

      nigunN
      nigunN
      nigun
      כתב ב נערך לאחרונה על ידי
      #2

      @איש-נחמד
      נראה שהאתר חסום לגישה מחו"ל

      מייל: nigun@duck.com

      י איש נחמדא 2 תגובות תגובה אחרונה
      2
      • nigunN nigun

        @איש-נחמד
        נראה שהאתר חסום לגישה מחו"ל

        י
        י
        יוס
        כתב ב נערך לאחרונה על ידי יוס
        #3

        @nigun כתב בPHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate:

        @איש-נחמד
        נראה שהאתר חסום לגישה מחו"ל

        עכשיו אני נזכר שעשיתי פרויקט מול ה"נתונים בזמן אמת" וזה עבר רק משרת מקומי

        מערכת מכירות בכל ערוצי המכירה, טלפון-מייל-ואתר
        שיגור הודעות במחירים המשתלמים ביותר
        לפתיחת מערכת https://app.ipsales.co.il/

        תגובה 1 תגובה אחרונה
        0
        • yossizY
          yossizY
          yossiz
          כתב ב נערך לאחרונה על ידי
          #4

          עכשיו בדקתי בשרת באנגליה וזה עובד לי אם משביתים בדיקת תעודות

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
          👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

          איש נחמדא תגובה 1 תגובה אחרונה
          1
          • nigunN nigun

            @איש-נחמד
            נראה שהאתר חסום לגישה מחו"ל

            איש נחמדא
            איש נחמדא
            איש נחמד
            כתב ב נערך לאחרונה על ידי איש נחמד
            #5

            @nigun כתב בPHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate:

            @איש-נחמד
            נראה שהאתר חסום לגישה מחו"ל

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

            להיות איש נחמד זה מחייב...

            תגובה 1 תגובה אחרונה
            0
            • yossizY yossiz

              עכשיו בדקתי בשרת באנגליה וזה עובד לי אם משביתים בדיקת תעודות

              איש נחמדא
              איש נחמדא
              איש נחמד
              כתב ב נערך לאחרונה על ידי
              #6

              @yossiz כתב בPHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate:

              עכשיו בדקתי בשרת באנגליה וזה עובד לי אם משביתים בדיקת תעודות

              תוכל להראות דוגמת קוד של השבתת בדיקת תעודות שעובדת?
              במקרה שלי עשיתי שימוש בהגדרה הבאה שלא פתרה את הבעיה:

                  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
                  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
              

              כמו שכתבתי למעלה

              להיות איש נחמד זה מחייב...

              yossizY תגובה 1 תגובה אחרונה
              0
              • איש נחמדא איש נחמד

                @yossiz כתב בPHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate:

                עכשיו בדקתי בשרת באנגליה וזה עובד לי אם משביתים בדיקת תעודות

                תוכל להראות דוגמת קוד של השבתת בדיקת תעודות שעובדת?
                במקרה שלי עשיתי שימוש בהגדרה הבאה שלא פתרה את הבעיה:

                    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                

                כמו שכתבתי למעלה

                yossizY
                yossizY
                yossiz
                כתב ב נערך לאחרונה על ידי
                #7

                @איש-נחמד לא ניסיתי בקוד, בדקתי על ידי פקודה זו:

                wget --no-check-certificate https://gtfs.mot.gov.il/gtfsfiles/zones_2022.zip
                

                אם גם הפקודה לא עובד לך כנראה שיש חסימה לפי מדינה/IP

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
                👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

                איש נחמדא תגובה 1 תגובה אחרונה
                2
                • yossizY yossiz

                  @איש-נחמד לא ניסיתי בקוד, בדקתי על ידי פקודה זו:

                  wget --no-check-certificate https://gtfs.mot.gov.il/gtfsfiles/zones_2022.zip
                  

                  אם גם הפקודה לא עובד לך כנראה שיש חסימה לפי מדינה/IP

                  איש נחמדא
                  איש נחמדא
                  איש נחמד
                  כתב ב נערך לאחרונה על ידי איש נחמד
                  #8

                  @yossiz כתב בPHP: בעיית SSL ממספר שרתים שונים - unable to get local issuer certificate:

                  @איש-נחמד לא ניסיתי בקוד, בדקתי על ידי פקודה זו:

                  wget --no-check-certificate https://gtfs.mot.gov.il/gtfsfiles/zones_2022.zip
                  

                  אם גם הפקודה לא עובד לך כנראה שיש חסימה לפי מדינה/IP

                  מעניין שלא חשבתי על הכיוון הזה
                  זה עובד, ומקביל גם:

                  curl -k -X GET -o /var/www/html/zones_2022.zip https://gtfs.mot.gov.il/gtfsfiles/zones_2022.zip
                  

                  הבעיה היא שהפקודה המקבילה ב-PHP לא עובדת
                  עד שבסוף נפל לי הרעיון להוסיף user-agent באופן ידני וזה פתר את הבעיה...

                  להיות איש נחמד זה מחייב...

                  תגובה 1 תגובה אחרונה
                  2
                  • yossizY yossiz התייחס לנושא זה ב

                  שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                  נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                  בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

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


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

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

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