پروتکل اس اس ال

75% کامل شده تا
ویکی‎کتاب، کتابخانهٔ آزاد


لایهٔ سوکت‌های امن (Secure Sockets Layer) که به اختصار SSL نامیده می شود؛ یک پروتکل ارتباطی است که می تواند میان مجموعه TCP/IP و HTTP جای داده شود. در عمل، این پروتکل ترافیک وب سایت شما را دریافت کرده و امنیتی میان مرورگر و سرویس دهنده برقرار می کند. رمز گذاری یا رمز نگاری به کار رفته در SSL ارتباطات امن را در یک محیط ناامن تضمین می کند.

از همه مهم تر، تمام عملیات امنیتی در هر دو انتها غیر قابل مشاهده است.

مقدمه[ویرایش]

اولین پروتکل کاربردی SSL به نام SSLv2.0 توسط شرکت Netscape ارائه شده و توسط مرورگرهای NS ، 1.x/2.x و IE ..0 پشتیبانی می شود. این نسخه از SSL بسیار خاص بوده و با محدودیت مواجه است. نسخه بعدی SSL یعنی SSL v3.0 است که توجه زیادی را به خود جلب کرده و توسط جامعه وب به طرز گسترده ای پشتیبانی شده است، با این که استاندارد نیست. شاید بسیاری از کاربران عادی وب از قابلیت های مرورگر IE ، NS، Firefox، Opera در زمینه رمزنگاری قوی که در اختیار دارند، بی اطلاع باشند. برای مثال، همه این مرورگرها از رمز نگاری 128 بیتی (مبادله کلید RSA) برای SSL v1.0/v2.0 و (Transport Layer Security (TLS v1.0 پشتیبانی می کنند. همچنین همه آن ها از رمز نگاری فراتر از HTTP، NNTP، POP و SMTP پشتیبانی می کنند. علاوه بر مباحث امنیتی در مرورگرها، یک پیاده سازی منبع باز به نام OpenSSL مطرح گردید. این بسته نرم افزاری می تواند در نرم افزار سرویس دهنده همانند Apache با کمی تغییر مجتمع گردد. بنابر این سرویس دهنده های وب یا بسته های نرم افزاری انتقال دهنده چندان هزینه زیادی تحمیل نمی کنند. در واقع، جدیدترین پیاده سازی OpenSSL تقریبا مطابق با تمام استانداردهای رمزنگاری شامل SSL v2.0/v3.0 و TSL v1.0 است. بنابر این می توانیم بگوییم که SSL مجانی بوده و به ظور گسترده به کار گرفته می شود.

به عبارتی، OpenSSL یک جعبه ابزار رمز نگاری است. اگر دقیق تر بگوییم، کلکسیونی از توابع سازماندهی شده در یک ساختار کتابخانه ای کنترل شونده توسط برنامه خط فرمان به نام openssl است. در پایین ترین سطح، می توانید از این بسته برای تولید گواهینامه برای خودتان استفاده کنید. بعدا می توانید این گواهینامه را وارد مرورگر مورد نظر خود همانند IE، NS، Firefox یا Opera کنید. شما را با نحوه نصب OpenSSL و استفاده از آن در مقاصد امنیتی آشنا خواهیم کرد. قبل از اینکه شروه به کار کنیم، اجازه دهید به نحوه عملکرد SSL در تهیه یک محیط ایمن برای ارتباطات وب بپردازیم.

نحوه عملکرد[ویرایش]

اصولا، SSL اطمینان مابین مرورگر و سرویس دهنده را به وجود می آورد. این اطمینان دو طرفه توسط پروتکل SSL Record Protocol با توالی دست دهی کنترل می شود. دست دهی (handshake) دارای سه لایه زیر است.

  1. SSL Hanshake Protocol
  2. SSL Change Cipher Specification
  3. SSL Alert Protocol

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

کار اصلی با گواهینامه شروع می شود. گواهینامه (certificate) در SSL اصلاعات خاصی در مورد کلید عمومی و هویت حقیقی از شی مربوطه است که می تواند شامل سرویس دهنده یا موجودیت های دیگر باشد. هر پیاده سازی SSL بایستی قادر به تو.لید گواهینامه برای شما و یا برنامه شما باشد. از کلید عمومی برای رمزگشایی پیغام ارسالی از سوی شما به گیرنده استفاده می شود. برای افزایش اعتماد پذیری گواهینامه، بایستی هر گواهینامه توسط یک سازمان معتبر که (Certification Authority(CA نامیده می شود تایید گردد. پس از تایید گواهینامه، می توان آن را وارد مرورگر مورد نظر کرد تا هویت شما به عنوان سرویس گیرنده باشد. همچنین می توان یک گواهینامه تایید شده را در یک سرویس دهنده وب به مقاصد اعتباری نصب کرد.

نحوه تولید این گواهینامه ها[ویرایش]

پس از این که سرویس دهنده وب مجهز به امنیت SSL گردید و تبدیل به یک سرویس دهنده امن شد، می توان با https به این سرویس وب امن مراجعه کرد همانند:

https://www.google.com

با استفاده از URL به همراه یک عنصر لنگر:

<a href=https://www.google.com/>This is a Secure Link</a>

زمانی که مرورگر شما وارد مد امن با SSL شود ، شاهد یک پنجره هشدار خواهید بود. پنجره هشدار در مرورگرهای مختلف تقریبا تفاوت زیادی ندارد و مشابه است. قبل از اینکه بتوانید OpenSSL را فعال کنید و آن را به کار بگیرید، نیاز به نصب آن بر روی سیستم خود دارید.

نحوه نصب OpenSSL[ویرایش]

OpenSSL

OpenSSL یک بسته نرم افزاری از (Open Source Initiative(OSI است، به این معنی که می توانید از آن در اهداف تجاری یا غیر تجاری استفاده کنید. می توانید این نرم افزار را از وب سایت www.openssl.org دریافت کنید.

بر خلاف سایر بسته های نرم افزاری، این فایل حاوی تمام چیزهای مورد نیاز برای نصب OpenSSL بر روی پلات فرم های زیر است:

  1. UNIX
  2. LINUX
  3. Open VMS
  4. Windows
  5. MacOS


اگر در حال استفاده از UNIX/LINUX هستید، می توانید با استفاده از دستورات زیر مبادرت به استخراج فایل ها و زیر شاخه ها بر روی سیستم خود کنید:

gzip d openssl-0.9.6c.tar.gz

tar xvf opens-0.9.6c.tar

این دو دستور مبادرت به استخراج تمام فایل ها و زیر شاخه های مرتبط در شاخه ای به نام openssl-0.9.6c می کند. گاهی اوقات می توانید از یک دستور استفاده کنید.

Tar zxvf openssl-0.9.6c.tar.gz

کاربران ویندوز می توانند از winzip یا winrar برای استخراج تمام فایل ها به شاخه مقصد استفاده کنند.

برای استفاده از این بسته (پکیج)، نیاز به بسته های زیر دارید:

Perl5

کامپایلر ANSI C مانند gcc یا cc با محیط توسعه دهنده.

فرض کنید که در حال استفاده از سیستم UNIX/LINUX هستید و در درون شاخه OpenSSL می باشید. می توانید با استفاده از دو دستور زیر برای ایجاد و نصب موقت بسته بر روی سیستم خود استفاده کنی:

$./config

$make

عبارات فوق کتابخانه ها libcrypto.a و libssl.z و برنامه خط دستور openssl را ایجاد می کنند.

برنامه خط دستور در زیر شاخه apps ذخیره می گردد. پس از ایجاد بسته، باید قبل از نصب دایم آن بر روی سیستم، آن را تست کنید. می توان کتابخانه ها را توسط عبارات زیر تست کرد:

$make test

OpenSSL یک بسته نرم افزاری پیچیده است، حتی تست آن دو صفحه کامل را در بر می گیرد. تست را برای این انجام می دهیم که آیا کتابخانه ها قادر به ایجاد کلیدهای RSA و انجام تصدیق سرویس دهنده-سرویس گیرنده هستند یا خیر. اگر همه چیز مرتب باشد، پیغام “passed all test” در انتهای صفحه ظاهر خواهد شد. در این مورد، می توانیم از دستور زیر برای نصب بسته استفاده کنیم:

$make install

در کنار سایر موارد، این دستور زیر شاخه های زیر را تحت شاخه اصلی openssl-0.9.6c ایجاد می کند:

Certs در ابتدای کار تهی بوده و مکان پیش فرض برای فایل های گواهینامه است.

Private در ابتدای کار تهی بوده و مکان پیش فرض برای فایل های کلید خروجی است.

Bin حاوی openssl باینری و چند یوتیلیتی دیگر است.

Include/openssl حاوی فایل های سرآیند در صورت نیاز به کامپایل برنامه ها با libcrypto یا libssl.library است.

Lib حاوی خود فایل های کتابخانه OpenSSL است.

برای اکثر کاربران ، برنامه خط دستور openssl و گواهینامه ابزار های ضروری برای کار با SSL هستند. برای برنامه نویسان، فایل های سرآیند در شاخه include/openssl و کتابخانه ها ، کامپونت های مهمی در ایجاد برنامه های SSL هستند.

اگر از سیستم ویندوز استفاده می کنید، زیر شاخه یا پوشه پیش فرض ms تحت پوشه Openssl0.9.8r نام دارد. برای کامپایل OpenSSL تحت ویندوز، نیاز به بسته Perl برای Win32 است. چنین بسته ای در سایت www.activestate.com قرار داده شده است که آن را می توانید از لینک www.activestate.com/activeperl دریافت کنید. همچنین به یکی از کامپایلر های زیر نیاز دارید:

(++Visual C++ (VC

Borland C

(GNUC (Mingw32 or Cygwin32

در اینجا فقط به توضیح نحوه کامپایل OpenSSL با Visual C++ می پردازیم. ابتدا، برنامه Perl را برای پیکربندی OpenSSL با VC++ اجرا می کنیم:

Perl Configure vc-win32

گام بعدی ایجاد makefile اختصاصی Visual C++ توسط دستور زیر است:

Ms\do_ms

این دستور فایل do_ms.bat در شاخه ms را اجرا کرده و به دنبال آن تمام فایل های make برای Visual C++ ایجاد می شوند. اکنون می توانید نرم افزار را با استفاده از nmake کامپایل نمایید:

nmake f ms\ntdll.mak

مجددا فرض می کنیم تمام دستورات در شاخه Openssl0.9.8r تایپ شده اند. اگر همه چیز به خوبی پیش برود، تمام (Dynamic Linked Libraries) DLL ها و فایل های اجرایی در شاخه out32dll ایجاد خواهند شد. حال می توانیم OpenSSL موجود در out32dll را اجرا کنیم. برای مثال، می توانید کتابخانه ها و نرم افزار را توسط

cd out32dll

..\ms\test

آزمایش کنید.

منبع[ویرایش]

کتاب CompTIA Network+