כל הזכויות שמורות לטל בן שושן – Shushan.co.il
במאמר זה נראה כיצד ליצור בעזרת openssl מפתח סימטרי, זאת אומרת שאותו המפתח פותח ונועל את המידע
לפני תחילת המאמר יש לקרוא
הסבר על תעודות אבטחה SSL Certificate
הסבר על Public Key Infrastructure
הסבר על תקשורת מאובטחת SSL \ TLS הצפנה RSA ומנגנון החלפת מפתחות Diffie Hellman
דרישות:
- Kali מותקן (בו קיים כבר הכלי openssl)
מפתח סימטרי
קודם נרשום את הפקודה המלאה ואז אסביר כל חלק בפקודה
תחילה יצרתי ב Home של Root (או איפה שאתם נמצאים בטרמינל בקאלי)
קובץ בשם tal.txt והכנסתי בתוכו טקסט…
openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in tal.txt -out tal.encrypt.txt
openssl – הכלי בו אנו משתמשים על מנת לבצע את ההצפנה
enc – הצפנה סימטרית (symmetric cipher routines)
-aes-256-cbc – סוג הצופן, במקרה כאן הוא AES עם 256 סיביות (CBC Mode) הרשימה המלאה שבה תומך openssl היא באתר שלהם.
-md sha512 – הPassphrase זה הסיסמא שתקישו בהמשך, ממנה יווצר המפתח (AES) וכאן הוא שואל באיזה Hash? שכן הוא הופך את הסיסמא שלכם ל Hash (חד-כיווני)
-pbkdf2 – (הוא מערבל את המפתח (הPassphrase שתקישו בהמשך) עם Salt והוא מבצע זאת 1000 פעם.
-iter 1000 – כמה "ערבולים" הוא יבצע
-salt – "תוספת" לPassphrase ובכך להקשות על Brute Force
-in – מה הקובץ אותו "נצפין"
-out – מה הקובץ שיצא לאחר ההצפנה
Passphrase – הסיסמא שתקישו, הסיסמא תוצפן בעזרת AES-256 ואז תהפוך ל SHA512
הסיסמא שלכם, הוא המפתח שמצפין והוא גם המפתח שפותח.
כעת נפתח את "הקובץ" המוצפן
openssl enc -d -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in tal.encrypt.txt -out tal.uncrypt.txt
כאן הוספתי רק את האופציה
d- שהיא Decrypt , "לפתוח" את ההצפנה
והפעם הכנסתי את הקובץ המוצפן, ובסוף אני מוציא את הקובץ לא מוצפן
כל הכבוד! כעת ניצור מפתחות בתצורה אסימטרית
הצפנה אסימטרית
1 – יצירת מפתח פרטי ומפתח ציבורי
במאמר זה נציג כיצד ליצור מפתח ציבורי ומפתח פרטי.
נבצע פעולה פשוטה של , המפתח הפרטי ינעל והמפתח הציבורי יפתח.
תחילה נקיש את הפקודה במלואה ואסביר על על האופציות השונות
כעת ניצור את המפתח הציבורי ואת הפרטי כל אחד לקובץ שלו
המפתח הפרטי מתחלק ל 2, עם סיסמא Passphrase או בלי
אם השימוש הוא לאתרי אינטרנט, אז בלי סיסמא
אם הוא לקבצים, אז כדאי
בלי סיסמא יש להקיש
openssl genrsa -out privatekey.pem 2048
—–לא חובה——
עם סיסמא יש להקיש
openssl genrsa -aes256 -out privatekey.pem 2048
——————–
כעת מה Private Key ניצור את ה Publickey
openssl rsa -in privatekey.pem -pubout -out publickey.crt
rsa – נשתמש באלגוריתם של RSA
passphrase – יהיה לכם רק במקרה בו יצרתם Privatekey המוגן בסיסמא הסיסמא שממנה יווצר המפתח הפרטי ממנו יווצר המפתח הציבורי
- ניתן ליצור Passphrase אבל לא תוכלו להכניס את התעודה לשרת Web שכן Apache או IIS לא יודעים לקרוא Private Key שהוא מוצפן , עניין האבטחה פה הוא שהPrivate Key לאף אחד אין גישה אליו חוץ ממכם.
privatekey.key המפתח הפרטי
publickey.crt המפתח הציבורי
————– לא חובה ———————————————————————————-
- ניתן להפוך את התעודה ל PCKS#8 על ידי הפקודה
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
————————————————————————————————————-
כעת נצפין את הקובץ tal.txt. בעזרת המפתח הציבורי, לאחר מכן נפתח אותו עם המפתח הפרטי
openssl rsautl -encrypt -pubin -inkey publickey.crt -in tal.txt -out talencrypt.txt
rsautl – כלי לשימוש של מפתחות מסוג RSA
encrypt – לבצע הצפנה
pubin – להכניס את התעודה הציבורית
inkey – להשתמש במפתח של המפתח הציבורי
in tal.txt – הקובץ שאותו נצפין
out talencrypt.txt – מה השם של הקובץ שיוצא לאחר ההצפנה
אם נבדוק את הקובץ talencrypt.txt נקבל ג'יבריש
כעת "נפתח" את ההצפנה על הקובץ בעזרת המפתח הפרטי
openssl rsautl -decrypt -inkey privatekey.pem -in talencrypt.txt -out TalSecretFile.txt
decrypt – "לפתוח" את ההצפנה
inkey – בעזרת המפתח הפרטי
in – הקובץ המוצפן
out – הקובץ שיצא לאחר ה decrypt
* אם הוא לא מבקש סיסמא זה תקין
מצויין! הקובץ כעת פתוח
יצירת CSR – Certificate Signing Request
כאשר תרצו לקנות תעודה אבטחה לאתרכם , המנפיק יבקש CSR, זאת אומרת שתיצרו בקשה לתעודה ואז תעלו לו
כך בעצם המנפיק לא יוצר את ה Private Key ואינו מודע אליו, הCSR מכיל את פרטי הבקשה, והמנפיק מייצר מהCSR את ה Public Key שזה התעודה ה crt שאתם צריכים לשים בשרת על מנת שהמשתמשים יקבלו Https
על מנת ליצור CSR
כעת ייצרו 2 קבצים האחד הוא ה Private Key והשני הוא ה csr
בהמשך הוא ישאל אתכם לרשום Password Challange, אל תרשמו כלום, לחצו אישור ואז שוב אישור
openssl req -out request.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key
כעת על מנת שהתעודה תיהיה גרסה V3 ולא V1 יש ליצור קובץ חדש
touch v3.ext
אחרי שיצרתם את הקובץ ערכו את הקובץ והכניסו את הטקסט הבא
nano v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
שמרו את הקובץ וצאו
וכעת על מנת ליצור Self Sign Certificate אנחנו צריכים לחתום את התעודה, עם ה PrivateKey שלנו והCSR
openssl x509 -req -days 365 -in request.csr -signkey privatekey.key -out certificate.pem -extfile v3.ext
ואז יהיה לנו Public Certificate.
הסרת Passpharse מPrivate Key
openssl rsa -in privatekey.key -out server-nopassphrase.key
יצירת תעודה אבטחה ל Web
בצורה זו התעודה תיווצר בתצורת V3
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privatekey.key -out publickey.crt
את הפרטים יש להקיש לפי מה שצריך , כתובת, עיר וכו'
רק ב common name יש להקיש את כתובת הדומיין שלכם
הכנסת התעודה לVestaCP
לאחר שיש לכם Public Certificate וכעת יש לכם Privatekey תוכלו להכניס אותו לאתר שלכם ב VestaCP
תוכלו "להכריח" את האתר שלכם לרוץ רק ב https על ידי הפקודות
cd /usr/local/vesta/data/templates/web
wget http://c.vestacp.com/0.9.8/rhel/force-https/nginx.tar.gz
tar -xzvf nginx.tar.gz
rm -f nginx.tar.gz
לאחר מכן יש לסמן באתר שלכם את האופציה הבאה
כעת פתחו את התעודות על ידי כך שתעבירו אותם ל Notepad או ל Leadpad
והעתיקו את התעודה והPrivatekey
כעת על מנת שהמחשב שלכם יסמוך על התעודה , לחצו על התעודה ה Public Certificate
לחצו על התקנת אישור
לחצו על מחשב מקומי או Local Computer
סמנו מקם את כל האישורים במאגר הבא ובחרו ברשויות אישורים עליונות מהימנות
הבא וסיום
כעת פתחו דפדפן והיכנסו לאתר, כעת המערכת שלכם תסמוך על והכניסה תהיה ללא אזהרה או שגיאה
יצירת PFX
PFX מכיל גם את ה Private Key וגם את התעודה עצמה, שכמובן מכילה את ה Public Key
כעת ניצור תעודה מתוך ה Private Key (בתוכו גם ה PublicKey) התעודה כעת תיהיה זו שאפשר ל"טעון" לשרת ווב,
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privatekey.key -out publickey.crt
אבל בשביל שרת מיקרוסופט שאנחנו רוצים נניח IIS, נצטרך PKCS שהוא מכיל את התעודה עצמה והמפתח הפרטי שלה נעבור לפקודה
openssl pkcs12 -inkey privatekey.key -in publickey.crt -export -out rootCA.pfx