שני שמות נמצאים במשחק לפני שהלקוח בכלל מתחבר: שם הקובץ במחשב הנייד (nuc.ovpn) והזהות שהשרת גוזר מהאישור. חיפוש client-config-dir משתמש בשני. שינוי שם הפרופיל בלקוח, או הוספת .conf לקובץ בשרת, לא משנה דבר בשאלה איזה קובץ השרת פותח.

ההשוואה המועילה אינה «איזה שם השתמשתי» אלא «איזה כלל השרת מיישם», משום שאימות בתעודה ואימות בשם משתמש/סיסמה יכולים להפיק שמות אפקטיביים שונים מאותה התחברות.

שם הפרופיל מול השם הנפוץ בתעודה

בהגדרה המחדלית המבוססת על תעודות, השרת לוקח את השם הנפוץ X.509 ומחפש קובץ בשם הזה בדיוק בתוך client-config-dir. פרופיל בשם nuc.ovpn שהתעודה שלו אומרת tester נפתר ל-/etc/openvpn/server/ccd/tester. שם קובץ הלקוח לא נכנס לחישוב לעולם. זה המקום הראשון שבו אי-התאמה מסתתרת.

לכן תיקייה מלאה בפרופילים עם שמות קפדניים עלולה להחמיץ בכל פעם. הקובץ אינו מותאם לפי subject, לפי כתובת דואר אלקטרוני או לפי השם שמוצג ב-GUI; הוא מותאם לפי מחרוזת השם הנפוץ.

במערכת קבצים הרגישה לאותיות גדולות וקטנות, Tester ו-tester הם שני קבצים שונים, ורק אחד מהם נפתח אי פעם. בדקו את השם הנפוץ מהתעודה שהלקוח מציג בפועל, ולא מעותק בהערות שלכם.

username-as-common-name הופך את הכלל

כאשר השרת מריץ אימות בשם משתמש/סיסמה עם username-as-common-name, שם המשתמש המאומת מחליף את השם הנפוץ בתעודה עבור החיפוש הזה.

השוו את שני המקרים ישירות: בזהות תעודה הקובץ הולך אחרי התעודה והחלפת סיסמה אינה רלוונטית; בזהות שם משתמש הקובץ הולך אחרי שם ההתחברות והוצאה מחדש של התעודה אינה רלוונטית. השדה שהשרת מחליף הוא זה שלפיו יש לשנות את השם. תעודה שהוצאה מחדש עם CN חדש משנה בשקט את יעד החיפוש, וקובץ ה-CCD הישן נשאר בדיסק ונראה תקין.

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

מה השרת קורא, ומה הוא מדלג עליו בשקט

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

OpenVPN אינו מוסיף .conf לשם שהוא מחפש, ולכן tester.conf אינו תואם ל-tester. עורך שמסתיר סיומות עלול להשאיר קובץ שנראה תקין ברשימה ואף פעם אינו תואם.

כשאין קובץ תואם, השרת יכול לחזור לקובץ בשם DEFAULT. לכן הגעה של חלק מהגדרות אינה הוכחה שהקובץ לכל לקוח שימש. השוו את הכתובת שהוקצתה או את המסלולים שנדחפו למה שהקובץ לכל לקוח היה מפיק. הרשאות הן המסנן השלישי, משום שהשרת פותח את הקובץ אחרי ויתור על הרשאות; מעטפת root שיכולה לקרוא אותו לא מוכיחה דבר.

שם קובץ נכון אינו מאמת את התוכן

בחירה ותוכן הם כשלים נפרדים. לאחר פתיחת הקובץ הנכון, ההוראות שלו עדיין חייבות להיות תקפות לאותו לקוח.

ifconfig-push חייב להקצות כתובת שהטופולוגיה באמת יכולה להשתמש בה, ו-iroute הגיוני רק עבור תת-רשת מנותבת מאחורי אותו לקוח.

זהות אחת, כמה מכשירים

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

ההשוואה היא בין שיתוף זהות לבין הנפקת תעודה אחת לכל מכשיר. שיתוף פשוט יותר לניהול וגס יותר לביטול, בעוד שתעודות לכל מכשיר עולות יותר בהקמה ונותנות יחידה נקייה לנטרול.

מאמרים קשורים