بلاگ/آموزش پیکربندی nginx با Let’s Encrypt در CentOS 8
به‌روز شده

آموزش پیکربندی nginx با Let’s Encrypt در CentOS 8

چگونه میتوان وب سرور nginx را با گواهینامه رایگان ssl بروی سرور CentOS 8 امن کرد؟ Let’s Encrypt یک گواهینامه رایگان،اتوماتیک ‌و باز برای وب سایت و ایمیل سرور شماست. در این مقاله قصد داریم نحوه نصب این گواهینامه برای وب سرور nginx، آموزش پیکربندی nginx و دریافت رتبه A+ بروی CentOS 8 را نمایش دهیم.

1398/10/284581 بازدید
آموزش پیکربندی nginx با Let’s Encrypt در CentOS 8

چگونه میتوان وب سرور nginx را با گواهینامه رایگان ssl بروی سرور CentOS 8 امن کرد؟

Let’s Encrypt یک گواهینامه رایگان،اتوماتیک ‌و باز برای وب سایت و ایمیل سرور شماست. در این مقاله قصد داریم نحوه نصب این گواهینامه برای وب سرور nginx، آموزش پیکربندی nginx و دریافت رتبه A+ بروی CentOS 8 را نمایش دهیم.

چگونگی ایمن سازی و آموزش پیکربندی nginx با Let’s Encryptدر CentOS 8

روند دریافت گواهینامه ssl به شرح زیر است: ۱) دریافت نرم افزار acme.sh
php
git clone https://github.com/Neilpang/acme.sh.git
۲) دریافت پیکربندی nginx برای دامنه
php
vi /etc/nginx/conf.d/your-domain-name.conf
۳) دریافت گواهینامه ssl برای دامنه
php
acme.sh --issue -d your-domain-name --nginx
۴) پیکربندی TLS/SSL برای Nginx
php
vi /etc/nginx/conf.d/your-domain-name.conf
۵) راه اندازی cron job برای بروزسانی خودکار۶) بازکردن پورت ۴۴۳(HTTPS) و​​ استفاده از فایروال برای CentOS 8
php
sudo firewall-cmd --add-service=https

در ادامه نحوه نصب  acme.sh client و استفاده آن بروی CentOS 8 برای دریافت گواهینامه ssl از Let’s Encrypt.را خواهیم دید.

قدم اول: نصب نرم افزارهای مورد نیاز نصب bc packages, curl, wget ,git با دستور yum command:
php
sudo yum install git bc wget curl socat
Install-needed-tools-using-yumقدم دوم: نصب acme.sh Let’s Encrypt client کلون کردن repo
php
cd /tmp/git clone https://github.com/Neilpang/acme.sh.git
clone-acme.sh-git-min نصب و اجرای acme.sh client بروی سیستم :
php
cd acme.sh/sudo -i ## be root user ##./acme.sh –install
Install-acme.sh-client-on-CentOS-8 پس از نصب، لازم است خروجی(Terminal) فعلی را بسته و مجددا آن را باز کنید و یا دستور زیر را در command  تایپ کنید:
php
sudo source ~/.bashrc
  با نوشتن شماره نسخه، نصب خود را تایید نمایید:
php
acme.sh --versionhttps://github.com/Neilpang/acme.shv2.8.4
قدم سوم: در این قسمت قصد داریم یک پیکربندی جدید برای دامنه به صورت زیر ایجاد کنیم(کافیست نام دامنه خود را جایگزین نمایید)
php
# vi /etc/nginx/conf.d/c8nginx.cyberciti.biz.conf
کد زیر را اضافه نمایید:
php
# http port 80server {    listen      80;    server_name c8nginx.cyberciti.biz;    access_log  /var/log/nginx/http_c8nginx.cyberciti.biz_access.log;    error_log   /var/log/nginx/http_c8nginx.cyberciti.biz_error.log;    root        /usr/share/nginx/html;}
سپس فایل را ذخیره کنید و ببندید. تنظیمات nginx را تست کنید و سرور nginx را به صورت زیر مجددا بارگیری(reload) نمایید.
php
# nginx -t# systemctl restart nginx.service
  قدم چهارم: فایل dhparams.pem را بسازید. دستور openssl را اجرا نمایید اما یک دایرکتوری جدید ایجاد کنید و از دستور mkdir استفاده کنید.
php
# mkdir -pv /etc/nginx/ssl/cyberciti.biz/# cd /etc/nginx/ssl/cyberciti.biz/# openssl dhparam -out dhparams.pem -dsaparam 4096
اطلاعات بیشتر  درخصوص چگونگی افزایش سرعت ssl بروی Linuxقدم پنجم: دریافت گواهینامه برای دامنه صدور گواهینامه برای دامنه:
php
sudo acme.sh --issue -d c8nginx.cyberciti.biz -k 2048 --nginx## for two domains ##sudo acme.sh --issue -d c8nginx.cyberciti.biz -d www.cyberciti.biz -k 2048 --nginx## get certs for three domains ##sudo acme.sh --issue -d cyberciti.biz -d c8nginx.cyberciti.biz -d www.cyberciti.biz -k 2048 --nginx## let us get cert for c8nginx.cyberciti.biz domain only ##sudo acme.sh --issue -d c8nginx.cyberciti.biz -k 4096 --nginx
CentOS-8-Obtain-Lets-Encrypt-certificate-for-domain
CentOS8 Obtain Lets Encrypt certificate for domain
  قدم ششم: پیکربندی nginx تا به اینجا شما درخواست موفقیت آمیز خود برای دریافت گواهینامه ssl از Let’s Encryptبرای سرور لینوکس centOS 8  را ارسال کردید. اینک زمان پیکربندی آن است. برای بروزرسانی پیکربندی ssl از کد زیر استفاده نمایید:
