article

پروتکل امن HTTPS و رمزنگاری SSL چیست؟

web-ssl-https

همان طور که می دانیم اطلاعاتی که به طور معمول در صفحات وب رد و بدل می شوند در بستر پروتکل HTTP (مخفف Hyper Text Transfer Protocol) انتقال می یابند، این پروتکل استانداردی تعریف شده است که با آن متن و سایر اطلاعات چندرسانه ای را در وب منتقل می کنند که این داده ها به دلیل خام بودن و رمزنگاری نشدن برای افراد سوم شخص قابل خواندن هستند، به طور مثال اگر کلمه عبور خود را در بستر این پروتکل از صفحه مرورگر به سرور یک سایت ارسال کنیم ممکن است از طریق سرویس دهنده اینترنت یا اشخاص دیگری که به صورت مجاز یا غیر مجاز به ترافیک شبکه ما دسترسی دارند، قابل روئیت باشد (به فرض با استفاده از برنامه هایی تحت عنوان Sniffer)، لذا استفاده از پروتکل HTTP از لحاظ امنیتی برای انجام کارهایی که با اطلاعات حساس از جمله حساب های بانکی و رمزهای مشتریان سر و کار دارند به هیچ وجه شیوه مناسبی نیست، از این رو بانک ها، فروشگاه های اینترنتی و در کل سایت هایی که امنیت کاربران برایشان اهمیت زیادی دارد، از پروتکل دیگری به نام HTTPS (مخفف Hyper Text Transfer Protocol Secure) جهت انتقال داده های رمزنگاری شده به شیوه SSL (مخفف Secure Sockets Layer) استفاده می کنند.

پروتکل HTTPS چیست و چه فرقی با HTTP دارد؟


HTTPS پروتکلی است که در بستر آن امکان رمزنگاری (Encrypt) و انتقال اطلاعات رمزنگاری شده فراهم می شود، به لحاظ تخصصی در HTTP در حالت پیش فرض پورت 80 مورد استفاده قرار می گیرد در حالی که در HTTPS این پورت 443 است، از طرفی همانطور که گفتیم در HTTP داده ها به صورت ساده و خوانا هستند اما در HTTPS رمزنگاری داده ها به وسیله لایه SSL و نسل جدید آن یعنی TLS (مخفف Transport Layer Security) انجام می شود.

SSL به چه معناست؟


SSL مخففی است از سرواژه های Secure Sockets Layer و در اصطلاح به استاندارد رمزنگاری و انتقال داده ها در وب اطلاق می شود، SSL را ابتدا شرکت Netscape به منظور نقل و انتقال امن و رمز نگاری شده اطلاعات ایجاد نمود و اکنون تقریبا تمام مرورگرهای استاندارد از جمله فایر فاکس، اینترنت اکسپلورر، گوگل کروم، سافاری و اپرا از آن  پشتیبانی می کنند، همچنین در این رابطه شرکت هایی وجود دارند که گواهی SSL ارائه می کنند.

شیوه رمزنگاری اطلاعات در SSL به چه صورت است؟


در بیانی ساده الگوریتم SSL اطلاعات را به وسیله دو کلید رمزنگاری می کند، کلید عمومی (Public Key) و کلید خصوصی (Private Key) که این ساز و کار را در اصطلاح PKI یا Public Key Infrastructure می گویند، بر این اساس پس از ارائه درخواست دریافت URL از طرف مرورگر (یا هر Client دیگری) به سرور در بستر اتصال امن، سرور کلید عمومی را به همراه پارامترهای شناسایی گواهی SSL خود با امضای دیجیتال در اختیار مرورگر قرار می دهد، کلید عمومی برای افراد سوم شخص دست یافتنی اما رمزنگاری شده و فاقد استفاده است، کلید خصوصی مقادیر رمزنگاری شده ای است که صرفا در اختیار سرور بوده و به صورت محفوظ نگهداری می شود.
در طی فرآیند برقراری ارتباط امن و به اصطلاح "دست دادن" (Handshake) بین دو طرف مرورگر وضعیت اعتبار گواهی را با بانکی که برایش تعریف شده می سنجد و در صورت مورد تایید بودن پیام پذیرش را به سرور ارسال می کند، در این هنگام سرور نشست SSL Encrypte را شروع کرده و با شروع نشست اطلاعات رمزنگاری شده رد و بدل می شوند.
SSL Handshake
نکته 1: کلید عمومی و کلید خصوصی به همدیگر مرتبط بوده و هر کدام به تنهایی کارایی نخواهند داشت.
نکته 2: از نظر فنی مراحل دیگری نیز در این فرآیند اتفاق می افتد، به طور مثال پس از تائید اعتبار گواهی SSL، مرورگر از کلید عمومی برای ایجاد Pre-Master Key استفاده و این کلید را به سرور ارسال می کند و در صورتی که این کلید مورد تائید سرور باشد ساز و کار Shared Secret شکل می گیرد که به معنی استفاده دو سمت (مرورگر و سرور) از عبارت رمزی شده مشترک برای حفاظت بستر ارتباط امن است.
نکته 3: گواهی SSL تحت فایل های خاصی که توسط شرکت های معتبر (Certification Authorities یا به اختصار CA) شناخته می شوند ایجاد می شود و لذا در صورتی که شخصی به هر طریق کلید عمومی خود را جایگزین کلید مرورگر کند، به جهت وجود این ساز و کار عملا درخواست او از طرف سرور رد خواهد شد.

