نحوه renew کردن گواهینامه letsEncrypt

همونطور که میدونید مدت زمانی که یه lets encrypt certificate معتبره، سه ماه هست و شما بعد از سه ماه باید دوباره یه گواهینامه یا همون certificate جدید ایجاد کنید برای این کار باید طبق روش زیر عمل کنید.

اول برید به مسیر:

/opt/letsencrypt

بعدش باید دستور زیر رو بزنید:

sudo ./certbot-auto

حالا ازتون میخواد اسم سایتی رو که میخواید روش https فعال بشه رو انتخاب کنید. که باید شماره‌ای که قبل از اسم سایت نوشته رو وارد کنید.

حالا یه سوال دیگه ازتون میپرسه که دو تا گزینه برای جواب دادن دراختیارتون میذاره:

گزینه اول که با No redirect شروع میشه، برای اینه که هیچ تغییری توی کانفیگ وب‌سرورتون انجام نده.

گزینه دوم هم که با Redirect شروع میشه رو اگه انتخاب کنید باعث میشه کانفیگ وب‌سرورتون رو طوری تغییر بده که تمام درخواست‌هایی که به سایت میاد به Https منتقل بشن.

بسته به نیازتون یکی از دو گزینه بالا رو انتخاب کنید و اینتر رو بزنید. درنهایت هم باید وب‌سرورتون رو ری‌استارت کنید.

sudo systemctl restart httpd.service

حالا گواهینامه سایت شما دوباره ساخته شده و تا سه ماه اعتبار داره که بعد از سه ماه باید دوباره همین مراحل رو طی کنید.

 

نحوه جلوگیری از آپدیت یک بسته خاص با dnf

شاید برای شما هم پیش اومده باشه که بخواید سیستمتون رو آپدیت کنید، اما نخواید بعضی بسته‌های خاص آپدیت بشن. برای این کار لازمه از سوئیچ:

exclude=package-name--

استفاده کنید.

به این صورت:

sudo dnf update --exclude=package-name

به جای package-name باید اسم بسته رو بنویسید به همراه شماره دقیق ورژن. مثلا من نمیخوام بسته libwebp-0.6.1-1.fc26.i686 آپدیت بشه، بنابراین دستور من به شکل زیر میشه:

sudo dnf update --exclude=libwebp-0.6.1-1.fc26.i686

و به همین راحتی میتونید جلوی آپدیت یه بسته خاص رو بگیرید.

نحوه راه اندازی SSL رایگان با Lets Encrypt روی Centos - گام دوم

خب رسیدیم به قسمت دوم راه اندازی SSL با Lets Encrypt، توی قسمت اول آموزش SSL رو روی سرورمون راه اندازی کردیم اما سایت با https بالا نمیاد. چرا؟ چونکه باید وب سرورمون رو هم برای استفاده از SSL کانفیگ کنیم، که من اینجا نحوه کانفیگ وب سرور Apache رو توضیح میدم.

اول باید پورت 443 که مال https هست رو روی سرور باز کنیم با دستور زیر:

sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

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

sudo vi /etc/httpd/conf.d/example.conf

به جای example هم اسم فایل کانفیگ سایت خودتون رو وارد کنید که داخل این فایل کانفیگ تنظیمات  Virtual Host ما قرار داره.

فرض میکنیم تنظیمات وب سایت شما به شکل زیره:

<VirtualHost example.ir:80>
ServerName example.ir
DocumentRoot /var/www/html/public_html
ServerAlias www
ServerAdmin admin@example.ir
</VirtualHost>

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

برای این کار قبل از تگ </VirtualHost> این کد رو قرار میدیم:

redirect 301 / https://example.ir 

که همونطور که میدونید به جای example.ir باید آدرس سایت خودتون رو بنویسید.

حالا باید یه Virtual Host دیگه زیر قبلی برای پورت 443 بنویسیم درست مثل قبلی. به این صورت:

<VirtualHost example.ir:443>
ServerName example.ir
DocumentRoot /var/www/html/public_html
ServerAlias www
ServerAdmin admin@example.ir
</VirtualHost>

همینطور که میبینید فقط شماره پورت عوض شده و تنظیمات همون قبلیه.

الان باید SSL Engin رو روشن کنیم و کلیدهایی که توی گام اول ساختیم رو اینجا وارد کنیم. که البته این کلیدها رو داخل همین Virtual Host دوم تعریف میکنیم درست قبل از بسته شدن تگ:

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.ir/fullchain.pem
SSLUseStapling on
SSLStaplingReturnResponderErrors off
SSLStaplingResponderTimeout 5
SSLCertificateKeyFile /etc/letsencrypt/live/example.ir/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.ir/chain.pem

