راه‌اندازی گواهی‌نامه ssl رایگان Lets Encrypt در هاست های اشتراکی

شبکه و امنیت جولای 2016 12

پروتکل امنیتی لایهٔ انتقال (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 (اگر از کنترل‌پنل دیگری استفاده می‌کنید گزینه‌ها نسبتاً مشابه هستند و با کمی جست‌و‌جو قابل پیاده‌سازی)
۳. دسترسی و اجازه‌ آپلود فایل در هاست

 

نصب کلاینت Let’s Encrypt و درخواست گواهی‌نامه

۱. اگر گیت بر روی سیستم شما نصب نیست ابتدا گیت را نصب کنید

۲. از طریق ترمینال و با دستور زیر کلاینت Let’s Encrypt را از مخزن رسمی آن در گیتهاب تراریزی می‌کنیم

1

۳. پس از پایان تراریزی ، به پوشه Let’s Encrypt وارد شوید و برای درخواست یک گواهینامه بصورت دستی برای دو دامنه www.domain.ir و domain.ir (که درواقع دو آدرس سایت شما هستند با تفاوت www) از دستور زیر استفاده می‌کنیم

دقت کنید که در دستور قبل حتماً بجای domain.ir آدرس دامنه خود را قرار دهید
از شما گذرواژه سیستم‌عامل را برای راه‌اندازی بسته کلاینت Let’s Encrypt می‌پرسد که باید وارد کنید
اگر درست پیش رفته باشید با صفحه‌ای این چنینی مواجه خواهید شد

2

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

 

تأیید مالکیت دامنه

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

3

باید برای تأیید در روت دامنه خودتان یک پوشه با نام .well-known که در آن نیز پوشه دیگر با نام acme-challenge ساخته و در آن فایلی با نامی که در تصویر با قرمز و با متن (محتوی) آبی مشخص شده بسازید (دقت کنید که این متن و نام فایل برای شما متفاوت خواهد بود)
حالا باید در آدرس زیر

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

4

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

5

 

نصب گواهی‌نامه در سی‌پنل

خب اگر تا اینجا پیش آمده‌اید ، همه چیز آماده شده و شما یک گواهی‌نامه SSL/TLS از Let’s Encrypt دارید و به راحتی برای دامنه ثبت شده تا ۹۰ روز قابل استفاده است (بعد از آن نیاز به تمدید رایگان دارد) ، این گواهی‌نامه همجا قابل استفاده است ولی در ادامه شیوه نصب آن بر روی سی‌پنل را دنبال می‌کنیم.
در سی‌پنل از زیرمجموعه security به بخش SSL/TLS بروید و سپس به بخش Install and Manage SSL for your site (HTTPS) بروید با چنین صفحه‌ای روبرو خواهید بود

6

۱. در منو بازشونده اول ، دامنه خود را انتخاب کنید
۲. کلاینت Let’s Encrypt اطلاعات گواهی‌نامه را در مسیر زیر ذخیره می‌کند :

برای دسترسی به اطلاعات گواهی‌نامه با دسترسی روت به مسیر بالا بروید (دقت کنید باید نام دامنه خود را جایگزین کنید)

۳. برای نصب گواهی‌نامه شما نیاز به اطلاعات ۲ فایل دارید
اول فایل گواهی‌نامه که با دستور cat آن را گرفته و کامل در باکس اول ( Certificate: (CRT) ) جایگزاری کنید

پس از جاگذاری (paste) روی گزینه Autofill by Certificate که ظاهر می‌شود کلیک کنید تا باکس سوم نیز خودکار تکمیل شود
دوم فایل کلید خصوصی ( Private Key (KEY) )

که باز هم کاملاً در باکس دوم (Private Key (KEY)) جایگذاری کنید.
از امنیت این فایل‌ها مطمئن باشید.
پس از تکمیل فرم بر روی گزینه Install certificate کلیک کنید تا نصب نهایی شود.

7

که اگر درست پیش آماده باشید با این پنجره مواجه خواهید بود که به معنا موفقیت در نصب گواهی‌نامه است.
حالا اگر به آدرس https://domain.ir بروید باید نسخه ssl امن سایت که توسط مروگر هم شناسایی می‌شود لود شود.

89

 

چند نکته

همچنین می‌توانید از آدرس sslchecker.com/sslchecker گواهی‌نامه دامنه خود را تست کنید و اطلاعات آن را مشاهده کنید.
اما اگر احیاناً با نوعی اخطار در مرورگر مبنی بر امن نبودن کامل آدرس مواجه شدید ، به این دلیل است که در سایت شما فایل‌ها و درخواست های غیر ssl وجود دارد که باید آن‌ها را بیابید و به دامنه https ببرید. (مرورگر کروم اطلاعاتی درباره فایل‌های غیر امن به شما می دهد)

10

اما در این حالت فقط زمانی که کاربر از https برای ورود به سایت شما استفاده کند نسخه امن سایت لود می‌شود و مابقی درخواست‌ها هنوز از پروتکل http پاسخ داده‌ خواهند شد ، برای اینکه همواره نسخه https سایتتان لود شود می‌توانید از قطعه کد زیر در فایل htaccess استفاده کنید

و اگر از وردپرس استفاده می‌کنید ، می‌توانید از تنظیمات > همگانی ، آدرس سایت و یا داشبورد و یا هردو را به https ببرید ، افزونه هایی نیز برای این کار وجود دارند.
توصیه می‌کنم حداقل بخش‌های مدیریت ، کاربری و پرداخت سایتتان را روی پروتکل https قرار دهید ، هرچند اگر کل سایت https باشد برای موتورهای جست‌وجو بهینه‌تر محسوب می‌شود.
دقت کنید که اگر کاملاً سایتتان را به پروتکلhttps ببرید تمام ایندکس های قبلی دامنه ریدایرکت می‌شوند ، توصیه می‌شود برای سئوی بهتر نسخه https سایتتان را نیز در وب‌مستر تولز گوگل و بینگ ثبت کنید.
همچنین دقت کنید برای سئوی بهتر باید محتوای هر دو نسخه سایتتان یکسان باشد.
این گواهی‌نامه نود روزه است و باید نود روز دیگر این فرآيند را دوباره انجام دهید و گواهی‌نامه جدید را ثبت نمایید.

امیدوارم با قدم‌هایی کوچک به امنیت و حفظ حریم خصوصی خود و جامعه خود کمکی بزرگ کرده باشیم.

دیدگاه ها
  • حسین شفیعیان گفت:

    خسته نباشی مصطفی جان
    عالی بود ، بسیار استفاده کردم 😉

  • علی گفت:

    مطلبتون آموزنده بود اگه میشه لینک گروه ها تگلرام رو دوباره تو کانال بزارید مممنون

  • srs.soft گفت:

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

  • کوروش گفت:

    عالی بود مصطفی جان
    سوالی که اینجا مطرحه ما روی سرور هاستینگ با کنترل پنل سی پنل ۱۰۰ تا مثلا سایت داریم و اشتراکی هست همه از یه ای پی استفاده میکنن!
    باز هم میشه برای یه دامین خاص 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

    راهنمایی کنید چی نصب کنیم چه بسته هایی و…

  • erfan گفت:

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

    • حسین شفیعیان گفت:

      سلام
      از افزونه Crayon Syntax Highlighter استفاده شده

      • erfan گفت:

        من این افزونه رو نصب کردم اما هر کاری کردم کد ها رو مثل سایت شما نشون نمیده فقط کدها رو داخل یک صفحه طوسی رنگ ساده نمایش میده. ممنون میشم اگر راه حلی به ذهنتون میرسه به من هم بگید.

        • حسین شفیعیان گفت:

          باید برید به قسمت تنظیمات افزونه و تغییرات تم رو تغییر بدید

          • erfan گفت:

            یک مشکل دیگه ای هم که الان برام پیش اومد این افزونه برخی از امکانات داشبوردم رو مثل ویرایش نوشته ها و از کار میندازه.

          • حسین شفیعیان گفت:

            من چنین مشکلی ندارم !

  • حسین حیدری گفت:

    ایول! مصطفی هم اینجا می‌نویسه! عالیه! منتظر بقیه‌ی مطالبت هستم 😉

  • رضا افشین مهر گفت:

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

    • مصطفی اسدی گفت:

      سلام
      مراحل تمدید دقیقا مثل گرفتن یک گواهینامه جدید است و فرقی نمیکند
      گواهینامه های این بنیاد فقط ۹۰ روزه هستند و برای راحتی کار می توانید این فرآیند را در یک کرون جاسازی کنید

  • رضا افشین مهر گفت:

    سلام
    بابت پاسختون ممنونم
    آقای اسدی عزیز همنطور پیشتر هم عرض کردم من گواهی امنیتی ssl رو فقط برای نماد اعتماد دو ستاره میخوام و برای این منظور این گواهی باید یک ساله باشه آیا شما همچین گواهیی رو که یک ساله و رایگان باشه نمیشناسید؟
    اگه نه گواهی ارزون واسه دامنه ir چطور؟
    پیشاپیش ازتون ممنونم

    • مصطفی اسدی گفت:

      فکر نمیکنم لزوما باید یکساله باشه
      ولی فعلا این بنیاد گواهینامه ۹۰ روزه می دهد
      برای کار تجاری یک گواهینامه ضروری است پس هزینه کنید

  • Sosha گفت:

    با درود.
    من تمامی این مراحل رو انجام دادم و به خوبی هم انجام شد.
    سایت دارای SSL بود و من هم خوش حال…
    گذشت تا امروز… یهو سایتم رو باز کردم دیدم که ای‌وای!!! سایت بالا نمیاد و مشکل از SSL هست.
    رفتم توی سایت SSLchecker دیدم ۲تا CHERT Cart برام صادر شده در حالی که قبلا یک دونه بود!
    اعصبانی شدم و فکر کردم یکی از دوستام که دسترسی داشته به سایتم رفته همچین کاری کرده…
    خلاصه رفتم توی پنل و در کمال ناباواری دیدیم بخش SSL/TLS رو از توی پنلم برداشتن!
    فهمیدم کار هاست ارایه دهندست و می خواد مثل سایر ارایه دهنده ها بیاد و تقاضا پول کنه برای SSL گذاشتن روی سایت که از طرف خودشون داده میشه با مبالغی مثل ۳۰هزار تومن به بالا…
    خوب به شدت اعصابانی بودم و زنگ زدم پشتیبانی و درجا گفتم SSL/TLS پنل من کجاست چرا برش داشتید؟؟؟ الان سایت من از دسترس خارج شده!
    شروع کرد به گفتن این که آره شما باید از ما SSL رو خریداری کنید و این حرفا…
    حدسم درست بود. شروع کردم به داد زدن و این که کار شما غیر قانیونیه چون من SSL دارم و شاید دوست نداشته باشم از شما SSL بخرم!

    شروع کرد بهونه آوردن که سایت شما که SSL داره باعث میشه باقی سایت هایی رو که SSL ندارن دچار مشکل کنه و این صحبت های بی ربط…
    در آخر گفت شما بیاید ۴هزار تومن بدید تا شما رو رویه یه IP دیگه بذاریم که مشکل رفع شه…
    منم در نهایت مجبور شدم به همین بسنده کنم و قبول کردم…
    خلاصه که اینم داستنه ما با هاست.
    از همه چی می خوان پول دربیارن 🙂

  • سامان گفت:

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

  • شایگان شکرالهی گفت:

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

  • علیرضا گفت:

    مصطفی بسیار کاربردی بودش!

  • حسین رحیمی گفت:

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

  • meysam گفت:

    سلام،
    اگر در هاست اشتراکی cpanel به ssh دسترسی نداشته باشیم و ادمین نیز جهت نصب پلاگین همکاری نکند، از چه طریق می توان به نصب ssl رایگان Lets Encrypt اقدام کرد ؟
    لازم به ذکر است sni روی این هاست فعال می باشد.

  • سامان گفت:

    ممنونم از مطالبتون
    لطفا اگر امکانش باشه که آموزش های اینجوری رو داخل یک فایل PDF هم بذارین که بشه دانلود کرد و نگه داشت خیلی خوب میشه
    مرسی


Time limit is exhausted. Please reload CAPTCHA.