چگونه مطمئن شویم که سایت از پروتکل امن استفاده می کند؟


چند فاکتور در تعیین معتبر بودن گواهی یک سایت نقش دارند، اول از همه کلید کوچکی است که در مرورگرهای مختلف با کمی اختلاف در مکان و شکل نشان داده می شود، برخی از مرورگرها در نسخه های جدید خود پس از برقراری یک اتصال امن، نوار آدرس را به رنگ سبز نیز نشان می دهند، فاکتور دیگر وجود عبارت HTTPS در ابتدای آدرس آن سایت است، باید دقت کنیم که برای برخی از سایت ها (بخصوص سایت های داخلی) ممکن است ابتدا نیاز به ثبت دستی گواهی آنها در بانک اطلاعاتی مرورگر باشد، متاسفانه اینگونه مشکلات گاهی به دلیل مسائل تحریم و گاهی به دلیل شخصی بودن ارائه کننده گواهی به وجود می آید.

چرا در برخی از سایت ها، مرورگر تقاضای تایید اعتبار می کند؟


بعضا ممکن است با صفحاتی روبرو شویم که مرورگر نسبت به منقضی شدن اعتبار گواهی ارتباط امن آنها پیام هشدار نمایش دهد، این اتفاق به چند دلیل ممکن است رخ دهد، یکی اینکه گواهی آن سایت واقعا به پایان رسیده و تمدید نشده باشد، دوم اینکه تاریخ و زمان سیستم ما از زمان حقیقی عقبتر یا حتی جلوتر باشد که در این صورت با اصلاح تاریخ و زمان مشکل برطرف می شود، دلیل سوم هم می تواند به مسائل فنی صفحه و ترکیب اشتباه داده های عادی با داده های رمزنگاری شده مربوط باشد که این عامل به مدیریت سایت ارتباط دارد و امکان رفع مشکل توسط کاربر میسر نیست.

چگونه برای سایت خود گواهی SSL تهیه کنیم؟


برای داشتن یک ارتباط امن در بستر HTTPS برای سایت خود نیاز به تهیه گواهی معتبر SSL داریم، معمولا این گواهی از طریق نمایندگی ها و سرویس دهندگان هاست قابل خریداری است که با یک جستجوی ساده در وب با لیست بلندبالایی از این شرکت ها روبرو خواهیم شد، گواهی SSL در انواع مختلف ارائه می شود که از صرف رمزنگاری داده ها تا تائید کامل اعتبار سایت و شرکت متغیر هستند که این موضوع در مدت زمان و مدارک مورد نیاز جهت فعال سازی گواهی و هزینه نهایی آن موثر خواهد بود، اگر صرفا نیاز به رمزنگاری داده ها و حفظ امنیت اطلاعات داریم، معمولا روند تهیه گواهی SSL به صورت آنی، بدون نیاز به ارائه مدارکی خاص و با هزینه کمتر انجام می گیرد، اما برای سایر انواع گواهی ها بسته به اعتباری که به برند ما می بخشند، ممکن است نیاز به مدت زمانی خاص، ارائه مدارک معتبر هویتی یا حتی ثبت شرکت (شخص حقوقی) باشد، علاوه بر این موارد به لحاظ فنی به سروری با قابلیت پشتیانی از SSL و یک IP اختصاصی احتیاج خواهیم داشت، البته نگران نباشید، اغلب شرکت های میزبان سایت به لحاظ فنی چنین قابلیتی را فراهم می کنند، همچنن مشکل تهیه IP اختصاصی با فعال بودن امکانی تحت عنوان SNI (مخفف Server Name Indication) قابل حل است، در صورت فعال بودن SNI در سرور می توان با استفاده از یک IP به سایت های مختلفی امکان استفاده از گواهی SSL را داد، بنابراین جهت جلوگیری از هزینه های اضافی بهتر است قبل از خرید گواهی SSL، در این زمینه به دقت تحقیق، بررسی و با پشتیبانی سرور سایت خود مذاکره داشته باشید.

