אם ברצונך ללמוד איך ליצור בקשת תעוזה לאישור IIS, הגעת למקום הנכון. במאמר זה, אני אסביר איך עשיתי זאת באמצעות PowerShell וגם כיצד לקשר אישור לאתר של IIS.
בואו נגיע לנקודה אחת ברורה. אני שונא קריפטוגרפיה ואישורים. לאורך הקריירה שלי, הייתי ה"איש הקריטרי" לזמן קצר כמה פעמים. אך, זה היה פשוט כובע נוסף למנהל המערכת.
I never got to the point where I completely understood the technology and it seemed like every task I tried to accomplish around that area seemed to never work out. It’s definitely an unforgiving technology for sure.
הנה לך סיפור על אוטומציה של התקנת אישור על שרת IIS באמצעות PowerShell.
המשימה
מלקוח, לבקש אישור ציבורי חדש מ-Digicert, להתקין אותו על שרת Windows Server 2012 R2 Core מרחוק הפועל IIS 8.5 בקבוצת עבודה, להגדיר קשר SSL לאתר ולהשתמש באישור שהותקן לקשר. פשוט, נכון? LOLz!
איך זה נעשה, בני?
בגדלום, נדרשות X צעדים כדי להגשיל זאת.
- ליצור בקשת חתימה לאישור IIS על המחשב שבו יותקן האישור. במקרה שלי, היה לי גישה רק דרך WinRM, ולכן הייתי צריך להפעיל את certreq.exe בשרת המרוחק באמצעות
Invoke-Command
ולשלוח את תוכן הבקשה לקובץ מקומי. - השג את ה-CSR שחתום על ידי CA ציבורית. (אין עזרה כאן – התקבל תעודה יפה מאובטחת שחזרתי מקבוצת האבטחה שאני עובד עם). במקרה שלי, צוות האבטחה חזר אלי עם אוסף P7B של תעודות מגולגלות לתוך קובץ .CER הכולל את התעודה שחיפשתי וגם את התעודות האמצעיות. זה לקח לי קצת עשייה כדי שזה יעבוד.
- השלם את בקשת החתימה של התעודה במחשב שבו התעודה תותקנה. זה ישים את התעודה באחסון התעודות.
- צור חיבור SSL IIS בשרת.
- הוסף את התעודה לחיבור האיבר.
יצירת בקשת תעודה IIS
המשימה הראשונה שלך תהיה להפעיל את certreq.exe עם סקריפט PowerShell זה על השרת המרוחק כדי לאגד קובץ בקשה. כדי לעשות זאת, certreq.exe דורש קובץ INF כקלט. קובץ זה משמש לכל האפשרויות השונות של התעודה שלך. מבלי להיכנס לפרטים רבים, זהו העתק של קובץ ה-INF שהשתמשתי בו.
תראה בפונקציה New-CertificateSigningRequest
שאני עושה את זה קל עבורך להתאים אישית את זה. למעשה, אם תשתמש בפונקציות שלי, אתה לא תראה את הקובץ הזה כלל, מכיוון שהוא נדרש זמנית רק ליצירת בקשת ה-CSR (קובץ בקשה).
באופן הבא, תצטרך להשיג את קובץ ה-INF הזה בשרת המרוחק ולהפעיל certreq.exe עם הפרמטרים הבאים כמו certreq.exe -new "$InfFilePath" "$reqFilePath"
.
שזה ייצור קובץ CSR (בקשת קובץ) על המחשב המרוחק. תצטרך לשלוח את הקובץ הזה לצוות האבטחה שלך. זה ייצור גם תעודה הכוללת את שני המפתחות – הפרטי והציבורי – ב־`בקשות תעודה שניתן לאמת` בהקשר המכונה המקומית. `

`להשלמת בקשת התעודה של IIS
במקרה שלי, קיבלתי חזרה קובץ CER יחיד. ייצרתי פונקציה בתסריט PowerShell של IIS כדי לייבא את זה ישירות לאחסון האישי בהקשר המכונה המקומית וגיליתי שה-IIS לא רואה אותו. הסיבה הייתה שהתעודה הייתה צריכה לכלול גם את המפתח הפרטי. ייבוא פשוט של התעודה לאחסון האישי לא היה עובד. יידרש להשלים את בקשת התעודה באמצעות `certreq.exe`
. כדי לעשות זאת, יידרש להעתיק את התעודה שאתה מקבל מהצוות שלך לשרת המרוחק ולהריץ `certreq.exe` בצורה הבאה `certreq.exe -accept -machine "C:\issuedcert.cer"
`.
תצטרך תמיד לוודא שהתעודה שמגיעה חזרה נכנסת תמיד להקשר המכונה המקומית על ידי שימוש בפרמטר `-machine
`. `זה` אמור להושלם בהצלחה על פי כל מה שקראתי, אך בוודאי לא הצליח עבורי. לטעמי, קיבלתי שגיאה שכזו:

זה נראה שזה אומר שהמפתח הציבורי בקובץ הבקשה לא תואם את מה שחזר מצוות האבטחה. כדי לבדוק זאת, פשוט הרץ את `certutil.exe -dump requestfile.req
` ו `certutil -dumpissuedcert.cer
`. גלה למטה דרך הפלט עד שתראה את אזור המפתח הציבורי.

עתה, העתק את כל מפתחות הפרטיים האלו והשווה בעורך טקסט כדי לוודא שהם זהים. אם לא, יש ליצור קשר עם צוות האבטחה שלך כדי לוודא שהבקשה שלך חתומה נכון!
אם הם תואמים, אתה בסדר ולא צריך לקבל את השגיאה ההוא.
צור את הקשר SSL
על השרת המרוחק הרץ:
צרף את התעודה לקשר ה-SSL
על השרת המרוחק, הפעל:
קבל את סקריפט ה- PowerShell של IIS
אם הכל הולך כמו שצריך, אתה אמור להיות בסיום! עכשיו, אם נדרשת עזרה קטנה לעשות את זה, יש לי שלוש פונקציות שיעזרו בזה. נסה לבדוק אותם במאגר הקוד שלי ב- Github:
https://github.com/adbertram/Random-PowerShell-Work/tree/master/Certificates
https://github.com/adbertram/Random-PowerShell-Work/tree/master/IIS
קוד דוגמא
קריאה נוספת
וודא לבדוק פוסטים נוספים בבלוג של ATA לניהול IIS בעזרת PowerShell
Source:
https://adamtheautomator.com/iis-certificate-request/