Home אבטחת מידעInformation Security יצירת מפתח אסימטרי וסימטרי בעזרת Openssl – יצירת מפתח ציבורי ופרטי

יצירת מפתח אסימטרי וסימטרי בעזרת Openssl – יצירת מפתח ציבורי ופרטי

0 comment
נהנתם מהמאמר ? שתפו אותו!

כל הזכויות שמורות לטל בן שושן – 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

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

Leave a Comment