لازم به ذکر نیست که به جای example.ir باید آدرس سایت خودتون رو بذارید.

بعدش باید تعیین کنیم که سایتمون فقط از طریق پروتکل TLS  بالا بیاد و نشه با SSL  ورژن 2 و 3 بازش کرد چونکه این دو تا پروتکل امنیتشون نقض شده و باعث میشن سایت ما در مقابل حمله POODLE آسیب پذیر باشه. پس باید جلوشون گرفته بشه. برای اینکار هم فقط کافیه کد زیر رو بعد از کد های بالایی قرار بدید:

SSLProtocol all -SSLv2 -SSLv3

حالا بیاید یه کم دیگه امنیت و سرعت https رو بالا ببریم:

 SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

SSLHonorCipherOrder on

این تنظیمات باعث میشه که https برای هش کردن از اللگوریتم هایی مثل RC4 و یا MD5 استفاده نکنه و از الگوریتم های قویتری استفاده کنه. خب کار ما با این فایل تمام شد و تنظیمات رو ذخیره میکنیم و از فایل خارج میشیم. در نهایت تنظیمات این فایل کانفیگ ما به این شکل میشه:

<VirtualHost barahouei.ir:80>
ServerName example.ir
DocumentRoot /var/www/html/public_html
ServerAlias www
ServerAdmin admin@example.ir

 redirect 301 / https://example.ir
</VirtualHost>

<VirtualHost example.ir:443>
ServerName example.ir
DocumentRoot /var/www/html/public_html
ServerAlias www
ServerAdmin admin@example.ir

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.ir/fullchain.pem
SSLUseStapling on
SSLStaplingReturnResponderErrors off
SSLStaplingResponderTimeout 5
SSLCertificateKeyFile /etc/letsencrypt/live/example.ir/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.ir/chain.pem

 SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

SSLHonorCipherOrder on
</VirtualHost>

تقریبا کار تمامه فقط باید فایل تنظیمات ssl رو ویرایش کنیم:

sudo vi /etc/httpd/conf.d/ssl.conf

توی فایل جستجو کنید و چک کنید که کانفیگ ها برابر این باشه:

Listen 443 https

SSLEngine on

SSLProtocol all -SSLv2 -SSLv3


SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

SSLHonorCipherOrder on

البته این ها هر کدوم در یک قسمت از فایل قرار دارن و الزاما پشت سر هم نیستن و شما باید چک کنید که برابر تنظیمات بالا باشن. به آخر فایل ssl.conf باید این خط زیر رو وارد کنید آخر از همه بعد از بسته شدن تگ Virtual Host یعنی آخرین خط!:

SSLStaplingCache shmcb:/run/httpd/ssl_stapling_cache(128000)

و فایل رو ذخیره کنید و وب سرور آپاچی رو ری استارت کنید:

sudo systemctl restart httpd

و تمام! حالا سایتتون با https به صورت امن بالا میاد. و با خیال راحت میتونید ازش استفاده کنید.

البته باید بگم چون ما اینجا از TLS استفاده میکنیم و SSL v2 و v3 رو کلا غیر فعال کردیم. امکان داره سایت توی مرورگرهای قدیمی بالا نیاد چون اون ها از TLS پشتیبانی نمیکنن. پس اگه میخواید که توی مرورگرهای قدیمی هم سایتتون نمایش داده بشه باید SSL v2 و v3 فعال باشه.  و به نظرم اگه میخواید این دو تا پروتکل ناامن رو به خاطر مرورگرهای قدیمی استفاده کنید. پیشنهاد من اینه که اصلا این همه زحمت به خودتون ندید و بیخیال https بشید!

امیدوارم که این آموزش به دردتون خورده باشه. و نظر یادتون نره.

نحوه راه اندازی SSL رایگان با Lets Encrypt روی Centos - گام اول

خب توی دومین پست همونطور که از عنوان مشخصه میخوام نحوه راه اندازی SSL رایگان رو بهتون آموزش بدم. من این آموزش رو روی توزیع گنو/لینوکس centos 7 پیش میبرم اما شما میتونید روی نسخه های دیگه centos یا توزیع های دیگه لینوکس هم این کار رو انجام بدید.

قاعدتا اول باید یه centos با یه اینترنت که بهش وصل باشه داشته باشید. مرحله بعد اینه که با دستور زیر git رو نصب کنید:

sudo yum install git

 اگه نمیدونید باید بگم که گیت یه سیستم کنترل ورژن برنامه است. sudo هم برای اینه که اگه از یه یوزر غیر root استفاده میکنید بتونید برنامه هم نصب کنید ولی اگه یوزرتون root هست احتیاجی به زدن sudo  نیست.

