Tази статия ще ви преведе през стъпките за инсталиране на вашия SSL сертификат в Nginx и за настройване на автоматично препращане от HTTP:// към HTTPS://.
1. Качване на сертификатите на сървъра, където е хостван вашият уебсайт
След успешно генериране на CSR кода и активиране на SSL, ще получите zip файл със сертификатите на 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 и редактирайте директориите. Уверете се, че името на сървъра и пътят към webroot съвпадат както във сървърния блок за порт 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 (със съвпадащо име на сървъра, път към webroot и всички важни стойности). Като алтернатива, можете да копирате сървърния блок за порт 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.
Важно: За мултидомейн или 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. Така посетителите на сайта ви ще могат да достъпват само защитената версия на сайта.
За да направите това, трябва да добавите един ред във конфигурационния файл със сървърния блок за порт 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;
Забележка: Горното правило за пренасочване трябва да се въведе като последен ред в сървърния блок.