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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 4 כותבים 292 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • איש נחמדא מנותק
    איש נחמדא מנותק
    איש נחמד
    כתב ב נערך לאחרונה על ידי איש נחמד
    #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
    • nigunN מנותק
      nigunN מנותק
      nigun
      השיב לאיש נחמד ב נערך לאחרונה על ידי
      #2

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

      מייל: nigun@duck.com

      י איש נחמדא 2 תגובות תגובה אחרונה
      2
      • י מחובר
        י מחובר
        יוס
        השיב לnigun ב נערך לאחרונה על ידי יוס
        #3

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

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

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

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

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

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

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

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

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

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

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

            תגובה 1 תגובה אחרונה
            0
            • איש נחמדא מנותק
              איש נחמדא מנותק
              איש נחמד
              השיב ל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
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לאיש נחמד ב נערך לאחרונה על ידי
                #7

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

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

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

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                איש נחמדא תגובה 1 תגובה אחרונה
                2
                • איש נחמדא מנותק
                  איש נחמדא מנותק
                  איש נחמד
                  השיב לyossiz ב נערך לאחרונה על ידי איש נחמד
                  #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 התייחס לנושא זה ב

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

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

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