مرحله بعد اینه که با گیت از گیت هاب Lets Encrypt رو بگیریم و توی پوشه opt ذخیره کنیم با دستور زیر:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

خب حالا lets encrypt  رو توی پوشه opt روی سیستممون داریم و میتونید با رفتن به آدرس زیر محتویات پوشه letsencrypt رو ببینید:

cd /opt/letsencrypt

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

sudo -H ./letsencrypt-auto certonly -a manual -d example.ir -d www.example.ir

به جای example.ir  و www.example.ir باید آدرس وب سایت خودتون رو وارد کنید. حالا چند تا سوال میپرسه مثل ایمیل که باید ایمیلتون رو وارد کنید و یکی دو تا سوال دیگه که باید yes رو بزنید. بعدش بهتون یه کد مثل کد زیر نمایش میده:

Create a file containing just this data: 

mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k.zWHvw6mzEJ8nNXSZOYo7IpUecHazXiIA-Bbpopzz5VU


And make it available on your web server at this URL:

http://example.ir/.well-known/acme-challenge/mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k

------------
Create a file containing just this data: 

yS76qv_GSdHVfLfebOYsbY7FVgSfUw9wk67AOsbJaJ8.zWHvw6mzEJ8nNXSZOYo7IpUecHazXiIA-Bbpopzz5VU

And make it available on your web server at this URL:

http://www.example.ir/.well-known/acme-challenge/yS76qv_GSdHVfLfebOYsbY7FVgSfUw9wk67AOsbJaJ8

---------

حالا باید یه ترمینال دیگه باز کنید، اگه با ssh به سرور وصل شدید، باید این سشن رو باز بذارید و یه ترمینال دیگه باز کنید و دوباره ssh کنید. توی ترمینال جدید برید به جایی که صفحه اصلی سایتتون قرار داره و با دستور زیر یه پوشه به نام .well-known بسازید:

mkdir .well-known

و داخل اون پوشه دوباره یه پوشه به نام acme-challenge بسازید و داخل این پوشه هم یه فایل بسازید طبق اسمی که توی

http://example.ir/.well-known/acme-challenge/mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k

این خط گفته. فایل رو باید طبق دستور زیر بسازید:

touch mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k

که touch دستور ساختن فایل و mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k اسم فایل هست.

حالا کدی که توی خط دوم بهتون داده رو باید توی فایلی که ساختید وارد کنید. به این صورت که با دستور:

vi mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k

وارد فایل میشیم بعد کلید i رو بزنید تا بتونید داخل فایل بنویسید بعدش کدی که توی خط دوم اون یکی ترمینال بهتون داده بود رو باید اینجا بنویسید، که با نگهداشتن همزمان کلیدهای ctrl+ shift + v میتونید کدی رو که از اونجا کپی کردید رو اینجا پیست کنید. کد هم اینه:

mHHtzgUGZyeh4fBXWthmmJfx5i4eVSwkY7nKfuVk65k.zWHvw6mzEJ8nNXSZOYo7IpUecHazXiIA-Bbpopzz5VU

و بعد کلید Esc رو بزنید و بعدش تایپ کنید :wq  اول : و بعد wq و اینتر رو بزنید. حالا باید یه فایل دیگه با اسمی که توی خط نهم:

http://www.example.ir/.well-known/acme-challenge/yS76qv_GSdHVfLfebOYsbY7FVgSfUw9wk67AOsbJaJ8

  بهمون گفته بسازیم و داخل فایل این کد رو قرا بدیم:

yS76qv_GSdHVfLfebOYsbY7FVgSfUw9wk67AOsbJaJ8.zWHvw6mzEJ8nNXSZOYo7IpUecHazXiIA-Bbpopzz5VU

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

/etc/letsencrypt/live/example.ir

کلیدهای ssl رو ببینید. البته اگه یوزر root نیستید باید از sudo استفاده کنید تا بتونید محتویات پوشه رو ببینید. که محتویات پوشه مثله اینه:

cert.pem
chain.pem
fullchain.pem
privkey.pem

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

سلام دنیای مجازی

سلام. سلام به همه. سلام به دنیای مجازی. سلام به گیک ها و سلام به نردها.

این اولین پست من توی بلاگ شخصیمه که توی اولین ساعات بامداد شنبه 1396/8/11 نوشته میشه. این یه شروعه دوباره برای منه و با پیشرفت این بلاگ قراره خودم رو هم پیشرفت بدم پس با من باشید تا درمورد کامپیوتر، سیستم عامل ها به خصوص لینوکس یا همون گنو/لینوکس، برنامه نویسی، زندگی، ادبیات، فلسفه، انیمه و کلی چیزهای دیگه با هم صحبت کنیم و بریم جلو.

منتظر نظراتتون هستم.