php
<pre>$ sudo vi /etc/nginx/conf.d/c8nginx.cyberciti.biz.conf
کد زیر را نیز ضمیمه کنید:
php
</pre>## http port 80: START http://c8nginx.cyberciti.biz/ config ##server {listen 80;listen [::]:80;access_log&nbsp; /var/log/nginx/http_c8nginx.cyberciti.biz_access.log;error_log&nbsp;&nbsp; /var/log/nginx/http_c8nginx.cyberciti.biz_error.log;server_name c8nginx.cyberciti.biz;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/share/nginx/html;## redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.#return 301 https://$host$request_uri;}## https port 443: START https://c8nginx.cyberciti.biz/ config ##server {listen 443 ssl http2;listen [::]:443 ssl http2;server_name c8nginx.cyberciti.biz;root /usr/share/nginx/html;# certs sent to the client in SERVER HELLO are concatenated in ssl_certificatessl_certificate&nbsp; /etc/nginx/ssl/cyberciti.biz/c8nginx.cyberciti.biz.cer;ssl_certificate_key /etc/nginx/ssl/cyberciti.biz/c8nginx.cyberciti.biz.key;ssl_session_timeout 1d;ssl_session_cache shared:MozSSL:10m;&nbsp; # about 40000 sessionsssl_session_tickets off;ssl_dhparam /etc/nginx/ssl/cyberciti.biz/dhparams.pem;## Supports Firefox 27, Android 4.4.2, Chrome 31, Edge, IE 11 on Windows 7, Java 8u31, OpenSSL 1.0.1, Opera 20, and Safari 9 and above#ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers off;# HSTS (ngx_http_headers_module is required) (63072000 seconds)add_header Strict-Transport-Security "max-age=63072000" always;# OCSP staplingssl_stapling on;ssl_stapling_verify on;# replace with the IP address of your resolverresolver 8.8.8.8;## add other config below such as fastcgi or php and so on ##<pre>}
فایل را در ویرایشگر متن vi/vim ذخیره کرده و ببندید.قدم هفتم: نصب گواهینامه گواهینامه صادر شده برای nginx را نصب کنید:
php
# acme.sh --installcert -d c8nginx.cyberciti.biz \--key-file /etc/nginx/ssl/cyberciti.biz/c8nginx.cyberciti.biz.key \--fullchain-file /etc/nginx/ssl/cyberciti.biz/c8nginx.cyberciti.biz.cer \--reloadcmd 'systemctl reload nginx.service'
Install-Lets-Encrypt-certifcate-in-CentOS-8 برای اطمینان از باز بودن پورت OS از دستور ss ویا netstat استفاده کنید.
php
# ss -tulpn
قدم هفتم: پیکربندی firewall در این مرحله شما نیاز دارید پورت ۴۴۳ (https) باز کنید تا client ها بتوانند متصل شوند. دستورات را با استفاده از دستور زیر به روز نمایید:
php
$ sudo firewall-cmd --add-service=https$ sudo firewall-cmd --runtime-to-permanent
قدم هشتم: تست و بررسی مرورگر خود را باز کنید و نام دامنه خود را تایپ کنید: https://c8nginx.cyberciti.biz گواهینامه خود را با سایت های بررسی ssl امتحان کنید. https://www.ssllabs.com/ssltest/analyze.html?d=c8nginx.cyberciti.biz CentOS-8-Nginx-SSL-Labs-A-Test-result-with-Lets-Encrypt-Certificate-قدم نهم: دستورات acme.sh تمامی گواهینامه های خود را به دستور زیر لیست کنید:
php
<pre># acme.sh --list
برخی خروجی ها:
php
Main_Domain            KeyLength  SAN_Domains  Created                       Renewc8nginx.cyberciti.biz  "4096"     no           Mon Dec 30 16:57:10 UTC 2019  Fri Feb 28 16:57:10 UTC 2020
  دستور تمدید مجوز دامنه با نام c8nginx.cyberciti.biz:
php
# acme.sh --renew -d c8nginx.cyberciti.biz
  توجه داشته باشید که  Cron job  وظیفه به روز رسانی گواهینامه شما را به عهده دارد که به صورت زیر نصب میگردد و نیاز به هیچ کاری از سمت شما نیست. برای دیدن job کد زیر را اجرا نمایید:
php
# crontab -l
نمونه های خروجی:
php
8 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
به روز رسانی acme.sh client:
php
# acme.sh --upgrade<pre>
برای دریافت راهنمایی بیشتر از کد زیر استفاده نمایید:
php
# acme.sh --help | more
  منبع: وب سایت cyberciti