# مباحث مرتبط با توسعه وب > توسعه وب (Web Development) >  OpenSSL نصب، راه اندازی و معرفی امکانات

## sweb

درود.

این تاپیک رو زدم چون تاپیکی به این عنوان نداشتیم. خب  تا اونجایی که من می دونم SSL یک سیستم رمز نگاری بین کلاینت و سرور هستش که دیتا ها با یک کلید خاص منتقل میشه! این یکی از راههای خوب برای امنیت در سایتاست خب ممکنه وقتی دیتا شما از یک سرور به سمت کاربرش بره از سرور ها و شبکه های خاصی عبور کنه و این ممکنه امینت رو بیاره پایین.  :لبخند گشاده!: 

خب SSL چیز خوبیه دیگه !

این یک لیک واسه نصب OpenSSL برروی apache و php تحت ویندوز!

http://www.my-whiteboard.com/windows...rtualhost.html

عزیزان بگن تحت چه شرایطی استفاده از SSL توصیه میشه!
چه تاثیراتی روی سرعت پردازش داره!
متد های رمزنگاری رو معرفی کنین!
و هر چی راجع بهش اطلاعات دارین بگین تا بقیه هم استفاده کنن.

متشکرم

----------


## amirhosein

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

----------


## sweb

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

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

در مورد نصب بر روی Apache و PHP توضیح بدین! فکر کنم SSL بر روی Apache نصب میشه و PHP با یک سری از API های اون ارتباط بر قرار میکنه! هر SSL یک Certificate داره که بر مبنای اون دیتا ها کدینگ میشن! تو OpenSSL شما می تونی یک Certificate برای خودت جنریت کنی که خوب هزینه ای حدود ماهی 100 دلار رو میزنی به جیب!  :لبخند گشاده!: 

بابا این اطلاعات رو من بدست آوردم لطفاً یکی توضیح بده و یا حد اقل یک لینک اصولی معرفی کنه!

----------


## oxygenws

سوالت ربطی به این بخش نداره!!

SSL برای امن کردن ارتباط کاربر و سرور استفاده میشه.
سوال هات رو که مربوط به این بخش می شن رو بپرس تا پاسخ بدم.
در مورد برخی سوال های دیگه ات، شاید بهتر باشه بخش امنیت نرم افزار رو بگردی.

----------


## sweb

> سوالت ربطی به این بخش نداره!!


حق با شماست! خوشحالم که بازم میبینمتون آقای متقی!

در مورد Private Key ها می خواستم بپرسم که چیزی که در موردش گفتم درست هست یا خیر؟ 



> هر SSL یک Certificate داره که بر مبنای اون دیتا ها کدینگ میشن! تو OpenSSL شما می تونی یک Certificate برای خودت جنریت کنی که خوب هزینه ای حدود ماهی 100 دلار رو میزنی به جیب!


بعد بهم توضیح بدین همیشه برای SSL از پورت 443 استفاه میشه چیه که باعث میشه این با استفاده از SSL P&ro^x*y سایت ها اپن بمونه! مگه با SSL آی پی یک سرور هم تعویض میشه یا نه! بعد بهم بگین که دلیل استفاده از SSL  *فقط* همون چیزیه که گفتم!




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

----------


## oxygenws

> هر SSL یک Certificate داره که بر مبنای اون دیتا ها کدینگ میشن! تو OpenSSL شما می تونی یک Certificate برای خودت جنریت کنی که خوب هزینه ای حدود ماهی 100 دلار رو میزنی به جیب!


خیر.
هر certificate شامل یک public key است. و البته ربطی به هزینه ای برای به جیب زدن نداره.
هدف SSL امن کردن ارتباط سایت ها است و هدف certificate همونطور که از اسمش مشخصه، گواهی داده به سایت شما است که شخص گواهی دهنده مهمه، مسلما گواهی ای که من بهت بدم هیچ ارزشی نداره و هیچ چیز تو رو تایید نکرده، اما گواهی ای که CA ها بهت بدن حامل «ارزش» هم هست.




> بعد بهم توضیح بدین همیشه برای SSL از پورت 443 استفاه میشه چیه که باعث میشه این با استفاده از SSL P&ro^x*y سایت ها اپن بمونه! مگه با SSL آی پی یک سرور هم تعویض میشه یا نه! بعد بهم بگین که دلیل استفاده از SSL *فقط* همون چیزیه که گفتم!