چند نکته در خصوص HTTPS


- اگرچه HTTPS و رمزنگاری SSL امن و قابل اطمینان است اما به دلیل وجود محدودیت هایی، معمولا سرعت انتقال اطلاعات از این طریق نسبت به شیوه معمول یعنی HTTP پائین تر است، لذا برای افزایش کارایی در صورتی که با مشکل کندی مواجه بودیم می توانیم تنها در صفحاتی از این پروتکل استفاده کنیم که اطلاعات حساسی در آنها رد و بدل می شود.
- در استفاده از پروتکل HTTPS دقت داشته باشیم نباید محتوایی از قسمت HTTP سایتمان را در صفحات HTTPS استفاده کنیم، به طور مثال نباید فایل تصویر را که قسمت src آن با آدرس http://yoursite.com شروع می شود در صفحه ای که به صورت https://yoursite.com است وارد کنیم، در این صورت مرورگر پیام هشداری مبنی بر امن نبودن اتصال به کاربر نمایش خواهد داد، برای رفع این حالت هم می توانیم کلیه فایل ها را به صورت آدرس مطلق با https درج کنیم، هم اینکه فایل ها را به صورت آدرس دهی نسبی به طور مثال به صورت
../images/logo.png
استفاده کنیم.
- علاوه بر SSL که استاندارد معمول و متداول در خصوص رمزنگاری داده ها در وب است، ممکن است با عبارت دیگری تحت عنوان TLS (مخفف Transport Layer Security) روبرو شویم، این استاندارد در واقع نسخه پیشرفته و بهبود یافته SSL است و صرفا به لحاظ فنی تفاوت هایی وجود دارد (آخرین نسخه از SSL نسخه 3.0 است و برخی TLS را نسخه 3.1 SSL نیز می نامند)، برای استفاده های معمول داشتن اطلاعات در همین حد کفایت خواهد کرد.
sectionدسته بندی: مهارتهای وب » دانستنی ها
related مطالب بیشتر:
» دلایل بهم ریختن قالب وبلاگ و سایت
» حمله DDoS چیست و چگونه از آن جلوگیری کنیم؟
» IP چیست و چه کاربردی دارد؟
» مفهوم پلتفرم (Platform) و فریم ورک (Framework)
» اصطلاحاتی که هر مدیر سایت باید بداند!
commentنظرات (۳۴ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: Hassan Bayani
زمان: ۱۲:۰۱:۵۸ - تاریخ: ۱۳۹۷/۰۶/۰۶
عالییییییییییییییییی
نویسنده: nike
زمان: ۱۰:۳۱:۰۴ - تاریخ: ۱۳۹۷/۰۷/۰۵
سلام
سوال
آیا httprequest که فرستاده می شود به سرور دارای شناسه هست یا نه؟
پاسخ: 
منظور از "شناسه" مشخص نیست؟! در هر درخواست از سمت کاربر به سرور اطلاعاتی رد و بدل می شود که می تواند شامل مقادیر کوکی، مشخصات واسط کاربری و... باشد.
نویسنده: رضا
زمان: ۲۰:۰۴:۵۳ - تاریخ: ۱۳۹۸/۰۴/۱۱
سلام
خواهش می کنم این رو بذارید تا ملت گول کلاهبرداری برتینا رو نخوره من تمام ماجرا رو اینجا نوشتم
http://iwhy.ir/?p=1066
من یه مال باختم و حتی به اینماد هم شکایت کردم چند ماهه هنوز جوابم ندادن، بیایید باهم جلوی ناعدالتی رو بگیریم
شاید برای ماهم اتفاق بیافته
ممنون از وبگو
پاسخ: 
لازم به توضیح است انتشار دیدگاه ها دلیل بر رد یا تائید محتوای آنها نیست و قاعدتا حق پاسخگویی متقابل برای برند مطرح شده محفوظ می باشد.
نویسنده: Abbas rahmati
زمان: ۱۴:۱۶:۴۰ - تاریخ: ۱۳۹۸/۰۵/۲۳
سلام همه چی توی قسمت اینکه اس اس ال چطور کار میکنه درست بود فقط اخرشو درست نگفتید
پاسخ: 
بسیار ممنون از نکته سنجی و یادآوری، در حال بررسی این قسمت هستیم و در صورت نیاز حتما اصلاح خواهد شد.
paged صفحه 3 از 3
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




3 × 6
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form مهسا
در:
سلام وقت بخیر من یک فرم طراحی کردم input ها به صورت دو ستونه گذاشتم. میخواستم با زدن تب از input اولی در...
۱۳:۰۱:۴۶ ۱۳۹۸/۰۶/۰۲

form behzad
در:
مرسی خوب بود
۱۲:۱۵:۱۴ ۱۳۹۸/۰۶/۰۲

form zeynab
در:
سلام یه سوال دارم برای اینکه بتونم رنگ رو ذخیره کنم تو جدولم در قسمت پایگاه داده چیکار باید کنم ؟؟ من...
۱۷:۰۶:۳۵ ۱۳۹۸/۰۵/۲۸

form علی
در:
سلام من میخوام تو صفحه html همچین طرحی رو بندازم میشه راهنماییم کنید (به صورت جداگانه یعنی هر کدوم توی یه صفحه) ***** ...
۱۶:۴۶:۳۶ ۱۳۹۸/۰۵/۲۷

form Zeynab
در:
سلام . وقت بخیر . من از کدهای htaccess برای سایت استفاده کردم . روی لوکال هاست مشکلی ندارم اجرا میشن . ...
۲۲:۴۲:۵۴ ۱۳۹۸/۰۵/۲۳

form bahman
در:
عالی
۲۲:۱۵:۵۰ ۱۳۹۸/۰۵/۲۳

form Abbas rahmati
در:
سلام همه چی توی قسمت اینکه اس اس ال چطور کار میکنه درست بود فقط اخرشو درست نگفتید
۱۴:۱۶:۴۰ ۱۳۹۸/۰۵/۲۳

form مهدی فراهانی
در:
در آکولاد if، می خواهم پس از صحت پرداخت کاربر، کاربر به یک صفحه html برای دانلود فایل لینک شود. چه دستوری در حلقه if...
۱۲:۰۸:۳۲ ۱۳۹۸/۰۵/۲۳

form احسایدر
در:
شما از چه روشی برای لینک دادن به قسمت‌های نوشته استفاده کردید که با کلیک کردن چیزی به آدرس نوشته اضافه نمیشه؟
۱۸:۵۷:۰۵ ۱۳۹۸/۰۵/۲۲

form Mahyar
در:
سلام خسته نباشید اگه بخواهیم که یک pop up با کلیک به خارج از کادر pop up یا کلیک به روی دکمه esc...
۱۱:۴۸:۵۶ ۱۳۹۸/۰۵/۱۹

form بینهایت
در:
سلام. میخواستم بپرسم اگر به اینترنت جایی وصل باشیم کسی که ادرس IP رو میدونه ایا امکان داره از طریق همین اتصال به سیستم ما...
۱۰:۲۶:۱۵ ۱۳۹۸/۰۵/۱۵

form کیهان
در:
سلام دوستان من یک صفحه درست کردم که از طریق یک فرم اطلاعات رو میفرسته به این صفحه برای ذخیره در دیتابیس ولی...
۱۱:۰۰:۲۳ ۱۳۹۸/۰۵/۱۴

form مجتبی
در:
هر وقت این سایت رو می بینم سریع ازش رد میشم حالم از این سایت بهم میخوره هیچ طراحی جذابی نداره مطالبش هم بدرد نخوره
۰۹:۵۳:۴۹ ۱۳۹۸/۰۵/۱۴

form بهزاد
در:
سلام من وبلاگ درست کردم عمل هم کرده ولی الان اخطار میده که وبلاگ شما در وضعیت عدم نمایش قرار دارد. برای فعال سازیش چکار...
۱۷:۲۰:۳۷ ۱۳۹۸/۰۵/۱۳

form امیر
در:
مرسی مقاله بسیار عالی بود . فوق العاده این.
۱۰:۵۰:۳۵ ۱۳۹۸/۰۵/۰۹
49 . 1 %
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت متفاوت و کاملتر خواهد بود، این فرآیند زمانبر است و روند پیشرفت پروژه در این قسمت به صورت درصدی نمایش و به تناوب به روزرسانی می شود. Webgoo.ir