Exchange Certificate – תעודות אבטחה שרת מיילים
מאת: שי פיס
למי שטרם התעסק בשרת Exchage 2007 נושא התעודות האמינות מנוהלות באופן כמעט מוחלט דרך ה EMS – Exchange Management Shell.
היות והמאמר רלוונטי גם לגבי Exchage 2010 באחרון יש שליטה נרחבת יותר בתחום התעודות דרך הממשק GUI, אם כי לעולם לא תקבלו את כל הנתונים הנחוצים דרך ממשק זה.
נתחיל במטרת המדריך: המדריך הנ”ל ייתן לכם תמונת רקע על הצורך בשימוש בתעודות אמינות בשרת אקסצ'ינג’, איך מנפיקים אותם ובעיקר מה עושים אחרי שתעודה פגה ורוצים לחדשה. למה אני אומר “במיוחד חידוש”, מסיבה פשוטה, רוב ההתקנות של אקסצ’ינג היום בארץ מבוצעות על ידי אינטגרטור כזה אחר, לעומת זאת כאשר מגיע רגע החידוש לא תמיד היינו רוצים לשלם לחברה חיצונית רק בשביל לחדש תעודה שכבר הנפקנו בעבר.
נתחיל בקצת רקע:
בשביל מה בכלל צריך תעודת אמינות בשרת Exchange ?
התשובה הראשונה והברורה לגמרי היא כמובן שירות OWA.
Outlook Web Access הוא שירות כמעט חובה בכל אירגון, שמאפשר כמובן לגשת לתיבת המייל שלנו בכל מקום בעולם באמצעות כתובת אינטנרט פשוטה. כמובן שבכדי לאבטח את הנושא הזה אנחנו מצפינים את המידע באמצעות SSL, ומכאן שתעודת אמינות זמינה ועדכנית צריכה להיות מותקנת על השרת.
גם שירות כמו ActiveSync אותו שירות לא פחות חשוב, שמאפשר לכם לסנכרן את הטלפון הנייד שלכם ישירות מול התיבת מייל שלכם בארגון, משתמש בהצפנה מסוג (SSL (HTTPS .
אולם שני שירותים אלה לא משתמשים לבד בתעודות הצפנה:
TLS – הזדהות והצפנה בין שרתי מיילים
SMIME – הצנה של תוכן מייל ספציפי
AutoDiscover – הגדרה אוט’ של שרת אקסצ’ינג’
בקיצור הבנו את העניין (אגב יש עוד כמה שירותים).
ובכן, מכל הנושאים הללו אבחר להתמקד ברלוונטיים ביותר:
Internal Exchange Certificate:
לתעודה הזו ניתן לקרוא “התעודה הראשית” היות והיא בד”כ התעודה שתחזיק את רוב השירותים של האקסצ’ינג: SMTP, IIS, POP, IMAP.
External Exchange Certificate:
לתעודה הזו ניתן לקרוא “תעודה חיצונית” היות וזו התעודה שנמצאת בד”כ על השירות שמפרסם את האקסצ’ינג’ החוצה. בד”כ יהיה זה שירות ISA, אם כי זה יכול להיות גם מוצר צד שלישי.
אגב, מדוע בכלל צריך שתי תעודות ? הסיבה ברורה התעודה החיצונית היא בד”כ תעונה חוקית, דהיינו כזו שקנינו מספק תעודות מורשה (Verisign, Comodo וכולי…). היות ומשתמשים מגיעים לשרת OWA שלנו מהעולם הם צריכים להיתקל בתעודה מוכרת כדי שהדפדפן אינטרנט שלהם לא ייתן להם הודעה שגיאה “מנפיק התעודה לא ידוע”
לעומתה התעודה הפנימית משמשת את השרת אקסצ’ינג’ לדבר עם ה OUTLOOK ועם שרתי Exchange אחרים שנמצאים בניהול שלנו. היות וכל התחנות נמצאות לרוב באותו דומיין שבו נמצא השרת מיילים אין צורך בתעודה חיצונית שכן גם השרת אקסצ’ינג’ וגם התחנות סומכים על תעודה מקומית שהונפקה על ידי CA מקומי בארגון.
יחד עם זאת לכל תעודה אמינה יש תוקף, במידה ופג תוקף התעודה, המשתמשים יתחילו להתלונן שה OUTLOOK נותן הודעות שגיאה ושירותים נוספים יפסיקו לעבוד.
קחו לדוגמא את שירות OWA, שמציג החוצה למשתמשים תעודה חוקית שהונפקה על ידי ספק עולמי, אותו שירות מדבר פנימה עם השרת Exchange עם תעודה אחרת לגמרי, איזו תעודה אתם שואלים ?
כמובן ש”התעודה הראשית” תרשו לי לצייר לכם תרשים שיסביר את העניין:
אוקי, מלבד העובדה שאני צייר גרוע, הנושא אמור להיות ברור לגמרי עכשיו.
1. שרת ISA נמצא מחוץ לדומיין ומחוץ ל LAN, עליו התקנו תעונה אמינה שקיבלנו מספק תעודות ידוע ומוכר.
2. שרת מייל פנים אירגוני שאליו הנפקנו תעודה משרת ROOT CA פנים אירגוני.
השרת ISA שלנו ידבר (דהיינו יצפין את המידע) עם משתמשים חיצוניים באמצעות התעודה העליונה, אולם עם השרת מיילים הפנים ארגוני הוא ידבר באמצעות התעודה התחתונה.
אם למישהו היה ספק או שהוא עדיין תקוע ב Exchange 2003 שרת ה ISA כאשר הוא ניגש לשרת Exchange כדי לפרסם תיבת מייל ניגש כברירת מחדל ב HTTPS, ולכן הוא חייב תעודה. בשרת Exchange 2003 הוא היה ניגש ב HTTP, ולכן אז המאמר הזה לא היה רלוונטי.
אם כן, תארו לכם מצב שבו פג תוקפה של התעודה האחרונה. מה יקרה לדעתכם ?
אז כמו שאמרנו ה OUTLOOK בתחנות יתחיל להעלות הודעת שגיאה על כך שהתעודה של השרת מייל לא תקינה, אולם ניתן יהיה ללחוץ “המשך למרות זאת” והאוטלוק ימשיך לעבוד. לעומתו כל שירות שמבוסס על התעודה הזו כגון חברנו OWA ושאר השירותים מרשימה למעלה, יפסיקו לעבוד לגמרי.
אז מה עושים ?
שלב ראשון עוצרים וחושבים! האם באמת מדובר בתוקף תעודה ? כדי לבדוק את הנושא נפתח את ה Exchange shell ונקיש את הפקודה הבאה: (למען הסר ספק, היות ומדובר בתעודות אמינות, התעודות תמיד נשמרות בתוך תקייה מוצפנת במחשב המקומי, לכן במקרה הזה נהיה חייבים להקיש את הפקודות ישירות על השרת Exchange)
Get-ExchangeCertificate | List
מה נקבל ? רשימה של כל התעודות שמותקנות על השרת Exchange.
נחפש תעודה שליד השורה Services כתוב: IIS, SMTP, POP, IMAP
במקרה הזה התעודה תקינה, ותקפה עד ל 2012, אולם במקרה שלכם אתם תראו שהתאריך עבר ותאלצו לחדש את התעודה.
כיצד מחדשים את התעודה ?
(ראשית אומר שאם תקראו מאמרים באנגלית, גם של מיקרוסופט תמצאו כמעט בכל מקום שאין דבר כזה לחדש תעודה אלא רק להנפיק חדשה, כמובן שזה קישקוש אחד גדול, ואין צורך להנפיק חדשה. כל מה שאנחנו נצטרך לעשות זה לייצא את התעודה הקיימת, עם כל הנתונים שכבר הוכנסו אליה בעבר, וננפיק תעודה עם תאריך עדכני)
כדי לייצא את התעודה הקיימת יש לאתר את ה Thumbprint. כך לדוגמא במקרה שלנו המספר הוא:
055825CB2C44A6F65ABF15C79BF71CCB27E3E0DA
נקיש את הפקודה הבאה:
Get-ExchangeCertificate -thumbprint "250FFA66D3276F7446F33FFEEE7C7DC9BE
F7B3CF" | New-ExchangeCertificate -GenerateRequest -Path c:\cer.txt -privatekeye
xportable $True
כמובן שמי שעתיק את הפקודה כמו שהיא בלי לרשום את ה Thumbprint של השרת שלו, מוטב לו שיפסיק לקרוא את המאמר עכשיו בטרם יהרוס לעצמו את השרת מייל לנצח
לאחר מכן תמצאו קובץ txt בכונן C: שלכם, שמכיל את כל המידע הנחוץ כדי להנפיק את התעודה. התוכן של הקובץ יראה בדיוק כך:
אם תנסו לקחת את הקובץ csr הזה ולהנפיק תעודה בדרך במסורתית דהיינו להקיש את הפקודה הפשוטה:
certreq -submit c:\.txt
ולאחריה לבחור מהרשימה שתעלה לכם את השרת CA של הארגון שלכם. תגלו מהר מאוד שזה לא עובד ומסיבה שאין צורך להסביר עליה כרגע. יום יבוא ואכתוב כמה מילים על Certificate Templates ושם אתם תבינו את העניין.
בקיצור כדי להתקדם נשתמש בכלי הנחמד שנקרא: certreq.exe
נקיש את הפקודה הבאה:
certreq.exe -submit -attrib "CertificateTemplate:WebServer" c:\cer.csr
לאחר מכן בחלון שקופץ, נבחר את השרת Root CA של האירגון שלנו ו…. ואללה! תעודה חדשה הונפקה.
האם סיימנו ? ממש לא. זה שהונפקה תעודה חדשה לא אומר שלא צריך לטעון אותה לשרת Exchange ו… זוכרים את השירותים (Services) צריך להעביר אותם לתעודה החדשה. מה עושים ?
ראשית הולכים לשרת Root CA שלנו ומייצאים קובץ bindig של התעודה. עושים את זה בצורה פשוטה מאוד באמצעות ה GUI, פשוט מוצאים את התעודה ברשימה לוחצים עליה לחיצה כפולה ובוחרים Export. עוברים הלאה ובוחרים באופציה הבאה:
לאחר מכן שומרים את התעודה בכונן C נגיד בשם: ExchangeP7B.p7b
עכשיו נטען את התעודה ששמרנו לתוך ה Exchange
נקיש את הפקודה הבאה:
Import-ExchangeCertificate -Path C:\ExchangeP7B.p7b
עכשיו נקיש את הפקודה הבאה כדי לראות שהתעודה אכן מופיעה ברשימה:
Get-ExchangeCertificate | List
נעתיק שוב את ה Thumbprint, כמובן של התעודה שזה עכשיו הנפקנו (איך נזהה אותה? תאריך ההנפקה שלה יהיה היום!)
לאחר שהעתקו את הThumb נקיש את הפקודה הבאה:
“Enable-ExchangeCertificate "055825CB2C44A6F65ABF15C79BF71CCB27E3E0DA
בזה הרגע איפשרנו את התעודה על השרת. עכשיו נעביר אליה את השירותים:
Enable-ExchangeCertificate -thumbprint "055825CB2C44A6F65ABF15C79BF71CC
B27E3E0DA" -services IIS, POP, IMAP, SMTP
אם ביצעתם הכל נכון, תגלו שה OUTLOOK בתחנות של המשתשים כבר לא מתריע על בעיה בתעודה ברגע שפותחים אותו.
האם עכשיו ה OWA עובד ? ממש לא . היות ולרוב שירות ה OWA מפורסם באמצעות שרת שלא נמצא בדומיין, השרת הזה עדיין לא מכיר את התעודה החדשה. (אגב אם החלפתם במקרה במשך הזמן הזה גם שרת CA אזי הוא גם לא מכיר את השרת CA החדש)
מה עושים ? מייצאים את התעודה החדשה ומתקינים אותה על השרת ISA. איך ?
מאוד פשוט, חוזרים לשרת ROOT CA, ומייצאים את התעודה בדיוק באותו אופן שבו ייצענו את ה P7B. אולם הפעם אנחנו בוחרים את האופציה הראשונה שנקראת: CER.
אחרי שנבחר את האופציה הזו ונעבור לדף הבא נהיה חייבים לסמן את האופציה Export private key!
אם ביצענו הכל נכון נקבל קובץ שהסיומת שלו היא PFX. אז נגיד שקראתם לקובץ
Exch.pfx
את הקובץ הזה נקח לשרת ISA ונשמור אותו בכונן C.
על השרת ISA, בשורת RUN, נלחץ MMC ואנטר.
שם נלחץ על File ואז על Add or Remove snap in
נוסיף את הכלי שנקרא Certificates ושם באופציות נבחר Computer.
בעץ שנפתח נלחץ קליק ימני על Personal ושם נבצע Import לתעודה ששמרנו.
(להלן תמונת מסך שמסכמת את הפעולות האחרונות)
עכשיו הכל אמור לעבוד.
בהצלחה!