گواهینامه SSL رایگان با Let’s Encrypt برای هاست

چند وقت پیش در مقاله ای روش ساخت گواهینامه SSL رایگان با Let’s Encrypt برای سرور مجازی با سیستم عامل CentOS آشنا شدم (+). اما اکثر وب سایت ها بر روی هاست های اشتراکی قرار دارند. به همین دلیل مشتاق شدم که از این سرویس بر روی هاست های اشتراکی استفاده کنم که به عنوان تست این گواهینامه را برای سایت خودم ساختم.
Let’s Encrypt چیست؟
Let’s Encrypt توسط ISRG تامین می‌شود که سازمان‌های بزرگی همچون بنیاد موزیلا، سیسکو و Akamai از آن حمایت می‌کنند. خبر بسیار خوب اینکه این سرویس برای دامنه‌های ir. نیز قابل نصب است. (+)
ساخت گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی
برای ساخت گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی نیاز به سیستم عامل Linux و یا macOS هست که دستورات ساخت گواهینامه فرقی با هم ندارند.
با فشردن کلیدهای Command + space در Spotlight Search کلمه Terminal را جستجو و باز نمایید. ابتدا با دستور Git یک Clone از letsencrypt ایجاد کنید:

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

clone letsencrypt from git in macOS terminal


پس از اتمام کلون letsencrypt با دستور زیر وارد پوشه آن می شویم:

سپس دستور زیر را برای شروع ساخت گواهینامه وارد کنید:

پس از اجرای دستور بالا، ایمیلی برای ارسال هشدارها و … از شما دریافت می کند.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

set email for letsencrypt


در ادامه روند ساخت ۳ سوال از شما پرسیده می شود که مانند تصاویر به آن ها پاسخ دهید:
گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Terms of letsencrypt

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

share email with letsencrypt

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

public ip in letsencrypt

مهمترین قسمت ساخت گواهینامه این قسمت می باشد. همانطور که در تصویر مشاهده می کنید از شما خواسته می شود تا یک فایل در root سایت خود به اسم مشخص شده ایجاد و محتویات آن را بر اساس کد مورد نظر پُر کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

create first validation file on host for letsencrypt

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

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

create second validation file on host for letsencrypt

پس از ایجاد فایل ها دوباره کلید Enter را بزنید. در صورت نبود مشکل فایل ها ایجاد می شود.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

created letsencrypt files successfully

برای اتمام کار دستور exit را وارد کنید و Enter کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

exit from letsencrypt

تنها کار باقی مانده آپلود کلیدهای ساخته شده در CPanel است. برای کپی کلید ها در macOS یک تب ترمینال جدید با کلیدهای Command + T باز کنید. در تب جدید دستور زیر را وارد کنید تا بتوانید به فایل های سیستمی macOS وارد شوید.

یک بار از سیستم Logout شوید و دوباره وارد سیستم شوید.
Finder را باز کنید. در منوی View گزینه Show Path Bar را انتخاب کنید. سپس بر روی نام هارد خود دبل کلیک کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Show path bar in macOS

به مسیر زیر وارد شوید:

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

letsencrypt created file path

اگر پوشه archive قفل بود با استفاده از Get Info سطح دسترسی everyone را به read & write تغییر دهید ) :

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Change folder permisson in macOS

فایل های cert1.pem و privkey1.pem و chain1.pem را استفاده از یک TextEditor مانند SublimeText باز کنید.
به CPanel هاست اشتراکی خود وارد شوید و در قسمت SECURITY گزینه SSL/TSL را انتخاب نمایید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

SSL TSL in security in cpanel

در صفجه باز شده لینک Manage SSL sites را ذیل قسمت Install and Manage SSL for your site انتخاب کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Manage ssl on cpanel

در این صفحه در قسمت Domain دامنه خود را انتخاب کنید. در فیلد Certificate: (CRT) محتویات فایل cert1.pem، در فیلد Private Key (KEY) محتویات privkey1.pem و در فیلد Certificate Authority Bundle: (CABUNDLE) محتویات فایل chain1.pem را وارد کنید و Install Certificate را انتخاب کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Install SSL on shared host in cpanel

به شما پیغامی مبنی بر موفق بودن ساخت گواهینامه داده می شود و در قسمت گواهینامه های ثبت شده، گواهینامه ساخته شده خود را مشاهده می کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Install ssl on shared host in cpanel successfull

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

Installed ssl on shared host in cpanel

برای اجبار کردن مرورگرها به استفاده از SSL در روت هاست خود در ابتدای فایل htaccess. کد زیر را وارد کنید:

در آخر می توانید توسط لینک (+) مشخصات گواهینامه سایت خود را مشاهده کنید.

گواهینامه SSL رایگان با Let’s Encrypt برای هاست های اشتراکی

check ssl

برای بازگرداندن macOS به حالت پیشفرض کد زیر را وارد کنید:

در سیستم عامل Linux می توانید به (+) مراجعه کنید.

بکاپ از MySQL و ارسال فایل با Shell

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

بکاپ از MySQL و ارسال فایل با Shell

برای بکاپ از MySQL و ارسال فایل با Shell در مسیری از هاست خود فایلی با پسوند sh. ایجاد کنید (نام فایل فرضی dumpsqldb.sh هست). در فایل ایجاد شده خطوط زیر را وارد کنید و فایل را ذخیره کنید.

