نحوه پیکربندی Nginx برای استفاده از گواهی خود امضا SSL / TLS در Ubuntu 18.04 VPS یا سرور اختصاصی

مقدمه

SSL (Secure Sockets Layer) و TLS (Transport Layer Security) پروتکل های وب هستند که برای محافظت از ترافیک عادی با پیچیدن آن به صورت رمزگذاری شده استفاده می شوند.


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

در این آموزش ما شما را از طریق ایجاد یک گواهی SSL / TLS خود امضا کرده و از آن در Nginx استفاده خواهیم کرد. در این حالت از سرور Ubuntu 18.04 استفاده خواهیم کرد.

پیش نیازها

قبل از شروع به موارد زیر نیاز دارید:

  • یک کاربر غیر ریشه با امتیازات sudo
  • سرور Nginx نصب شده است

اکنون ، بیایید وارد روند کار شویم.

مرحله 1: ایجاد گواهی خود امضا شده

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

برای ایجاد یک گواهی و کلید خود امضا شده با SSL ، دستور زیر را اجرا کنید:

$ sudo opensl req -x509 -nodes-day 365-newkey rsa: 2048 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/certs/example.com.crt

Openssl: این ابزار خط فرمان برای تولید و مدیریت گواهی OpenSSL ، کلیدها ، به علاوه فایلهای دیگر.

پاسخ: این فرعی که نشان می دهد ما می خواهیم از مدیریت X.509 CSR (درخواست امضای گواهی) استفاده کنیم. X.509 استاندارد زیربنایی کلید عمومی است که TLS و SSL برای گواهینامه و مدیریت کلید آن مطابقت دارند. در مورد ما ، ما در حال تولید گواهینامه جدید X.509 هستیم و به همین دلیل از req استفاده می کنیم.

-x509: این امر فرعی فرعی req را تغییر می دهد. این نرم افزار به ما اطلاع می دهد که ما به جای تولید CSR ، یک گواهی خودگردان را ایجاد می کنیم.

 -گره ها: به OpenSSL دستور می دهد تا گواهی را با استفاده از یک عبارت عبور ایمن نکند. یک عبارت عبور باعث می شود Nginx در هنگام شروع کار ، پرونده ما را بخواند.

-روز 365: این مدت اعتبار گواهی را تعیین می کند.

-newkey rsa: 2048: این فرمان با بیان اینکه ما به طور همزمان یک کلید جدید و گواهی نامه تولید خواهیم کرد. Rsa: 2048 به این سرویس دستور می دهد یک کلید RSA 2048 بیتی ایجاد کند.

-نتیجه گیری: این یک خط است که OpenSSL را برای ذخیره کلید خصوصی ایجاد شده آموزش می دهد.

-بیرون: این خط به OpenSSL دستور می دهد که گواهی ایجاد شده را ذخیره کند.

پس از دستور فوق ، از شما خواسته می شود به چند سؤال درباره گواهی مورد نظر برای تولید پاسخ دهید.

نحوه پیکربندی Nginx برای استفاده از گواهی خود امضا SSL / TLS در Ubuntu 18.04 VPS یا سرور اختصاصی

آنها را با دقت بخوانید و پاسخ های مناسب را برای تکمیل مراحل ارائه دهید. خط مهمی که باید در این بخش به آن توجه داشته باشید خطی است که نیاز به نام مشترک مانند نام یا سرور شما کاملاً Qualified Domain Name (FQDN) دارد. در این حالت ، نام دامنه یا آدرس IP عمومی مرتبط با سرور را وارد کنید.  .

شما باید خروجی زیر را داشته باشید:

خروجی
نام کشور (2 کد کد) [AU]: US
StateorProvinceName (نام کامل) [برخی از ایالت]: نیویورک
نام محلی (به عنوان مثال ، شهر) []: New YorkCity
نام سازمان (به عنوان مثال ، شرکت) [Widgits Pty Ltd] :: شرکت نمونه
OrganizationalUnitName (به عنوان مثال ، بخش) []: واحد SSL
نام مشترک (به عنوان مثال serverFQDNorYOURname) []: server_IP_address
EmailAddress []: [email protected]_domain.com

پس از اتمام کار ، این دو پرونده در زیر شاخه های مناسب در قسمت داخلی ذخیره می شوند / و غیره / ssl فهرست راهنما.

به این پرونده ها به عنوان مرجع در تنظیمات پیکربندی Nginx نیاز خواهید داشت. همچنین ایجاد یک گروه قوی DH (دیفی دی هلمن) که در مذاکرات رازداری رو به جلو با مشتریان ضروری است ، حائز اهمیت است..

برای انجام این کار ، دستور زیر را اجرا کنید:

$ sudo opensl dhparam -out /etc/nginx/dhparam.pem 4096

این روند ممکن است مدتی طول بکشد ، اما پس از اتمام ، گروه DH (Diffie-Hellman) شما در /etc/nginx/dhparam.pem ذخیره می شود که می تواند در پیکربندی Nginx مورد استفاده قرار گیرد.

نحوه پیکربندی Nginx برای استفاده از گواهی خود امضا SSL / TLS در Ubuntu 18.04 VPS یا سرور اختصاصی

مرحله 2: پیکربندی سرور Nginx HTTP برای استفاده از SSL

از آنجا که قبلاً گواهینامه و کلید و پرونده ها را ایجاد کرده ایم ، می توانیم برای تنظیم Nginx با این تنظیمات حرکت کنیم.

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

ایجاد یک قطعه تنظیمات برای کلید SSL و مجوز

با ایجاد یک قطعه برای پیکربندی Nginx در / etc / nginx / قطعه فهرست راهنما. ما این پرونده را به صورت خود امضا کرده ایم .conf.

$ sudo nano /etc/nginx/snippets/elf-signed.conf

اکنون ، تنظیم کنید ssl_certificate به پرونده مرتبط و ssl_certificate_key به کلید همراهش این کار خروجی زیر را به شما می دهد:

/etc/nginx/snippets/ Self-signed.conf
ssl_certificate /et##c/ssl/certs/nginx- Selfsigned.crt؛
ssl_certificate_key /etc/ssl/private/nginx- Selfsigned.key؛

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

ایجاد یک قطعه تنظیمات برای تعریف تنظیمات SSL

مرحله بعدی ایجاد قطعه اضافی با تنظیمات رمزگذاری قوی SSL است. این ویژگی های اضافی دیگر را برای ایمن نگه داشتن سرور شما فعال می کند.

در این حالت ، ما می خواهیم نام عمومی را مطابق شکل زیر انتخاب کنیم:

$ sudo nano /etc/nginx/snippets/ssl-params.conf

برای اطمینان از تنظیم Nginx SSL ، از قالب موجود در سایت Cipherli.st استفاده می کنیم که دستورالعمل های رمزگذاری آسان برای نرم افزارهای محبوب را ارائه می دهد..

برای این آموزش تنظیمات ارائه شده از این سایت را کپی خواهیم کرد ، اما چند خط را تغییر خواهیم داد.

در این حالت ، ما برای درخواست های مختلف بالادست ، حل کننده DNS خود را درج خواهیم کرد. همچنین از خطی که مسئولیت عنوان امنیت حمل و نقل را بر عهده دارد ناراضی خواهیم بود.

جزئیات زیر را در پرونده قطعه نام خود کپی کنید ssl-params.conf.

ssl_protocols TLSv1.2؛
ssl_prefer_server_cipherson؛
ssl_dhparam /etc/nginx/dhparam.pem؛
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-SHSA54: ECDHE-RSA-SHA512:
ssl_ecdh_curve secp384r1؛ # نیاز به nginx دارد >= 1.1.0
ssl_session_timeout 10m؛
ssl_session_cache به اشتراک گذاشته شده: SSL: 10m؛
ssl_session_ticketsoff؛ # نیاز به nginx دارد >= 1.5.9
ssl_staplingon؛ # نیاز به nginx دارد >= 1.3.7
ssl_stapling_verifyon؛ # نیاز به nginx => 1.3.7
rezver8.8.8.88.8.4.4 معتبر = 300؛
rezver_timeout5s؛
# امنیت امنیتی حمل و نقل را هم اکنون غیرفعال کنید. می توانید موارد زیر را ناخوشایند کنید
# خط اگر پیامدها را بفهمید.
# add_header Strict-Transport-Security "حداکثر سن = 63072000؛ شاملSubDomains؛ پیش بارگذاری"؛
add_header X-Frame-Options DENY؛
add_header X-Content-Type- گزینه های nosniff؛
add_header X-XSS-Protection "1؛ حالت = بلوک"؛

از آنجا که ما فقط از یک گواهی خود امضا شده استفاده می کنیم ، دیگر نیازی به استفاده از ضمیمه SSL نیست. Nginx به طور خودکار Stapling را غیرفعال می کند و به درستی اجرا می کند.

اکنون ، پرونده را ذخیره و از آن خارج شوید.

پیکربندی Nginx را به Point to SSL تغییر دهید

پس از اتمام کار با قطعه ، اکنون پیکربندی Nginx را تنظیم کنید تا SSL مجاز باشد.

برای این مثال ، ما از /etc/nginx/sites-available/example.com استفاده خواهیم کرد. نام پرونده را در پیکربندی خود با نام دیگری که می خواهید استفاده کنید جایگزین کنید.

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

$ sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com.bak

پرونده خود را باز کرده و خط مناسب را مطابق شکل زیر تنظیم کنید:

$ sudo nano /etc/nginx/sites-available/example.com

خروجی مانند این را مشاهده خواهید کرد:

/etc/nginx/sites-available/example.com
سرور {
گوش دادن 80؛
گوش دادن [:]: 80؛

server_name მაგალითად.com www.example.com؛

root /var/www/example.com/html؛
index index.html index.htm index.nginx-debian.html؛

. . .
}

ممکن است بیانیه های پیکربندی مختلفی را کشف کنید که بخش هایی مانند ریشه و فهرست مطالب ممکن است ظاهر شود محل ، proxy_pass, یا سایر تنظیمات ذکر این نکته حائز اهمیت است که داشتن این دستورالعمل ها اشکالی ندارد ، فقط کافی است آن را به روز کنید گوش کنید عبارات و شامل قطعه های SSL.

در پرونده پیکربندی فعلی خود ، جلو بروید و دستورات گوش دادن را به ترافیک SSL سرور در پورت 443 و ssl به روز کنید. همچنین ، فایل های قطعه ایجاد شده در دو مرحله قبلی را نیز درج کنید:

/etc/nginx/sites-available/example.com
سرور {
443 ssl؛
گوش دادن [:]: 443 ssl؛
شامل قطعه قطعه شده / خود امضا شده است.
شامل قطعه قطعه / ssl-params.conf؛

server_name მაგალითად.com www.example.com؛

root /var/www/example.com/html؛
index index.html index.htm index.nginx-debian.html؛

. . .
}

بعد از بسته شدن براکت (}) بلوک بالا ، یک بلوک سرور دیگر را درون آن بچسبانید فایل پیکربندی:

/etc/nginx/sites-available/example.com
. . .
سرور {
listen80؛
گوش دادن [:]: 80؛

server_name მაგალითად.com www.example.com؛

Return302 https: // $ server_name $ request_uri؛
}

پیکربندی فوق علاوه بر انجام تغییر مسیرها به HTTP ، درگاه 80 را نیز گوش می دهد.

پس از اتمام کار ، پرونده را ذخیره و خارج کنید.

مرحله 3: تنظیمات تنظیمات فایروال Ufw

اگر فایروال ufw فعال باشد ، باید تنظیمات سیستم را تنظیم کنید تا امکان عبور از طریق SSL فراهم شود.

پس از اتمام نصب ، Nginx چندین پروفایل را با ufw ثبت می کند.

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

لیست برنامه sudo ufw

خروجی مانند این را مشاهده خواهید کرد:

برنامه های موجود:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

برای دیدن چه راه اندازی فعال است ، دستور زیر را اجرا کنید:

وضعیت سودو ufw


شما باید خروجی مانند این را داشته باشید تا نشان دهید سرور وب شما فقط اجازه HTTP را خواهد داد:

خروجی
وضعیت: فعال

به عمل از
—                         ——      —-
در هر کجا اجازه دهید OpenSSH
Nginx HTTP ALLOW در هر کجا
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

برای اطمینان از روان بودن ترافیک HTTPS ، به پروفایل “Nginx Full” اجازه دهید و نمایه اضافی HTTP HTTP را حذف کنید:

$ sudo ufw اجازه “Nginx Full” را می دهد
$ sudo ufw حذف اجازه “Nginx HTTP” را می دهد

خروجی شما باید به این شکل باشد:

وضعیت سودو ufw

خروجی

وضعیت: فعال

به عمل از
—                         ——      —-
در هر کجا اجازه دهید OpenSSH
Nginx کامل در همه جا
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)

مرحله 4: راه اندازی مجدد Nginx برای اعمال تغییرات

پس از انجام تنظیمات در فایروال ، سرویس Nginx را مجدداً راه اندازی کنید تا تغییرات اعمال شود.

همچنین ، بررسی کنید تا خطایی در پرونده های شما وجود نداشته باشد. برای انجام این کار ، دستور زیر را اجرا کنید:

$ sudo nginx -t

اگر همه چیز به درستی کار می کند ، باید خروجی زیر را بدست آورید:

nginx: [هشدار] "ssl_stapling" نادیده گرفته شد ، گواهی صادرکننده یافت نشد
nginx: پرونده پیکربندی /etc/nginx/nginx.confsyntax خوب است
nginx: پرونده پیکربندی /etc/nginx/nginx.conftest موفقیت آمیز است

اکنون ، nginx را دوباره شروع کنید تا تغییرات را اعمال کنید:

$ sudo systemctl nginx را شروع مجدد کنید

مرحله 5: تست سرور SSL