دلیل اصلی استفاده از SSL امنیت است، اما دلیل اصلی استفاده از certificate (یعنی بخش certificate اش) معتبر سازی سایتتونه.
دلیل رد شدن از ف**یل**ترینگ هم اینه که مخابرات فقط روی پورت ۸۰ فی**لتر گذاشته، مسئلهء منطقی و پیجیده ای نیست :)

موفق باشید.

----------


## Inprise

> مسلما گواهی ای که من بهت بدم هیچ ارزشی نداره و هیچ چیز تو رو تایید نکرده، اما گواهی ای که CA ها بهت بدن حامل «ارزش» هم هست.


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

وقتی از یک تکنیک رمزنگاری مبتنی بر PKI استفاده میشه ، سیستم درست به اندازه میزان اعتماد به CA‌ امن هست . یعنی اگر آلیس و باب هر دو به تو اعتماد دارن ، و فرآیند اعتماد سازی به تو از نظر اونها معتبر است ، تو یک CA‌ ایده آل برای اونها هستی و گواهی تو برای اونها معتبر و قابل استفاده . 

یک سری شرکت بزرگ و شناخته شده که ارتباطات گسترده ای دارن به عنوان Root CA های SSL روی وب شناخته میشن . این فقط یه قرارداد هست که در معرض تغییر هست . اگر گواهی سمت سرور یک اتصال SSL توسط یکی از این شرکتها صادر شده باشه "اغلب" مرورگر ها یا برنامه های متداول برای حفظ این سازگاری ، عطف به اعتمادی که "فرض" شده به شرکت مذکور ( مثلا وری ساین ) وجود داره ، "فرض" میکنند که باید به گواهی ، به اعتبار CA اعتماد کنن و لازم نیست از کاربر بخواهند که خودش فرآیند اعتماد سازی ( شناسائی تلفنی یا رودر رو ، درخواست کارت شناسائی یا هر روش دیگری ) رو انجام بده .

گرفتن گواهی کار ساده ای هست و کاملا هم خودکار انجام میشه و با هزینه فوق العاده مختصر میشه از Root CA ها گواهی الکترونیکی گرفت . آیا این روند لزوما امن هست ؟ جوابش بستگی داره . اگر کسی به وری ساین اعتماد داره ، و مطمئن هست که این کمپانی امریکائی کلید های خصوصی رو در اختیار سازمانهای ثالث نمیگذاره بله این روش امن هست اما اگر نه ، نه . هر کسی میتونه به هر روشی که دوست داره ، به یک CA ثالث اعتماد کنه ، و از گواهی های اون استفاده کنه و این اتصال ، فقط به اندازه قابل اعتماد بودن روند اعتماد سازی امن هست . مهمترین کلید درک PKI این هستش که ما بفهمیم ، اینجا رمزنگاری مهمترین عنصر نیست ، اعتماد و فرآیند اعتماد سازی مهمتر هست و هر کسی میتونه به هر شکلی بر اساس تشخیص خودش به یک CA‌ اعتماد کنه . بعد از گرفتن گواهی از CA میشه اون رو بسادگی به لیست CA های Trusted اضافه کرد ( فرضا : در یک مرورگر وب معمولی ) و بعد براحتی از اون اتصال استفاده کرد .

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

----------


## Inprise

> در مورد نصب بر روی Apache و PHP توضیح بدین! فکر کنم SSL بر روی Apache نصب میشه و PHP با یک سری از API های اون ارتباط بر قرار میکنه!


SSL ربط چندانی به وب سرور و اپلیکیشن سرور نداره . برای اینکه بتونی از خدمات SSL‌ روی لینوکس استفاده کنی باید بستهء OpenSSL‌ رو نصب کنی و بعد یک زوج کلید و گواهی مربوط به اونها رو تولید کنی . بعد باید از طریق تنظیمات وب سرورت دسترسی به https‌ رو فراهم کنی . بسته به توزیعی که ازش استفاده میکنی میتونی خیلی راحت راهنمای نصب openssl و تنظیم وب سرور رو پیدا کنی .

----------


## oxygenws

