אותו שם קובץ ca.crt, תעודה אחרת: מה להשוות
שני פרופילים יכולים לספק ca.crt עם תוכן שונה. קחו טביעת אצבע של מה שהתהליך טוען, ואז בדקו שזה עוגן האמון שהתכוונתם אליו.
שני פרופילים מספקים שניהם קובץ בשם ca.crt, מנהרה אחת עולה והאחרת נכשלת עם שגיאת שרשרת. פתיחת שני הקבצים זה לצד זה מכריעה את זה לעתים רחוקות, וכיבוי האימות מכריע את זה בכיוון הלא נכון. השאלה שהשגיאה באמת שואלת היא צרה יותר: איזו תעודה כל תהליך טוען כעוגן האמון שלו, והאם השתיים הן אותו אובייקט? ענו על זה קודם ושאר האבחון יקבל כיוון. שם הקובץ הוא תווית אריזה, וגם הנתיב הכתוב בפרופיל אינו סמכותי, כך שהכול תלוי במה שהתהליך באמת קורא.
מצאו את התעודה שהלקוח באמת טוען
OpenVPN מקבל את הרשות בשתי צורות, והצורה קובעת אילו בתים חשובים. פרופיל יכול להצביע על קובץ חיצוני עם ca, או להטמיע את התעודה בתוך בלוק <ca> בפרופיל עצמו. כששניהם קיימים, הבלוק המוטמע מנצח והקובץ שליד הפרופיל אינו נפתח לעולם.
קראו את הפרופיל שנכשל ומצאו באיזו צורה הוא משתמש לפני שתשוו משהו. עותק שנלקח מתיקייה שכנה, או מהחבילה שממנה הגיע הפרופיל האחר, לא אומר לכם דבר על מה התהליך הזה סומך. כך גם הנתיב בתצורה: הוא נפתר ביחס למקום שבו הלקוח הופעל, וזה לא תמיד התיקייה שאתם מסתכלים עליה. קראו את הפרופיל, לא את התיקייה.
תעודות מזוהות לפי התוכן שלהן: המפתח הציבורי, הנושא והמנפיק, חלון התוקף והחתימה על כל זה. שני קבצים עם בתים זהים הם אותה תעודה יהיה שמם אשר יהיה, ושני קבצים עם אותו שם יכולים להיות רשויות לא קשורות. השם הוא תווית אריזה, לא זהות.
קחו טביעת אצבע של שתי העותקים עם openssl
טביעת אצבע היא האש על קידוד ה-DER של התעודה, הצורה שהחתימה מכסה, ולכן סופי שורות וטקסט הכותרת לא יכולים להשפיע עליה. חשבו אותה לכל קובץ ויש לכם שני מחרוזות הקסדצימליות מופרדות בנקודתיים שמתאימות או לא. אין צורך לקרוא שום דבר אחר בתעודה כדי לענות על שאלת ההשוואה.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
מפתה להפנות את openssl לפרופיל עצמו, אבל הוא קורא את בלוק התעודה שמופיע ראשון בקובץ, ופרופיל בדרך כלל נושא <cert> לפני <ca>. חלצו את בלוק הרשות, ואז קחו טביעת אצבע של הקובץ שחולץ, כי זה העותק שהלקוח באמת ישתמש בו.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
טביעות אצבע זהות אומרות שחומר האמון הוא אותו דבר וששגיאת השרשרת נובעת מסיבה אחרת, וזו חקירה אחרת. טביעות אצבע שונות אומרות תעודות שונות, ושם מתחיל הפרק הבא.
קראו אי-התאמה לפני שאתם מניחים תקיפה
טביעות אצבע שונות אומרות תעודות שונות ולא יותר. הנפקה מחדש, סבב, רשות ששינתה שם או חבילה מיושנת כולם מייצרים קבצים שונים עם היסטוריות לגיטימיות לחלוטין. איזו מהן שייכת לפריסה היא שאלה למפעיל או לרישום הפריסה, לא לזמן השינוי של הקובץ. ארכיונים מעתיקים חותמות זמן, ולכן קובץ חדש יותר אינו אוטומטית העוגן הנכון.
שורש שחותם את עצמו הוא נורמלי, ולכן מציאה שלו אינה הוכחה לבעיה. תפקיד המאמת הוא לבנות נתיב מתעודת השרת לעוגן שנמסר לו, ושגיאת שרשרת בדרך כלל אומרת שלא ניתן היה להשלים את הנתיב הזה.
בדקו אם העוגן של הפרופיל שנכשל הוא רשות שהפריסה עדיין מנפיקה ממנה. אם טביעת האצבע לא מתאימה לשום דבר ברישום הפריסה, הפרופיל פשוט מיושן, ושום כוונון בצד הלקוח לא יתקן זאת.
תקנו את האמון בלי לכבות את האימות
התיקון לטווח קצר הוא לכבות את האימות או להוסיף כל תעודה בשרשרת כעוגן. שניהם גורמים להודעה להיעלם, ושניהם משנים אילו שרתים הלקוח יקבל מעתה. הפעילו את האימות מחדש, התקינו את העוגן המיועד ונסו שוב.
אם השרשרת נבנית כעת אבל מופיעה שגיאה אחרת, זהו התקדמות: אימות שם, תאריכי תוקף ושלילה הם בדיקות נפרדות עם הודעות נפרדות. שמרו את זוג טביעות האצבע ואת טקסט השגיאה המקורי יחד בכרטיס, כדי שהאדם הבא יראה איזה עוגן נטען ואיזה היה צפוי. זוג טביעות אצבע קטן מספיק להדבקה בהערת מסירה, והמקרה הבא ייקח אז חמש דקות במקום אחר צהריים.
השיגו את הרשות הנכונה דרך אותו ערוץ מאומת שהעביר את הפרופיל. הוצאת תעודה מהשרת מפני שהנושא שלה נראה מוכר היא פעולה אחרת, והיא מרחיבה בשקט את מה שהלקוח יאמין בו.