خطوط ۱، ۲ و ۳ اطلاعات دیتابیس مورد نظر هستند. متغیر EMAIL، ایمیلی هست که فایل بکاپ برای آن ارسال می شود. متغیر HOST هاست مورد نظر است که خود Shell آن را پُر می کند. متغیر NOW نیز زمان فعلی است که بر اساس نیاز خود می توانید فرمت آن را تغییر دهید.
در خط ۱۶ با استفاده از دستور cd به فولدری که فایل sh. ایجاد شده است تغییر مسیر داده می شود. ftp-usrname در اکثر هاست های اشتراکی همان نام کاربری CPanel یا FTP است. در خط ۱۸، با استفاده از دستور mysqldump از دیتابیس مورد نظر بکاپ گرفته می شود و در فایلی به اسم محتویات متغیر NOW و با پسوند sql. ذخیره می گردد. در خط ۲۰، فایل sql. ایجاد شده با پسوند tgz. فشرده و ذخیره می شود. در خط ۲۲ فایل sql. ایجاد شده حذف می شود. در خط ۲۶ نیز با استفاده از دستور mutt فایل ایجاد شده ایمیل می شود ( برای ارسال ایمیل روش های دیگری مانند mail نیز وجود دارد).
برای اجرای فایل در زمان های مشخص باید از CronJob استفاده شود. برای ایجاد یک CronJob در CPanel، به بخش CronJob بروید.

cron job section in cpanel

cron job section in cpanel


در بخش Add New Cron Job می توانید CronJob جدید ایجاد کرد. برای تعیین زمان اجرای CronJob می توان از زمان های پیشفرض سیستم مانند دو بار در روز یا … استفاده کرد که لیست کامل آن در Common Settings وجود دارد یا با استفاده از فیلدهای موجود زمان را مشخص کرد.
common setting in cpanel cronjob

common setting in cpanel cronjob


در فیلد Command دستور زیر را وارد و سپس ذخیره کنید.

به طور مثال در تصویر زیر هر روز راس ساعت ۱۲:۰۰ و ۰۰:۰۰ CronJob ایجاد شده اجرا می شود.

cpanel cron job set to execute shell command twice in day

cpanel cron job set to execute shell command twice in day

پس از ذخیره CronJob اگر مشکلی نباشد مانند زیر پیغام دریافت می کنید.

Cronjob successfully set

Cronjob successfully set


CronJob ایجاد شده است و باید منتظر بمانید تا فایل بکاپ برایتان ایمیل شود.

تبدیل تاریخ میلادی به شمسی

در یکی از پروژه هایی که می نوشتم باید تاریخ میلادی به شمسی تبدیل می شد. به صورت پیشفرض می توان از PersianCalendar در فضانام System.Globalization استفاده کرد. اما بنا به دلایلی قادر به استفاده از این کلاس پیشفرض نبودم. با استفاده از کد زیر تبدیل تاریخ میلادی به شمسی به همراه محاسبه سال کبیسه انجام میگیرد:

ریست Launchpad در macOS

بعد از دوره های زیادی که نبودم، قصد دارم به غیر از #C از Xamarin و دستورات مفید macOS هم بنویسم.برای اولین دستور مفید، می توانید ریست Launchpad در macOS را توسط کد زیر در Terminal انجام بدید:

برای استفاده از ترمینال، با استفاده از SpotLight Search (با فشردن Command+Space) کلمه Terminal را بنویسید.

Socket در سی شارپ

برای کار با Socket نیاز هست تا شما یک Socket در سمت کلاینت باز کنید و یک Socket در سرور. Socket در سی شارپ هم از این قاعده مستثنی نیست.
برای کار با Socket، همیشه در سمت سرور باید به آن Socket گوش داده شود تا وقتی از کلاینت داده ارسال می شود، داده را دریافت و دوباره به همان Socket باز شده اطلاعات را بفرستد.

Socket در سی شارپ

برای تبادل داده با Socket نیاز است تا داده ها تبدیل به آرایه ای از byte شوند.
برای استفاده از Socket باید فضانام System.Net.Sockets را اضافه کنید.
آی پی سرور و پورتی که Socket باید به آن متصل شود را مشخص می کنید.
وقتی اطلاعات دریافت شود در متغیر byte ریخته می شود.
در کد زیر یک رشته متشکل از Id و Number و quantity برای سرور ازسال می خواهد شد که در خط ۱۹ تبدیل به آرایه ای از بایت ها می شود.
در خط ۲۳ یک Socket ساخته می شود که پارامترهای آن به شرح زیر است:

  • AddressFamily : شبکه ای که سوکت از آن استفاده می کند.
  • SocketType : نوع سوکت است که یک طرفه و دوطرفه بودن آن را تعیین می کند.
  • ProtocolType : نوع پروتکل استفاده را بیان می کند.
  • پس از ساخت Socket آن را در خط ۲۶ به آی پی و پورت مشخص شده کانکت می کنیم و در خط ۲۷ داده ها ارسال می شود.
    پس از ارسال داده ها، در خط ۲۹ داده ها دریافت می شود و در متغیر byte قرار می گیرد.
    در کدهای زیر سوکت به یک آی پی با پورت مشخص باز می شود و اطلاعات را ارسال و دریافت می کند. این عمل هر ۱۵ دقیقه یک بار انجام می شود.

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

    Encoding.UTF8.GetBytes
    Socket
    AddressFamily
    SocketType
    ProtocolType
    socket.Connect
    SocketFlags
    socket.Receive