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

מתחילים במעטפה: מי חתם על הפרופיל הזה

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

אם הקובץ נמצא אצלכם ב-Mac, בדקו אותו לפני שהוא מגיע לטלפון. כלי האבטחה מפענח את מעטפת ה-CMS ומדפיס את ה-plist שהמכשיר יקרא, כלומר אותו תוכן בלי כפתור התקנה בדרך. התיעוד של Apple על אכיפת תצורה מתאר חתימה כאימות מקור, וזה בדיוק ההיקף המתואר כאן.

security cms -D -i corp-vpn.mobileconfig -o corp-vpn.plist
plutil -p corp-vpn.plist

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

פותחים כל מטען ומצינים מה הוא מתקין

פרופיל הוא מכל, והחלק המעניין הוא מערך PayloadContent שבתוכו. כל רשומה נושאת PayloadType שאומר מה המכשיר יתקין: תצורת VPN מנוהלת, זהות PKCS#12, תעודת שורש או רישום ניהול. הדפיסו את הסוגים לפני שתקראו ולו אחת מההגדרות.

plutil -extract PayloadContent xml1 -o - corp-vpn.plist |
  grep -E 'PayloadType|PayloadDisplayName'

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

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

עוקבים אחרי התעודות אל החיבור שמשתמש בהן

רשמו את התעודות בחבילה והתאימו כל אחת לתפקיד. תעודת הלקוח מזהה את המכשיר הזה בפני השער, ה-CA שהנפיק אותה שייך לשרשרת האמון של אותו חיבור, ותעודת שורש שהותקנה עבור פרוקסי או שירות פנימי אינה אוטומטית עוגן לכל אתר HTTPS. ב-iOS, תעודת שורש שהותקנה ביד נשארת לא מהימנה עבור TLS עד שתפעילו אותה תחת הגדרות, אודות, הגדרות אמון בתעודות, ואילו תעודת שורש שנמסרה על ידי ניהול מהימנה בלי השלב הזה. ההבדל הזה הוא בדיוק הסיבה לכך שמטרת המטען חשובה.

openssl pkcs7 -inform DER -in corp-vpn.mobileconfig -print_certs -noout
security find-certificate -a -c "Corp Root" -p | openssl x509 -noout -subject -dates

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

אחרי ההתקנה: מאמתים, ויודעים מה הסרה עושה

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

profiles show -type configuration
scutil --nc list

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

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

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