OpenSSL על Windows 10: מדריך PowerShell מקיף

ייצור תעודות SSL יכול להיות משימה מסובכת, מלאה באכזבה ודאגה. אבל אין צורך שזה יהיה כך! אם יש לך Windows 10 ו־OpenSSL, בנוסף לעזרה קטנה מהמדריך הזה, תהיה בדרכך להצלחה.

במאמר זה, תלמד כיצד להתקין את OpenSSL ב־Windows 10. לאחר התקנה, תוכל ליצור תעודות SSL, לאתר ולתקן בעיות בתעודות, ולהמיר בין פורמטים.

בואו נתחיל לשלוט ב־OpenSSL ב־Windows 10 עם PowerShell!

קשור: ניהול תעודות עם מנהל התעודות של Windows ו־PowerShell

דרישות מוקדמות

במאמר זה, תלמד באמצעות גישה מעשית. בעוד ש־OpenSSL היא כלי שהיה בעבר כלי של מערכת ההפעלה Linux, תוכל להשתמש בו גם עם מערכת ההפעלה Windows.

כל התמונות במדריך זה צולמו מ־Windows 10 ב־build 1909 ו־PowerShell 7.

מתקין את OpenSSL ב־Windows 10 עם PowerShell ו־Chocolatey

בהנחה שהתקנת את Chocolatey באמצעות ה הוראות התקנה, המשימה הראשונה שלך היא להתקין את OpenSSL ב- Windows 10. כדי לעשות זאת, פתח את חלון הפקודות של PowerShell והרץ choco install OpenSSL.Light כפי שמוצג למטה.

Installing OpenSSL.Light using Chocolatey package manager in PowerShell

זהו! עכשיו התקנת את OpenSSL בעזרת PowerShell.

התקן ספריית עבודה

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

המדריך הזה ישמור על כל התעודות והקבצים הקשורים ב- קובץ C:\certs. ניתן ליצור תיקייה בעזרת PowerShell על ידי הרצת הפקודה למטה.

New-Item -ItemType Directory -Path C:\certs

עכשיו עוד הגיע הזמן להגדיר את OpenSSL.

הגדרת OpenSSL

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

פתח את PowerShell והרץ את הפקודה למטה. הפקודה מורידה קובץ הגדרות מדגם מ-MIT ושומרת אותו כ- openssl.cnf בתיקיית העבודה הנוכחית.

Invoke-WebRequest 'http://web.mit.edu/crypto/openssl.cnf' -OutFile .\openssl.cnf

עכשיו ניתן לפתוח את הקובץ openssl.cnf ותראה משהו שנראה כמו למטה.

Sample OpenSSL configuration file

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

עדכן משתני סביבת פרופיל של PowerShell

כדי שהכל יתנהל בצורה חלקה, עליך לשנות את פרופיל ה-PowerShell שלך ב-Windows 10. קביעת משתני סביבה מאפשרת לך לעבוד בקלות עם גרסאות שונות של OpenSSL שאולי יהיו לך מותקנות.

I suggest adding two environment variables to your PowerShell profile called path and OPENSSL_CONF. You will update the PATH environment variable to ensure you can run the openssl binary in any location while on the command line.

מתחת לך תראה איך ליצור פרופיל של PowerShell אם עדיין אין לך. הפקודה הזו מוסיפה את נתיב הבינארי של OpenSSL ל-PATH שלך ומשהה לנתיב קובץ ההגדרות ל-OPENSSL_CONF.

# הוסף משתני סביבה לפרופיל של PowerShell
# בדוק אם יש פרופיל, אם לא נמצא צור אחד!
if (-not (Test-Path $profile) ) {
    New-Item -Path $profile -ItemType File -Force
}

# ערוך את הפרופיל להוספת שורות אלו
'$env:path = "$env:path;C:\Program Files\OpenSSL\bin"' | Out-File $profile -Append
'$env:OPENSSL_CONF = "C:\certs\openssl.cnf"' | Out-File $profile -Append

כדי להשתמש במשתני הסביבה, הפעל מחדש את הפרופיל שלך על ידי הקלדת . $profile או סגור ופתח מחדש את PowerShell.

כעת תוכל לקרוא לבינארי openssl בקלות מכל מקום שבו תהיה ב-PowerShell כפי שמוצג למטה.

Verifying OpenSSL version in PowerShell

שימוש ב-OpenSSL ב-Windows 10 ליצירת CSR ומפתח פרטי

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

קשור: המדריך שלך לתעודות X509 לתמים

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

openssl req -new -out MyFirst.csr
Generating a CSR and Private Key using OpenSSL in PowerShell

לאחר השלמת התהליך, תהיה לך CSR תקף ומפתח פרטי שניתן להשתמש בו כדי להנפיק תעודת SSL עבורך.

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

ניתן לקרוא עוד על אפשרויות ה-CSR הזמינות ול צפות בדוגמאות של תצורות בדפי המדריך. ל- OpenSSL יש גם מאגר GitHub פעיל עם דוגמאות.

יצירת זוגות מפתח RSA

ניתן גם ליצור זוגות מפתח RSA (ציבורי/פרטי) בעזרת OpenSSL. כדי לעשות זאת, תחילה, צור מפתח פרטי באמצעות הפקודה המשנית genrsa כפי שמוצג למטה.

