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

ליצור את הזוג במעטפת אחת

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

umask 077  # applies to files created next, so keep the next line in this shell
wg genkey | tee privatekey | wg pubkey > publickey
wg pubkey < privatekey  # re-derive and compare with publickey

wg genkey כותב מפתח פרטי Curve25519 בגודל 32 בייט ב-base64; wg pubkey קורא אותו וגוזר את המפתח הציבורי המתאים, והפקודה tee שומרת את הערך הפרטי תוך העברתו בצינור. הסדר הזה הוא הסיבה לכך ששורת ההרשאות באה ראשונה, ולכך שהדבקת הצינור במסוף שני מאבדת אותה בשקט. שמות הקבצים להמחשה, והחשוב הוא ששני הקבצים נוחתים במקום שהמכשיר הבעלים שולט בו. אם קובץ פרטי כבר קיים בהרשאות ברירת מחדל, chmod 600 privatekey מתקן את הקובץ הנוכחי ולא עושה דבר עם עותקים שנעשו קודם.

לשמור את החצי הפרטי במכשיר אחד

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

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

מה מפעיל העמית צריך מכם

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

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

לבדוק את הזוג בחילוף אמיתי

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

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

להחליף מפתח בלי פער

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

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

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