Skip to content

איך מתקנים שגיאות תעודה ב־Git HTTPS בלי לכבות את האימות

פרסום המקור: . עדכון המקור: . תרגום ובדיקה: .

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

1. מחזירים את אימות התעודות לפעולה

אם כיביתם בעבר את האימות בהגדרה ברמת המשתמש (--global), החזירו אותו לפעולה:

git config --global http.sslVerify true

מתוך המאגר שבו התרחשה התקלה, בדקו את ההגדרות. ב־Windows, תחביר המרכאות בדוגמאות כאן מיועד ל־PowerShell, ולא ל־Command Prompt:

git config --show-origin --show-scope --get-regexp '^http\..*(sslverify|sslcainfo|sslbackend|schannelusesslcainfo)$'
git config --get-urlmatch http.sslVerify https://git.example.com/team/repo.git

החליפו את כתובת הדוגמה בכתובת המאגר המרוחק שלכם. הצגת מקור ההגדרה והיקף התחולה שלה עוזרת לאתר הגדרות סותרות; התאמה לפי כתובת מאתרת גם הגדרות ייעודיות לשרת. הגדרות של המאגר, של עץ העבודה (worktree), של שורת הפקודה או של כתובת מסוימת עדיין עשויות לגבור על התיקון ברמת המשתמש. בדקו מאין מגיעה ההגדרה הבעייתית, ואז הסירו או תקנו אותה. שאילתה שלא מצאה ערך אינה מוכיחה שהאימות כבוי: ברירת המחדל היא אימות פעיל. ראו תיעוד ההגדרות של Git.

בדקו גם את משתני הסביבה של תהליך Git שפועל בפועל, כולל הפעלה מתוך סביבת פיתוח או משימת אינטגרציה רציפה (CI). הסירו את המשתנה GIT_SSL_NO_VERIFY במקום לתת לו ערך שרק נראה בטוח: לפי תיעוד Git, עצם הגדרתו בסביבת התהליך מבטלת את האימות. בדקו אם סקריפטים או כלים שמפעילים את Git מוסיפים הגדרות בשורת הפקודה או דרך GIT_CONFIG_COUNT, GIT_CONFIG_KEY_* ו־GIT_CONFIG_VALUE_*. ראו תיעוד משתני הסביבה של Git ותיעוד משתני הסביבה המשפיעים על התצורה.

2. מתקנים את סיבת התקלה

רשמו את הודעת השגיאה המדויקת ואת שם השרת המרוחק. אם חסרה תעודת ביניים, יש לתקן את שרשרת התעודות שמוגדרת בשרת. תעודה שפג תוקפה דורשת החלפה. אם שם השרת אינו תואם לתעודה, צריך לתקן את הכתובת או להשתמש בתעודה שמכסה את שם השרת המיועד. הוספת רשות אישורים אינה מתקנת תעודה שפג תוקפה או אי־התאמה בשם השרת.

אם הארגון משתמש ברשות אישורים פרטית מאושרת (CA), קבלו את קובץ תעודות האמון דרך ערוץ מאומת של מנהל המערכת או של תשתית המפתחות הציבוריים (PKI) בארגון. אמתו בנפרד את מקור הקובץ. אל תהפכו תעודה שהורדתם מהחיבור שנכשל לרשות מהימנה רק כדי להעלים את השגיאה.

אם רכיב ה־TLS שבו Git משתמש מסתמך על קובץ תעודות, הדוגמה הבאה מגבילה את קובץ האמון לשרת HTTPS מסוים. הכתובת והנתיב הם מצייני מקום שיש להחליף רק בפרטים שאומתו ואושרו:

git config --global http.https://git.example.com/.sslCAInfo /approved/path/company-ca-bundle.pem

ההגדרה http.sslCAInfo בוחרת קובץ תעודות לאימות; משתנה הסביבה GIT_SSL_CAINFO יכול לגבור עליה. בשימוש ב־Windows Schannel, העדיפו את מאגר התעודות המנוהל של Windows. כאשר Schannel נבחר במפורש, Git בדרך כלל נמנע משימוש בקובץ הזה. ההגדרה http.schannelUseSSLCAInfo משנה את ההתנהגות הזאת, והשימוש בקובץ עשוי לבוא במקום האמון שמספק המאגר המובנה. בדקו את ההנחיות הרשמיות ל־Schannel לפני שילוב השיטות.

3. בודקים שוב, בלי לדחוף שינויים

אחרי בדיקת התצורה ומשתני הסביבה, אפשר להשתמש בפקודה הבאה מול המאגר המרוחק המורשה שלכם. ודאו ש־origin מצביע אל יעד ה־HTTPS שהתכוונתם לבדוק:

git ls-remote origin

הפקודה git ls-remote מציגה את ההפניות שבמאגר המרוחק וכך מאפשרת לבדוק גישה אליו בלי לעדכן בו ענפים; ייתכן שעדיין תידרש הזדהות. השאירו את אימות התעודות ואת בדיקות הביטול פעילות. אם הבדיקה מצליחה, תעדו את התוצאה מאותו מחשב ובאותו הקשר הפעלה שבהם התרחשה התקלה — לא מתהליך אחר עם הגדרות שונות.

לתהליך אבחון מפורט, ראו את המדריך באנגלית להבחנה בין שגיאות בשרשרת תעודות TLS לבין שגיאות בשם השרת.

תרגום לעברית עבור The Useful Byte. לקריאת המקור באנגלית.

Post a Comment

Previous Post Next Post