Tეს სტატია გაგითვალისწინებთ ნაბიჯებს იმისთვის, რომ დააყენოთ SSL სერთიფიკატი Nginx-ზე და უზრუნველყოთ ავტომატური გადამისამართება HTTP://-დან HTTPS://-ზე.
1. ატვირთეთ სერთიფიკატები სერვერზე, სადაც თქვენს ვებსაიტია განთავსებული
CSR კოდის გენერირების და SSL-საქტივაციის პროცესის დასრულების შემდეგ მიიღებთ zიპ ფაილს Sectigo-ს (წინა სახელით Comodo) სერთიფიკატებით ელექტრონული ფოსტის საშუალებით. ალტერნატიულად, შეგიძლიათ დაატვირთოთ ისინი თქვენი NiceNic ანგარიშის პანელიდან.
შენიშვნა: თუ სერთიფიკატის გააქტიურებისას აირჩევთ NGINX სერვერს, მიიღებთ zip ფაილს, რომელიც შეიცავს სერთიფიკატის ფაილს, გაფართოებით '.crt', და სერთიფიკატის ავტორიტეტის (CA) bundle ფაილს, გაფართოებით '.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-ისთვის და შეცვალეთ დირექტორიები. დარწმუნდით, რომ სერვერის სახელი და ვებრუთის გზა ემთხვევა როგორც 80 პორტის სერვერის ბლოკში, ასევე 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 პორტის სერვერის ბლოკი და დაარედაქტირეთ დირექტორიები თქვენს სერვერის ბლოკთან 80 პორტისთვის (სერვერის სახელის, ვებრუთის გზისა და ყველა საჭირო მნიშვნელობის შესაბამისობით). ალტერნატიულად, შეგიძლიათ დააკოპიროთ 80 პორტის სერვერის ბლოკი, შემდეგ ჩასვით ქვემოთ და შეცვალოთ პორტი და დაამატოთ საჭირო 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

თუ მიიღებთ შეცდომებს, გადახედეთ ინსტრუქციებს და დარწმუნდით სწორობაში. ნებისმიერ შემთხვევაში, შეგიძლიათ დაგვიკავშირდეთ ჩვენი მხარდაჭერის სამსახურს.
აქ არის რჩევა: შეცდომის ჟურნალი (err?? log) მოძებნეთ ბრძანებით:
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-ზე. ამ გზით, თქვენი ვებსაიტის მომხმარებლები შეძლებენ მხოლოდ უსაფრთხო ვერსიაზე წვდომას.
ამისათვის დაგჭირდებათ დაამატოთ ერთი ხაზის ბრძანება 80 პორტის სერვერის ბლოკის კონფიგურაციის ფაილში.
რჩევები:
ხელმისაწვდომია შემდეგი ბრძანებები მოქმედი კონფიგურაციების შევსარების მორიგი შემოწმებისთვის:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
სტანდარტული კონფიგურაციის ფაილების ადგილმდებარეობებია:
RHEL-ორგანიზებულ Linux-ში: /etc/nginx/conf.d/default.conf
Debian-ორგანიზებულ Linux-ში: /etc/nginx/sites-enabled/default
შეგიძლიათ გახსნათ ფაილები და გადაამოწმოთ რომელი შეიცავს საჭირო სერვერის ბლოკს. ამისთვის დააწყვეთ:
sudo nano name_of_the_file
როცა იპოვით ფაილს, რომელიც შეიცავს სერვერის ბლოკს 80 პორტისთვის (სტანდარტული HTTP პორტი), დაამატეთ შემდეგი ხაზი:
return 301 https://$server_name$request_uri;
შენიშვნა: ზემოთ მოყვანილი გადამისამართების წესი უნდა ჩასვათ როგორც ბოლო ხაზი სერვერის ბლოკში.