چگونگی پیاده سازی و عملکرد SSL

مقدمه

این مطلب قسمتی از بحث هایی هست که شبانه با دوستان مطرح میکنیم پس شرمنده به خاطر فرمت دوستانه و خارج از فرم نرمال بودنش


بزارید از اول اولش بگم

اصلا نمی خوام بگم چرا و چطوری کار میکنه الان

میخوام بگم چطوری یه سایت زدین https رو فعال کنید

خب ببینید سایت ها یه سرور دارن

که به پورت هشتاد گوش میدن

یعنی شما به http://google.com درخواست میدید دارید به google.com:80 درخواست میدید

خب این گوش دادن چطوریه؟

شما تو جاوا با سوکت به فلان پورت گوش می‌دادید و جواب میدادید

یه همچین سیستمی هم پیاده شده

که بهش میگن وب سرور

خب مثلا

اپاچی

یا NginX

اینا وب سرورن

خب حالا که چی

حالا میخوایم یه سایت بالا بیاریم که مرورگر بازش کرد بگه به به httpsه و سبز شه

از الان بگم که پورت https 443 هست

خب شاید شنیده باشید که ssl رو میخرن

یعنی چه؟

برا اینکه سایتم سبز شه تو مرورگر باید پول بدم؟

پول زوره؟

ن پول زور نیست

پول کاری هست که داره برات می کنه

زحمت میکشه

خب اول از همین روی سیستمتون باید یه کلید خصوصی ایجاد کنید

@pic telegram
@pic telegram

این شکلیه کلید خصوصیتون

بعد باید با این کلید خصوصیتون یه گواهینامه درست کنید

زمان ساخت گواهینامه ازتون یه سری سوال می پرسه جواب میدید(یه رمزم می پرسه)

@pic telegram
@pic telegram

این شکلی

خب حالا اینا رو که ساختی میدی به اون سایتی که میخوای ازش ssl بخری

اونجا بهت یه سری فایل میده میکس میکنی میدی به وب سرور اون هر موقع مرورگر ازش پابلیک کی خواست بهش میده(جلو تر میگم چرا مرورگر از سرور پابلیک کی میخواد)

این قسمتو دیگه با شدت تمام کمپرس کردم

خب حالا سایتتون https شد

سبزم شد

که چه

برو پز بده سایتم تو مرورگر سبزه

حالا بگیم این ssl چه غلطی مکنه

پس خوب گوش کنید

یه لحظه

یه لحظه

یه نکته از دستم در رفت

وقتی شما https راه میندازی باید دیگه http رو تعطیل کنی

یعنی چه؟

یعنی هر کی به http درخواست داد ریدایرکتش کنی به https

وگرنه

این Httpsت به درد عمتم نمیخوره

پس فهمیدید که ما اگر به http درخواست بدیم به پورت هشتاد درخواست میدیم و اگر به https درخواست بدیم به پورت 443

برا همینه بعضی سایتا هم https دارن هم http

خعله خب حالا بگیم این ssl چه غلطی می کنه

مرورگر میاد میبینه درخواست به پورت 443ه

میگه اوکی

بیا یه هندشیک بکنیم

این هندشیک اینطوریه که

کلاینت یه سری اطلاعات از خودش به سرور میده

و نکته ی مهم اینه که سرور در جوابش بهش یه پابلیک کی میده

همون پابلیک کی که بالا گفتم

کلاینت با این پابلیک کی چه غلطی می کنه؟

ببینید شما با پابلیک کی هر چی رو اینکریپت کنید فقط با پرایوت کی میشه بازش کرد

یعنی اگر شما این در اتاقو بستی دیگه نمیتونی بازش کنی

هیچ کس نمیتونه

فقط کسی که کلید در رو داره میتونه

یعنی هر کسی میتونه درو ببنده ولی فقط کسی که کلید داره میتونه بازش کنه

کلاینت یه رمز رندم جنریت میکنه و با این پابلیک کی اون رو اینکریپت میکنه

میده سرور

حالا کی میتونه بخونه رمز چی بوده؟

فقط سرور

خب هندشیک تموم شد

یه نکته بگم این هندشیک به صورت request response عین ریکواست های http نیست و سوکته

کانکشن برقرار شده دو تا کامپیوتر عاقل دارن با هم حرف میزنن

حالا ارتباط بین سرور و کلاینت با اون کلید رمز میشه

و کسی به جز اون دوتا کلیدو ندارن

حالا سوال پیش میاد

این الان امنیت کامله؟

ننننننن

این هیچی نیست

فقط کارو سخت کرده

چرا ؟

چطوری میتونم این فرایند رو دور بزنم؟

من میام توی روتر دستکاری میکنم میگم تمام درخواست های کلاینت به سرور رو بده من

من خودم جوابشو میدم

اینجا من میشم سرور برای کلاینت و هر چی سرور

پس میتونم بفهمم کلاینت چی میخواد به سرور بگه بهم بعد هندشیک

منم هر چی بهم گفت خودم با سرور صحبت میکنم جواباش به درخواستای کلاینت رو میدم😝😂

خب این که نشد امنیت

مسخره کردین مارو؟

ن عزیزم یادته رفتیم ssl خریدیم؟

یادته گفتم قراره برامون یه کاری کنه؟

الان وقتشه

وقتی کلاینت از سرور پابلیک کی رو میگیره به CA ها میگه آقا این پابلیک کی برای این دامنس؟

نکنه پابلیک کی یکی دیگه باشه

ایجا CA بهت میگه این پابلیک کی برای اون دامنه هست یا ن

و اینطوریه که اینجا میتونیم اطمینان کنیم سرورمون اوکیه و کسی جز سرور جواب مون رو نمیده