כאשר אתה מפעיל את הפקודה למטה, OpenSSL ב- Windows 10 יצור מפתח פרטי RSA באורך של 2048 ביטים. המפתח הזה יוצר תוך כדי במערכת חומרה מודרנית. המפתח התוצאתי יופיע בתיקיית העבודה

# יצירת מפתח פרטי באורך מרבי של 2048 ביטים
# גדלי מפתח יכולים להיות 512, 758, 1024, 1536 או 2048. 
openssl genrsa -out rsa.private 2048

לאחר מכן, יש ליצור מפתח ציבורי באמצעות המפתח הפרטי שנוצר כעת באמצעות התת-פקודה rsa. התחביבים למטה ייצרו מפתח ציבורי בשם rsa.public בתיקיית העבודה מתוך המפתח הפרטי rsa.private.

# יצירת מפתח ציבורי באמצעות המפתח הפרטי
openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM

יצירת תעודה עם חתימה עצמית

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

בוא ניצור תעודה עם חתימה עצמית לפני שנמשיך לשלב הבא. כדי לעשות זאת, הזן את הפקודה ליצירת תעודה SSL X509. תעודה זו תשתמש בקריפטוגרפיה SHA256, תהיה תקפה למשך 365 יום עם אורך מפתח RSA של 2048 ביטים. התעודה תישמר בתיקיית העבודה.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

אתה מוכן כעת לייבא את התעודה לדפדפן או שרת.

אימות CSR, תעודות ומפתחות עם OpenSSL

בדיקת המידע ב-CSR, מפתח פרטי, תעודה, או PKCS#12 יכולה לחסוך לך זמן בטיפול בשגיאות SSL. לפעמים ייתכן ונעשה שימוש במפתח שגוי כדי ליצור תעודה, לדוגמה. ייתכן והמידע המזהה בתעודה אינו נכון.

בואו נתחיל בבדיקת CSR באמצעות הפקודה req עם כמה פרמטרים:

openssl req -text -noout -verify -in .\MyFirst.csr
Checking a CSR with OpenSSL in PowerShell

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

ניתן גם לבדוק תעודה באמצעות הפקודה המשנית x509 עם מספר פרמטרים:

openssl x509 -in .\certificate.crt -text -noout | more
Checking a certificate with OpenSSL with the x509 command in PowerShell

המרת תעודות עם OpenSSL

ישנן מקרים שבהם יישום לא משתמש בפורמט תעודה מסוים. ניתן להתמודד עם בעיה כזו ביישום בשם HAproxy, לדוגמה, שדורש תעודת PEM כאשר ייתכן שיש לך תעודה בפורמט DER (.crt .cer .der).

כדי להדגים את המרת התעודה, בואו נמיר את התעודה העצמית שנוצרה קודם בפורמט DER (certificate.crt) ל-PEM. השתמשו בקוד בחתיכת הקוד הבאה לעשות זאת.

הפקודה הבאה משתמשת בפקודה המשנית x509 עם הפרמטר של -inform שצריך להתאים לפורמט של הקובץ -in לאחריו בא פורמט -out.

openssl x509 -inform der -in .\certificate.crt -out .\certificate.pem

ניתן גם להפוך את הסדר אם תרצו להפוך מפורמט PEM ל-DER כמו שמוצג למטה.

openssl x509 -outform der -in .\certificate.pem -out .\certificate.der

ולאחרונה, תוכל להמיר את PKCS#12 ל-PEM ו-PEM ל-PKCS#12. זהו סוג קובץ המכיל מפתחות פרטיים ותעודות. כדי להמיר לתבנית PEM, השתמש בתת-פקודה pkcs12.

openssl pkcs12 -in .\SomeKeyStore.pfx -out .\SomeKeyStore.pem -nodes

תוכל להמיר תעודת PEM ומפתח פרטי לתבנית PKCS#12 באמצעות -export עם מספר אפשרויות נוספות. למטה אתה מייצא תעודה בפורמט PKCS#12 באמצעות מפתח פרטי באמצעות SomeCertificate.crt כמקור קלט. שימוש בערך אופציה -certfile בערך MyCACert.crt מאפשר לך לאמת את SomeCertificate.crt.

openssl pkcs12 -export -out SomeCertificate.pfx -inkey SomePrivateKey.key -in SomeCertificate.crt -certfile MyCACert.crt

פתרון בעיות ואיתור באגים

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

OpenSSL מאפשרת גם לך לבדוק תעודות לאחר כדי תקינות קובץ ולבדוק אם ישנה פגיעה אפשרית בנתונים. באמצעות סיכום MD5, אתה יכול להשתמש בדוגמאות קוד הבאות כדי לבדוק תעודות, מפתחות ו-CSR's:

# תעודות
openssl x509 -noout -modulus -in .\certificate.crt | openssl md5

# מפתחות ציבוריים / פרטיים
openssl rsa -noout -modulus -in .\privateKey.key | openssl md5

# בקשה לשרת תעודות
openssl req -noout -modulus -in .\MyFirst.csr | openssl md5

# בדיקת חיבור SSL חיצוני
openssl s_client -connect www.google.com:443

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

כאן דוגמה לאיך הקוד נראה כאשר מורץ בפוורשל:

Sample troubleshooting command output with OpenSSL in PowerShell

סיכום

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

משאבים נוספים

Source:
https://adamtheautomator.com/openssl-windows-10/