> یک سری شرکت بزرگ و شناخته شده که ارتباطات گسترده ای دارن به عنوان Root CA های SSL روی وب شناخته میشن . این فقط یه قرارداد هست که در معرض تغییر هست . اگر گواهی سمت سرور یک اتصال SSL توسط یکی از این شرکتها صادر شده باشه "اغلب" مرورگر ها یا برنامه های متداول برای حفظ این سازگاری ، عطف به اعتمادی که "فرض" شده به شرکت مذکور ( مثلا وری ساین ) وجود داره ، "فرض" میکنند که باید به گواهی ، به اعتبار CA اعتماد کنن و لازم نیست از کاربر بخواهند که خودش فرآیند اعتماد سازی ( شناسائی تلفنی یا رودر رو ، درخواست کارت شناسائی یا هر روش دیگری ) رو انجام بده .


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

حالا اینکه comodo میاد از طریق iranssl برای کشوری که زیاد قانون نداره، مجوز صادر می کنه، دیگه ربطی به ما می تونه نداشته باشه و تا جایی که من می دونم، در صورت وجود مشکل و یا دزدیده شدن پول توسط سایت مذکور، میشه از سایت کومودو شکایت کرد.

ممنون به خاطر توضیحاتتون، چند نکته جدید یاد گرفتم و با آلیس و باب آشنا شدم :)

----------


## Inprise

> در صورت وجود مشکل و یا دزدیده شدن پول توسط سایت مذکور، میشه از سایت کومودو شکایت کرد.


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

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

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

----------


## sweb

درود دوباره، از مطالب مفید تونم متشکرم. :لبخند گشاده!: 

خب من هرچی سعی کردم نتوستم SSL رو روی Apache همراه OpenSSL نصب کنم من مراحل زیرو رفتم:

من Apache 2.2.6(openssl-0.9.8e) رو روی سیستم خودم نصب کردم!
رو پورت 80 http کار میکنه!
بعد تو پوشه conf\default در دایرکتوری Apache من فایل httpd-ssl.conf رو بجای فایل اصلی تنظیمات یعنی httpd.conf جایگزین کردم ولی دیگه Apache اجرا نشد.

تو پوشه log یه همچین erorr مشاهده میشه کمکم کنید.


[Thu Jan 17 17:09:03 2008] [notice] Parent: Received restart signal -- Restarting the server.
[Thu Jan 17 17:09:03 2008] [notice] Child 3652: Exit event signaled. Child process is ending.
Syntax error on line 49 of D:/Apache/conf/httpd.conf:
Invalid command 'AddType', perhaps misspelled or defined by a module not included in the server configuration
[Thu Jan 17 17:09:03 2008] [warn] (OS 995)The I/O operation has been aborted because of either a thread exit or an application request.  : winnt_accept: Asynchronous AcceptEx failed.
[Thu Jan 17 17:09:04 2008] [notice] Child 3652: Released the start mutex
[Thu Jan 17 17:09:05 2008] [notice] Child 3652: Waiting for 250 worker threads to exit.
[Thu Jan 17 17:09:05 2008] [notice] Child 3652: All worker threads have exited.
[Thu Jan 17 17:09:05 2008] [notice] Child 3652: Child process is exiting


مشکل چیه؟ منو راهنمایی کنید!
متشکر!

----------


## oxygenws

به نظر می رسه باید فایل ذکر شده رو include کنی.
باید بیشتر بگی چطوری و کجا می خوای نصب کنی تا بشه بیشتر توضیح داد.

----------


## sweb

خب من مراحل نصب رو اینجوری شروع کردم.
اولاً که خب نسخه همراه SSL وب سرور Apache (apache_2.2.6-win32-x86-openssl-0.9.8e.msi) رو دانلود کردم.
بعد نصبش کردم روی آی پی 127.0.0.1 دامین localhost به همراه ایمیل sweb@localhost (که sweb اسم کاربری من در ویندوزه)
بعد هم نصب تموم شد.
وقتی میرم تو لوکال هاست خب مشکلی نیست. *It's work!*  :لبخند گشاده!: 
خب HTTPS برای لوکال هاست که در ابتدا کار نمیکنه و تا اونجایی که من میدونم باید تنظیماتشو انجام بدیم تا کار کنه، تنظیمات Apache هم در پوشه conf در فایل httpd.conf ذخیره میشه!
در همین پوشه (conf) یک پوشه به نام default هستش که فایلهای پیشفرض تنظیمات در اون گنجانده شده!
من فایل httpd-ssl.conf رو بجای فایل اصلی تنظیمات (httpd.conf) در پوشه conf جایگزین می کنم تا تنظیمات SSL برای Apaceh بصورت پیشفرض اعمال شه! ولی خب دیگه وب سرور Apache اجرا نمیشه و همینطور Stop میمونه  :لبخند گشاده!: 

