پروتکل امنیتی لایهٔ انتقال (Transport Layer Security)، بر پایه لایهٔ سوکتهای امن (Secure Sockets Layer) که یکی از پروتکلهای رمزنگاری است و برای تامین امنیت ارتباطات از طریق اینترنت است بنا شدهاست. برای اطمینان از هویت طرف مقابل و تبادل کلید متقارن از گواهی X.509 و رمزنگاری نامتقارن استفاده می کند. این پروتکل امنیت انتقال دادهها را در اینترنت برای مقاصدی چون کار کردن با پایگاههای وب، پست الکترونیکی، نمابرهای اینتزنتی و پیامهای فوری اینترنتی به کار میرود. اگرچه TLS و SSL با هم تفاوتهای اندکی دارند ولی قسمت عمدهای از این پروتکل کم و بیش یکسان ماندهاست.
پروتکل TLS به برنامههای Client/Server اجازه میدهد که در شبکه از طریقی که از eavesdropping (شنود)، message forgery (جعل پیام) جلوگیری میکند با یکدیگر ارتباط برقرار کنند. authentication TLS (احراز هویت) و communications confidentiality (ارتباط مطمئن) در اینترنت را از طریق استفاده از cryptography(رمز نگاری) فراهم میکند.
اینها توضیحات ویکی پدیا درباره گواهینامه های SSL/TLS بود ، اما امروز این گواهینامه برای مدیران و توسعه دهندگان وب کمتر ناشناخته هستند و احتمالاً تا این لحظه حداقل یک بار به آن نیاز پیدا کردهاید.
امروز در این بزم طبل توخالی و ادعای پوشالی امنیت در فضای مجازی ، شاید با همین راهکار بسیار ساده و رعایت همین نکات به حفظ امنیت و حریم خصوصی خود و دیگران کمک کنیم ، یکی از همین راهکارها استفاده از این گواهینامههای رمزنگاری برای اطمینان نسبی (!) از یک ارتباط مطمئن بین سرور و کاربر است که اولاً برای سایتهایی با محیط های کاربری-خدماتی با اطلاعات مهم و دوماً برای همه سایتها نیازی ضروری است ، اما مشکل آنجاست که ارائه دهندگان مطمئن ، این گواهینامه ها را با دریافت مبلغی در بازهای مشخص در اختیار سایتها قرار میدهند.
اما بنیاد Let’s Encrypt ، با همکاری شرکت های بزرگ وب چون موزیلا،سیسکو،گوگل و.. اقدام به ارائه این سرویس بصورت رایگان برای همه دامنهها (بدون آن تحریم ناعادلانه سایر ارائه دهندگان مشابه) کرده است که در این مقاله به روش راه اندازی این گواهینامه در سرویس های اشتراکی هاستینگ میپردازیم.
بطور خلاصه روش ما برای نصب گواهینامه برای سرویس های اشتراکی هاستینگ ، درخواست گواهینامه بصورت نیابی بر روی سیستم لوکال و سپس نصب آن در سیپنل است.
۱. یک توزیع گنو/لینوکسی برای نصب کلاینت Let’s Encrypt ، در این آموزش من از توزیع بسیار محبوب اوبونتو استفاده خواهم کرد. (شما میتوانید از سرورهای مجازی ، مجازی ساز و.. نیز استفاده کنید)
۲. دسترسی به سیپنل برای نصب دستی گواهینامههای ssl/tls (اگر از کنترلپنل دیگری استفاده میکنید گزینهها نسبتاً مشابه هستند و با کمی جستوجو قابل پیادهسازی)
۳. دسترسی و اجازه آپلود فایل در هاست
۱. اگر گیت بر روی سیستم شما نصب نیست ابتدا گیت را نصب کنید
1 |
sudo apt install git |
۲. از طریق ترمینال و با دستور زیر کلاینت Let’s Encrypt را از مخزن رسمی آن در گیتهاب تراریزی میکنیم
1 |
git clone https://github.com/letsencrypt/letsencrypt |
۳. پس از پایان تراریزی ، به پوشه Let’s Encrypt وارد شوید و برای درخواست یک گواهینامه بصورت دستی برای دو دامنه www.domain.ir و domain.ir (که درواقع دو آدرس سایت شما هستند با تفاوت www) از دستور زیر استفاده میکنیم
1 2 |
cd letsencrypt/ ./letsencrypt-auto certonly -a manual --rsa-key-size 4096 -d domain.ir -d www.domain.ir |
دقت کنید که در دستور قبل حتماً بجای domain.ir آدرس دامنه خود را قرار دهید
از شما گذرواژه سیستمعامل را برای راهاندازی بسته کلاینت Let’s Encrypt میپرسد که باید وارد کنید
اگر درست پیش رفته باشید با صفحهای این چنینی مواجه خواهید شد
که از شما درباره اطمینانتان از راه اندازی و درخواست گواهینامه از یک دستگاه غیر از سرورتان میپرسد که باید Yes رو بزنید.
پس از این هیچ حرکت دیگری نکنید ! که اگر پیش رفتید باید دوباره گامهای قبل را انجام دهید.
پس از تأیید درخواست از یک آیپی عمومی در گام قبل ، از شما برای تأیید مالکیت دامنه میخواهد که یک فایل با نام خاص را در مسیری خاص آپلود کنید
باید برای تأیید در روت دامنه خودتان یک پوشه با نام .well-known که در آن نیز پوشه دیگر با نام acme-challenge ساخته و در آن فایلی با نامی که در تصویر با قرمز و با متن (محتوی) آبی مشخص شده بسازید (دقت کنید که این متن و نام فایل برای شما متفاوت خواهد بود)
حالا باید در آدرس زیر
1 |
domain.ir/.well-known/acme-challenge/اسم-قرمز-فایل |
آن خط با زیرخط آبی قابل مشاهده باشد
اگر به درستی پیش رفته باشید پس از اینتر باز همچنین پیامی (از گام قبل) ولی این بار برای دامنه با www دریافت میکنید که باید در همان مسیر بار دیگر فایلی با اسم و متن جدید داده شده بسازید و باز اینتر بزنید
اگر بنا بر هر دلیلی با خطایی مواجه شدید مراحل را از گام سوم نصب ادامه دهید و اگر هم بدرستی پیش رفته باشید با پیام موفقیت این چنینی مواجه خواهید بود
خب اگر تا اینجا پیش آمدهاید ، همه چیز آماده شده و شما یک گواهینامه SSL/TLS از Let’s Encrypt دارید و به راحتی برای دامنه ثبت شده تا ۹۰ روز قابل استفاده است (بعد از آن نیاز به تمدید رایگان دارد) ، این گواهینامه همجا قابل استفاده است ولی در ادامه شیوه نصب آن بر روی سیپنل را دنبال میکنیم.
در سیپنل از زیرمجموعه security به بخش SSL/TLS بروید و سپس به بخش Install and Manage SSL for your site (HTTPS) بروید با چنین صفحهای روبرو خواهید بود
۱. در منو بازشونده اول ، دامنه خود را انتخاب کنید
۲. کلاینت Let’s Encrypt اطلاعات گواهینامه را در مسیر زیر ذخیره میکند :
1 |
/etc/letsencrypt/live/domain.ir/ |
برای دسترسی به اطلاعات گواهینامه با دسترسی روت به مسیر بالا بروید (دقت کنید باید نام دامنه خود را جایگزین کنید)
1 2 |
sudo su cd /etc/letsencrypt/live/domain.ir |
۳. برای نصب گواهینامه شما نیاز به اطلاعات ۲ فایل دارید
اول فایل گواهینامه که با دستور cat آن را گرفته و کامل در باکس اول ( Certificate: (CRT) ) جایگزاری کنید
1 |
cat cert.pem |
پس از جاگذاری (paste) روی گزینه Autofill by Certificate که ظاهر میشود کلیک کنید تا باکس سوم نیز خودکار تکمیل شود
دوم فایل کلید خصوصی ( Private Key (KEY) )
1 |
cat privkey.pem |
که باز هم کاملاً در باکس دوم (Private Key (KEY)) جایگذاری کنید.
از امنیت این فایلها مطمئن باشید.
پس از تکمیل فرم بر روی گزینه Install certificate کلیک کنید تا نصب نهایی شود.
که اگر درست پیش آماده باشید با این پنجره مواجه خواهید بود که به معنا موفقیت در نصب گواهینامه است.
حالا اگر به آدرس https://domain.ir بروید باید نسخه ssl امن سایت که توسط مروگر هم شناسایی میشود لود شود.
همچنین میتوانید از آدرس sslchecker.com/sslchecker گواهینامه دامنه خود را تست کنید و اطلاعات آن را مشاهده کنید.
اما اگر احیاناً با نوعی اخطار در مرورگر مبنی بر امن نبودن کامل آدرس مواجه شدید ، به این دلیل است که در سایت شما فایلها و درخواست های غیر ssl وجود دارد که باید آنها را بیابید و به دامنه https ببرید. (مرورگر کروم اطلاعاتی درباره فایلهای غیر امن به شما می دهد)
اما در این حالت فقط زمانی که کاربر از https برای ورود به سایت شما استفاده کند نسخه امن سایت لود میشود و مابقی درخواستها هنوز از پروتکل http پاسخ داده خواهند شد ، برای اینکه همواره نسخه https سایتتان لود شود میتوانید از قطعه کد زیر در فایل htaccess استفاده کنید
1 2 3 |
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://domain.ir/$1 [R,L] |
و اگر از وردپرس استفاده میکنید ، میتوانید از تنظیمات > همگانی ، آدرس سایت و یا داشبورد و یا هردو را به https ببرید ، افزونه هایی نیز برای این کار وجود دارند.
توصیه میکنم حداقل بخشهای مدیریت ، کاربری و پرداخت سایتتان را روی پروتکل https قرار دهید ، هرچند اگر کل سایت https باشد برای موتورهای جستوجو بهینهتر محسوب میشود.
دقت کنید که اگر کاملاً سایتتان را به پروتکلhttps ببرید تمام ایندکس های قبلی دامنه ریدایرکت میشوند ، توصیه میشود برای سئوی بهتر نسخه https سایتتان را نیز در وبمستر تولز گوگل و بینگ ثبت کنید.
همچنین دقت کنید برای سئوی بهتر باید محتوای هر دو نسخه سایتتان یکسان باشد.
این گواهینامه نود روزه است و باید نود روز دیگر این فرآيند را دوباره انجام دهید و گواهینامه جدید را ثبت نمایید.
امیدوارم با قدمهایی کوچک به امنیت و حفظ حریم خصوصی خود و جامعه خود کمکی بزرگ کرده باشیم.
خسته نباشی مصطفی جان
عالی بود ، بسیار استفاده کردم 😉
ممنون از فرصتی که به من دادید
مطلبتون آموزنده بود اگه میشه لینک گروه ها تگلرام رو دوباره تو کانال بزارید مممنون
سلام
دستت درد نکنه
اموزش جالبی هست
عالی بود مصطفی جان
سوالی که اینجا مطرحه ما روی سرور هاستینگ با کنترل پنل سی پنل ۱۰۰ تا مثلا سایت داریم و اشتراکی هست همه از یه ای پی استفاده میکنن!
باز هم میشه برای یه دامین خاص ssl دریافت کرد !؟
سلام
خوش حالم که مورد استفاده قرار گرفته
بله ، برای هر ۱۰۰ سایت میشه اینطور گواهینامه گرفت
ظاهرا بعضی از ارائه دهنگان اصلی هاستینگ هنوز اجازه استفاده از این گواهینامه را نمی دهند
درود
اکثر هاستینگ ها چنین اجازه ای به مشتری نمیدهند و نیاز به IP اختصاصی هست .
سلام
دقت بفرمایید که گفتم در هاستینگ اشتراکی که هیچ گونه آی پی ثابتی نمی دهد !
من خودم در هاست اشتراکی بدون ای پی ثابت ثبت کردم !
لطفا دوباره بخوانید
اقا توی سنتوس نمیشه این رو نصب کرد یعنی گیت رو نمیشه نصبکرد
root@server [~]# yum install git
Loaded plugins: fastestmirror, protectbase
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos.weezel.co.uk
* epel: mirrors.coreix.net
* extras: centos.quelquesmots.fr
* updates: centos.quelquesmots.fr
0 packages excluded due to repository protections
Resolving Dependencies
–> Running transaction check
—> Package git.x86_64 0:1.7.1-4.el6_7.1 will be installed
–> Processing Dependency: perl-Git = 1.7.1-4.el6_7.1 for package: git-1.7.1-4.el6_7.1.x86_64
–> Processing Dependency: perl(Git) for package: git-1.7.1-4.el6_7.1.x86_64
–> Processing Dependency: perl(Error) for package: git-1.7.1-4.el6_7.1.x86_64
–> Finished Dependency Resolution
Error: Package: git-1.7.1-4.el6_7.1.x86_64 (base)
Requires: perl-Git = 1.7.1-4.el6_7.1
Error: Package: git-1.7.1-4.el6_7.1.x86_64 (base)
Requires: perl(Git)
Error: Package: git-1.7.1-4.el6_7.1.x86_64 (base)
Requires: perl(Error)
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
root@server [~]# git clone https://github.com/letsencrypt/letsencrypt
-bash: git: command not found
root@server [~]# git
-bash: git: command not found
راهنمایی کنید چی نصب کنیم چه بسته هایی و…
https://www.digitalocean.com/community/tutorials/how-to-install-git-on-centos-7
سلام مهندس برای نمایش کد بین مطالب از چه افزونه ای استفاده کردین؟
سلام
از افزونه Crayon Syntax Highlighter استفاده شده
من این افزونه رو نصب کردم اما هر کاری کردم کد ها رو مثل سایت شما نشون نمیده فقط کدها رو داخل یک صفحه طوسی رنگ ساده نمایش میده. ممنون میشم اگر راه حلی به ذهنتون میرسه به من هم بگید.
باید برید به قسمت تنظیمات افزونه و تغییرات تم رو تغییر بدید
یک مشکل دیگه ای هم که الان برام پیش اومد این افزونه برخی از امکانات داشبوردم رو مثل ویرایش نوشته ها و از کار میندازه.
من چنین مشکلی ندارم !
ایول! مصطفی هم اینجا مینویسه! عالیه! منتظر بقیهی مطالبت هستم 😉
🙂
سلام
از مطلب بسیار مفیدتون سپاسگذارم اما دو سوال در اینجا مطرح است
اول اینکه روش تمدید اعتبارش چگونه است لطفا به تفصیل بفرمایید
دوم اینکه آیا روشی است که مدت اعتبار اینگونه گواهی های ssl یکساله شه اگر هست لطفا راهنمایی کنید.
توضیح اینکه گواهی را برای نماد اعتماد دو ستاره نیاز دارم.
سلام
مراحل تمدید دقیقا مثل گرفتن یک گواهینامه جدید است و فرقی نمیکند
گواهینامه های این بنیاد فقط ۹۰ روزه هستند و برای راحتی کار می توانید این فرآیند را در یک کرون جاسازی کنید
سلام ممنون از اموزشتون عالی بودش
فقط یه سوال دارم اینه که فرمودید برای اینکه راحت بشیم برای تمدید دوباره کرون کنیم
ممنون میشم کرون رو یا اموزش بدین یا اینکه لینکی بفرمایید تا از اونجا انجام بدیم
تشکر از زحمتتون
سلام
بابت پاسختون ممنونم
آقای اسدی عزیز همنطور پیشتر هم عرض کردم من گواهی امنیتی ssl رو فقط برای نماد اعتماد دو ستاره میخوام و برای این منظور این گواهی باید یک ساله باشه آیا شما همچین گواهیی رو که یک ساله و رایگان باشه نمیشناسید؟
اگه نه گواهی ارزون واسه دامنه ir چطور؟
پیشاپیش ازتون ممنونم
فکر نمیکنم لزوما باید یکساله باشه
ولی فعلا این بنیاد گواهینامه ۹۰ روزه می دهد
برای کار تجاری یک گواهینامه ضروری است پس هزینه کنید
با درود.
من تمامی این مراحل رو انجام دادم و به خوبی هم انجام شد.
سایت دارای SSL بود و من هم خوش حال…
گذشت تا امروز… یهو سایتم رو باز کردم دیدم که ایوای!!! سایت بالا نمیاد و مشکل از SSL هست.
رفتم توی سایت SSLchecker دیدم ۲تا CHERT Cart برام صادر شده در حالی که قبلا یک دونه بود!
اعصبانی شدم و فکر کردم یکی از دوستام که دسترسی داشته به سایتم رفته همچین کاری کرده…
خلاصه رفتم توی پنل و در کمال ناباواری دیدیم بخش SSL/TLS رو از توی پنلم برداشتن!
فهمیدم کار هاست ارایه دهندست و می خواد مثل سایر ارایه دهنده ها بیاد و تقاضا پول کنه برای SSL گذاشتن روی سایت که از طرف خودشون داده میشه با مبالغی مثل ۳۰هزار تومن به بالا…
خوب به شدت اعصابانی بودم و زنگ زدم پشتیبانی و درجا گفتم SSL/TLS پنل من کجاست چرا برش داشتید؟؟؟ الان سایت من از دسترس خارج شده!
شروع کرد به گفتن این که آره شما باید از ما SSL رو خریداری کنید و این حرفا…
حدسم درست بود. شروع کردم به داد زدن و این که کار شما غیر قانیونیه چون من SSL دارم و شاید دوست نداشته باشم از شما SSL بخرم!
شروع کرد بهونه آوردن که سایت شما که SSL داره باعث میشه باقی سایت هایی رو که SSL ندارن دچار مشکل کنه و این صحبت های بی ربط…
در آخر گفت شما بیاید ۴هزار تومن بدید تا شما رو رویه یه IP دیگه بذاریم که مشکل رفع شه…
منم در نهایت مجبور شدم به همین بسنده کنم و قبول کردم…
خلاصه که اینم داستنه ما با هاست.
از همه چی می خوان پول دربیارن 🙂
مشکل از هاستینگتونه عزیز 🙂
سلام. امروز با وبسایت خوب شما آشنا شدم و مطالب زیادی رو ازش دانلود کردم. بابت زحمات تون در تهیه مطالب و فیلم ها صمیمانه تشکر میکنم امیدوارم همواره سلامت و کامیاب باشید. یک درخواست هم داشتم.
در صورت امکان یه سورس مناسب برای نصب سی پنل بروی سرور مجازی معرفی نمائیدو در مورد کانفیگ سرور مجازی هم آموزش بگذارید عالی میشه چون توی سطح نت فارسی جای این چنین مطالبی کاملا خالیه برخی مطالب موجود هم بروز نیستند و عملا کاربردی ندارند.
بازم ممنونم از اشتراک گذاری مطالبی که به رایگان قرار دادید.
سلام
تشکر از نظر لطفتون
یه سری برنامه هایی دارم برای این موارد …
سلام
خسته نباشید.
بنده سیستم عاملم ویندوز است و دسترسی به لینوکس و…ندارم.
میخواستم بببینم چه جوری میشه اینو پیاده سازی کرد
البته هاستینگم هم سپاهان سرور (با معرفی شما خریدم و خیلی هم راضیم فعلا!)
ممنون میشم کمی راهنمایی بفرمایید
مصطفی بسیار کاربردی بودش!
سلام .
من یه سوالی میپرسم فقط خواهشا جواب بدید چون خیلی مبتدی هستش .
من تا اونجایی که داتشید توضیحات ویکی پدیا رو می دادید رو فهمیدم . ولی بعدش چجوری شد که یهو رفتید تو کار کد ؟ ینی چجوری به این بخش رفتید که کد می زنید و یه چیزی رو آپلود می کنید ؟ من هاستم پلسک هستش اگر میشه خوب منو راهنمایی کنید !
سلام،
اگر در هاست اشتراکی cpanel به ssh دسترسی نداشته باشیم و ادمین نیز جهت نصب پلاگین همکاری نکند، از چه طریق می توان به نصب ssl رایگان Lets Encrypt اقدام کرد ؟
لازم به ذکر است sni روی این هاست فعال می باشد.
ممنونم از مطالبتون
لطفا اگر امکانش باشه که آموزش های اینجوری رو داخل یک فایل PDF هم بذارین که بشه دانلود کرد و نگه داشت خیلی خوب میشه
مرسی
سلام
من که یک هاست اشتراکی دارم و دسترسی محدودی به سیپنل دارم باید چطوری اس اس ال تهیه کنم؟
اقا ی سوال اون کدی که دادین بزاریم تو htaccess باید کجاش بزاریم دقیقا؟
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.ir/$1 [R,L]
و بجای دامین ادرس دامنه خودمون رو بزاریم؟
سلام
دوست عزیز استفاده کردم و مشکلم رو حل کردی خدا خیرت بده
لطفا تمدیدش رو هم آموزش بده
سلام
من توی نصب گیتهاب موندم
javad@ubuntu:~$ sudo apt-get install git
[sudo] password for javad:
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package git
لطفا راهنمایی فرمایید
آموزش مفید و خوبی بود 🙂 ممنون
سلام ممنون خیلی مفید بود آیا این امکان هست که بر روی یک سرور با یک آیپی دو سایت را ثبت کرد مثلاً
دامنه domainone.com
domaindtwo.com
را داشته باشیم.
این دو سایت متفاوت هست ولی می خوام هر دو دارای گواهی معتبر باشند.
با سلام
پوشه .well-known ساخته نمیشه بدون نقط فقط ثبت میشه (.)
دلیلش چیه
سلام این راه سختیه از این سایت استفاده کنید خیلی راحت تره
https://www.sslforfree.com/
سلام
تمدید اتوماتیک این ssl را با کرون آموزش بدید.
ممنون