Tاین مقاله شما را در مراحل نصب گواهینامه SSL خود روی Nginx و راهاندازی تغییر مسیر خودکار از HTTP:// به HTTPS:// راهنمایی میکند.
1. بارگذاری گواهینامهها روی سروری که وبسایت شما روی آن میزبانی میشود
پس از تکمیل تولید کد CSR و فعالسازی SSL، یک فایل فشرده حاوی گواهینامههای Sectigo (که قبلاً به نام Comodo شناخته میشد) از طریق ایمیل دریافت خواهید کرد. بهطور جایگزین، میتوانید آنها را از پنل حساب کاربری NiceNic خود دانلود کنید.
توجه: اگر هنگام فعالسازی گواهینامه سرور NGINX را انتخاب کنید، یک فایل زیپ شامل یک فایل گواهینامه با پسوند '.crt' و یک فایل Bundle مرکز صدور گواهینامه (CA) با پسوند '.ca-bundle' دریافت خواهید کرد.
هردو فایل را به هر روشی که ترجیح میدهید به سرور خود آپلود کنید. مثلاً با استفاده از یک کلاینت FTP.
همچنین میتوانید فایل Bundle هر گواهینامه را با دنبال کردن دستورالعملهای اینجا دانلود کنید.
2. ترکیب همه گواهینامهها در یک فایل واحد
شما باید همه گواهینامهها (???_?????.crt و ???_?????.ca-bundle) را در یک فایل '.crt' ترکیب کنید.
گواهینامه دامنه شما باید ابتدا در فایل قرار گیرد، سپس زنجیره گواهینامهها (CA Bundle).
وارد دایرکتوری شوید که فایلهای گواهینامه را در آن آپلود کردهاید. دستور زیر را برای ترکیب فایلها اجرا کنید:
$ cat ???_?????.crt ???_?????.ca-bundle >> ???_?????_chain.crt
لطفاً توجه داشته باشید اگر فایلهای گواهینامه را از حساب NiceNic خود دانلود کردهاید، بهترین دستور استفاده شده به شرح زیر است:
$ cat ???_?????.crt > ???_?????_chain.crt ; echo >> ???_?????_chain.crt ; cat ???_?????.ca-bundle >> ???_?????_chain.crt
3. ایجاد یک بلاک سرور جداگانه Nginx یا ویرایش فایل پیکربندی موجود
برای نصب گواهینامه SSL روی Nginx، باید به سرور نشان دهید که کدام فایلها استفاده شوند، یا با الف) ایجاد یک فایل پیکربندی جدید یا ب) ویرایش فایل موجود.
الف) با اضافه کردن یک فایل پیکربندی جدید برای وبسایت میتوانید اطمینان حاصل کنید که مشکلی با فایل پیکربندی جداگانه وجود ندارد. علاوه بر این، عیبیابی نصب در صورت بروز هر مشکلی در پیکربندی جدید آسانتر خواهد بود.
پیشنهاد میکنیم یک فایل پیکربندی جدید در این پوشه ایجاد کنید:
/etc/nginx/conf.d
این کار را میتوان با دستور زیر انجام داد:
sudo nano /etc/nginx/conf.d/Your_?????*-ssl.conf
که در آن Your_?????*-ssl.conf نام فایل جدید ایجاد شده است.
سپس یکی از بلاکهای سرور زیر برای پورت 443 را کپی و جایگذاری کنید و دایرکتوریها را ویرایش نمایید. اطمینان حاصل کنید که نام سرور و مسیر به وبرود در هر دو بلاک سرور برای پورت ۸۰ و پورت ۴۴۳ یکسان باشد. اگر مقادیر مهم دیگری وجود دارد که باید حفظ شوند، آنها را هم به بلاک سرور جدید منتقل کنید.
ب) ویرایش فایل پیکربندی پیشفرض وبسرور که نام آن nginx.conf است. این فایل باید در یکی از این پوشهها باشد:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
همچنین میتوانید از این دستور برای پیدا کردن آن استفاده کنید:
sudo find / -type f -iname "nginx.conf"
پس از پیدا کردن، فایل را با این دستور باز کنید:
sudo nano nginx.conf
سپس یکی از بلاکهای سرور برای پورت 443 که در زیر داده شده است را کپی و جایگذاری کنید و دایرکتوریها را مطابق با بلاک سرور پورت ۸۰ خود (با نام سرور، مسیر به وبرود و هر مقدار مهم دیگر همسان) ویرایش نمایید. بهصورت جایگزین میتوانید بلاک سرور پورت ۸۰ را کپی کرده، زیر آن جایگذاری کنید، پورت را بهروزرسانی نمایید و دستورات لازم مربوط به SSL را اضافه کنید.
بلاک سرور را انتخاب کنید:
در ادامه میتوانید یک بلاک سرور برای نسخه Nginx خود بیابید.
توجه: برای بررسی نسخه Nginx خود، این دستور را اجرا کنید:
sudo nginx -v