بعد ، تست کنید که رمزگذاری SSL کار می کند یا خیر.

در مرورگر خود ، پیشوند http: // سپس نام دامنه خود را تایپ کنید:

https: // server_domain

از آنجا که گواهینامه قبلاً توسط یک مجوز معتبر امضا نشده است ، به احتمال زیاد اخطارهایی مانند شماره زیر دریافت خواهید کرد:

هشداری را مشاهده خواهید کرد که ممکن است ظاهر شود زیرا گواهینامه SSL ایجاد شده توسط یک گواهی معتبر قابل اعتماد امضا نشده است:

نحوه پیکربندی Nginx برای استفاده از گواهی خود امضا SSL / TLS در Ubuntu 18.04 VPS یا سرور اختصاصی

با دیدن این پیام نگران نباشید ، طبیعی است. نکته مهم ویژگی رمزگذاری گواهینامه است. گزینه Advanced و پیوندی را که برای ادامه دادن به هاست دنبال می کنید ، انتخاب کنید.

نحوه پیکربندی Nginx برای استفاده از گواهی خود امضا SSL / TLS در Ubuntu 18.04 VPS یا سرور اختصاصی

شما به وب سایت هدایت می شوید. در نوار مرورگر خود ، ممکن است چیزی را ببینید که به نظر می رسد مانند قفل با یک نماد است “ایکس” بیش از آن این نشان می دهد که گواهی هنوز اعتبار ندارد و رمزنگاری هنوز در جریان است.

برای بررسی اینکه آیا در آن صورت هدایت محتوای HTTP به درستی کار می کند ، موارد زیر را تایپ کنید:

http: // server_domain_or_IP

اگر نتایج نماد قفل یکسان باشد ، بدین معنی است که تغییر مسیر به درستی کار می کند.

مرحله ششم: اشاره به تغییر مسیرهای دائمی

اگر مطمئن هستید که می خواهید فقط به ترافیک رمزگذاری شده اجازه دهید ، تغییر پیکربندی Nginx برای ایجاد تغییر مسیر دائمی مهم است..

برای باز کردن پرونده پیکربندی بلوک سرور از دستور زیر استفاده کنید:

$ sudo nano /etc/nginx/sites-available/example.com

بازگشت 302 را پیدا کرده و آن را با بازده 301 جایگزین کنید:

Return301 https: // $ server_name $ request_uri؛

تغییرات را ذخیره کنید و پرونده را ببندید

سپس ، پیکربندی خطاهای نحوی احتمالی را با استفاده از دستور زیر بررسی کنید:

$ sudo nginx -t

راه اندازی مجدد Nginx برای تکمیل تغییرات:

$ sudo systemctl nginx را شروع مجدد کنید

نتیجه

آنجا آن را دارید! شما با موفقیت Nginx را برای استفاده از گواهی SSL / TLS پیکربندی کرده اید. این یک روش مطمئن برای اجازه دادن به درخواست های مشتری و جلوگیری از دسترسی سایر طرف ها به ترافیک شما است.

3 سرویس برتر میزبانی لینوکس را ببینید

FastComet

قیمت شروع:
2.95 دلار


قابلیت اطمینان
9.7


قیمت گذاری
9.5


کاربر پسند
9.7


پشتیبانی
9.7


امکانات
9.6

بررسی ها را بخوانید

از FastComet بازدید کنید

میزبان

قیمت شروع:
$ 0.99


قابلیت اطمینان
9.3


قیمت گذاری
9.3


کاربر پسند
9.4


پشتیبانی
9.4


امکانات
9.2

بررسی ها را بخوانید

از هاستینجر بازدید کنید

ChemiCloud

قیمت شروع:
2.76 دلار


قابلیت اطمینان
10


قیمت گذاری
9.9


کاربر پسند
9.9


پشتیبانی
10


امکانات
9.9

بررسی ها را بخوانید

از ChemiCloud بازدید کنید

مقالات مرتبط با نحوه

  • چگونه یک گواهی رمزگذاری شده Let را در سرور اختصاصی Ubuntu 18.04 یا VPS خود نصب کنید
    حد واسط
  • نحوه نصب پشته LEMP (Linux، Nginx، MySQL، PHP) بر روی سرور اختصاصی Ubuntu 18.04 یا اختصاصی
    حد واسط
  • نحوه نصب Cloud Own خود روی سرور اختصاصی Ubuntu 18.04 یا VPS
    حد واسط
  • نحوه ایمن سازی phpMyAdmin در Ubuntu 18.04 VPS یا سرور اختصاصی
    حد واسط
  • نحوه راه اندازی وردپرس Multisite در اوبونتو 18.04 با Apache Web Server
    حد واسط
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me