من تو چه مرحله ای اشتباه می کنم منو راهنمایی کنید لطفاً.
متشکر.

----------


## oxygenws

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

به نظرم اینجا رو مشکل داری:



> من فایل httpd-ssl.conf رو بجای فایل اصلی تنظیمات (httpd.conf) در پوشه conf جایگزین می کنم تا تنظیمات SSL برای Apaceh بصورت پیشفرض اعمال شه! ولی خب دیگه وب سرور Apache اجرا نمیشه و همینطور Stop میمونه


توی فایل اصلی دنبال کلمهء ssl بگرد ببین موردی نداره که کامنت شده باشه.
به هر حال، حدس می زنم که باید فایل httpd-ssl.conf رو توی فایل httpd.conf اینکلود کنی. شاید اگه محتویات این فایل ها رو بذاری بشه راحت تر کمکت کرد. (هر دو رو زیپ کن بذار، یا بهتر از اون، یه جایی آپلود کن و لینک مستقیم (بدون نیاز به دانلود) بده)

----------


## sweb

امید جان این فایل رو اتچ کردم 2 تا فایل که از پوشه default و یک فایل که همراه با تنظیمات نصب PHP هستش همراه با تغیراتی (اضافه کردن چند تا مد deflate rewrite expired) و...
اگه میشه هم یک آپلود سنتر خوب واسه upload فایلهای این تریپی معرفی کنی بد نیست. که لینک مستقیم بده!

----------


## oxygenws

خط های زیر رو توی فایل httpd.conf از کامنت خارج کن:

#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf

----------


## sweb

متشکر ولی یک مشکل دیگه :  :لبخند گشاده!:   :خجالت: 
Syntax error on line 68 of D:/Apache/conf/extra/httpd-ssl.conf:
Invalid SSLMutex argument file:D:/Apache/logs/ssl_mutex (Valid SSLMutex mechanis
ms are: `none', `default' )
Note the errors or messages above, and press the <ESC> key to exit.  24...

البته به مقدار default تغییر دادم اینو ولی بازم این پیغام میاد:
Syntax error on line 99 of D:/Apache/conf/extra/httpd-ssl.conf:
SSLCertificateFile: file 'D:/Apache/conf/server.crt' does not exist or is empty
Note the errors or messages above, and press the <ESC> key to exit.  3...2...
من باید یک Certificate برای سرورم داشته باشم از کجا و به چه روشی تهیش کنم؟

----------


## oxygenws

> من باید یک Certificate برای سرورم داشته باشم از کجا و به چه روشی تهیش کنم؟


با همون openssl که گفتی میشه. گوگل کن :) زیاد سخت نیست :)

----------


## phanoosekhial

سلام بچه ها من یه برنامه ساده در c  که با ستورات openssl نوشته شده رو میخوام اجرا کنم. openssمربئطه رو همl از download  کردم اما  میشه راهنمایی کید چی طوری باید کتابخانه  openssl رو به کار ببرم...من هیچ اشنایی با اجرای برنامه  به این شکل ندارم.. خواهشا هرکسی بلد هست به من کمک کنه...

----------


## m2148059

سلام به همه دوستان و خسته نباشید . من openssl-win32 را نصب کردم و خط فرمانی می خوام یک pkcs12 بسازم می شه کمکم کنید من تو سایتهای خارجکی که گشتم و طبق کارایی که گفته بودن عمل کردم اما نشد یعنی می گفت privatekey تون رو نمی تونم load کنم . فکر می کنید مشکل چیه دوستان ؟
اینم سایتی که step by step توضیح داده مراحل کارو .

http://www.flatmtn.com/article/creat...es#comment-113

----------