توجه: مقادیر نام فایلها مانند ???_?????_chain.crt را در بلاک سرور با جزئیات خودتان جایگزین کنید و مسیر آنها را با استفاده از /path/to/ اصلاح نمایید.
بلاک سرور برای نسخه Nginx 1.14 و پایینتر:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/???_?????_chain.crt;
ssl_certificate_key /path/to/???_private.key;
root /path/to/webroot;
server_name ???_?????.com;
}
توجه: در چنین پیکربندیای میتوانید چندین نام میزبان را در صورت نیاز مشخص کنید، مثلاً:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/???_?????_chain.crt;
ssl_certificate_key /path/to/???_private.key;
root /path/to/webroot;
server_name ???_?????.com www.???_?????.your;
}
بلاک سرور برای نسخه Nginx 1.15 و بالاتر:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/???_?????_chain.crt;
ssl_certificate_key /path/to/???_private.key;
root /path/to/webroot;
server_name ???_?????.com;
}
ssl_certificate باید به فایلی که قبلاً ترکیب کردهاید اشاره کند.
ssl_certificate_key باید به کلید خصوصی که همراه با کد CSR تولید شده اشاره کند.
در اینجا چند نکته برای یافتن کلید خصوصی در Nginx آورده شده است.
مهم: برای هر گواهینامه Multi-????? یا Wildcard، باید یک بلاک سرور جداگانه برای هر دامنه/سابدامنه گنجانده شده در گواهینامه اضافه کنید. اطمینان حاصل کنید که دامنه/سابدامنه مذکور همراه با مسیرهای مربوط به همان فایلهای گواهینامه در بلاک سرور مشخص شدهاند، همانطور که بالا توضیح داده شد.
پس از اضافه شدن بلاک سرور مربوطه به فایل، ویرایشها را ذخیره کنید. سپس میتوانید تغییرات ایجاد شده را با مراحل زیر دوباره بررسی کنید.
این دستور را اجرا کنید تا اطمینان حاصل شود که نحو فایل پیکربندی صحیح است:
sudo nginx -t

اگر خطایی دریافت کردید، دوباره بررسی کنید که راهنما را به درستی دنبال کردهاید. در صورتی که سوالی داشتید، با تیم پشتیبانی ما تماس بگیرید.
نکته این است: برای یافتن لاگهای خطا جهت عیبیابی، کافی است این دستور را اجرا کنید:
sudo nginx -T | grep 'err??_log'
اگر هیچیک از فایلهای مذکور وجود ندارند، فایلها کامنت شدهاند یا هیچ فایل لاگ خطایی مشخص نشده باشد، باید لاگ پیشفرض سیستم بررسی شود:
tail /var/log/nginx/err??.log -n 20
اگر سرور تست را با موفقیت نمایش داد، برای اعمال تغییرات Nginx را با این دستور راهاندازی مجدد کنید:
sudo nginx -s reload
اکنون گواهینامه SSL شما نصب شده است. میتوانید نصب را از اینجا بررسی کنید.
نکات مهم:
گاهی پس از نصب فایل SSL که با خط فرمان ترکیب شده است، ممکن است پیام خطا 'Nginx/Apache err??: 0906D066:PEM routines:PEM_read_bio:bad end line' را دریافت کنید که در این حالت راهحل در راهنمای مرجع یافت میشود.
یک مشکل رایج دیگر در این مرحله، پیام خطا 'Nginx SSL: err??:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch' است که میتوانید جزئیات بیشتر و راهحلهای احتمالی آن را در این مقاله پیدا کنید.
4. پیکربندی تغییر مسیر HTTPS
پیشنهاد میکنیم تغییر مسیر از HTTP به HTTPS را نصب کنید. به این ترتیب، بازدیدکنندگان وبسایت شما تنها قادر خواهند بود به نسخه امن سایت شما دسترسی داشته باشند.
برای این کار، باید یک خط به فایل پیکربندی در بلاک سرور پورت ۸۰ اضافه کنید.
نکات:
میتوانید از یکی از دستورات زیر برای یافتن فایلهای پیکربندی فعال فعلی استفاده کنید:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
مسیرهای پیشفرض فایل پیکربندی عبارتند از:
در سیستمعامل لینوکس مبتنی بر RHEL: /etc/nginx/conf.d/default.conf
در سیستمعامل لینوکس مبتنی بر Debian: /etc/nginx/sites-enabled/default
میتوانید فایلها را باز کنید تا ببینید کدامیک شامل بلاک سرور مورد نیاز است. برای این کار، اجرا کنید:
sudo nano name_of_the_file
وقتی فایلی که شامل بلاک سرور پورت ۸۰ (پورت پیشفرض HTTP) است را پیدا کردید، خط زیر را اضافه کنید:
return 301 https://$server_name$request_uri;
توجه: قاعده تغییر مسیر بالا باید به عنوان آخرین خط در بلاک سرور وارد شود.