Tայս հոդվածը կուղեկցի ձեզ քայլ առ քայլ՝ ձեր SSL սերտիֆիկատը Nginx-ում տեղադրելու և HTTP://-ից HTTPS:// ավտոմատ փոխանցում կարգավորելու համար։
1. Տեղադրեք սերտիֆիկատները սերվերի վրա, որտեղ հյուրընկալվում է ձեր կայքը
CSR կոդի գեներացման և SSL ակտիվացման քայլերը ավարտելուց հետո, դուք կստանաք zip ֆայլ Sectigo-ի (նախկինում հայտնի էր որպես Comodo) սերտիֆիկատներով էլեկտրոնային փոստով։ Ավելին, դուք կարող եք դրանք ներբեռնել ձեր NiceNic հաշվի պանելից։
Նշում։ Եթե սերտիֆիկատը ակտիվացնելիս ընտրեք NGINX սերվերը, դուք կստանաք zip ֆայլ, որը կզգուշացնի սերտիֆիկատային ֆայլը, որը ունի '.crt' ընդարձակումը, և Certificate Auth???ity (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 պորտի համար և խմբագրեք պանակների ուղիները։ Համոզվեք, որ սերվերի անունը և webroot պանակի ուղին համընկնում են ինչպես 80 թեփորի սերվերի բլոկում, այնպես էլ 443 պորտի բլոկում։ Եթե ունեք այլ կարևոր տվյալներ, որոնց անհրաժեշտ է պահպանել, տեղափոխեք դրանք նաև նոր ստեղծված սերվերի բլոկ։
բ) Խմբագրեք web-server-ի լռելյայն կոնֆիգուրացիոն ֆայլը, որը կոչվում է 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 պետք է ուղղվի առաջ ստեղծված համակցված սերտիֆիկատներով ֆայլին։
{{G242}}ssl_certificate_key պետք է ուղղվի սեփական գաղտնի բանալու ֆայլին, որը գեներացված է CSR կոդով։
{{G245}}Ահա մի քանի խորհուրդ, թե ինչպես գտնել գաղտնի բանալին Nginx-ում։
Թերևս կարևոր է։ Մուլտի-դոմեյնային կամ Վայլդկար սերտիֆիկատների համար անհրաժեշտ է ամեն դոմեյն/սուբդոմեյնի համար ավելացնել առանձին սերվերի բլոկ։ Համոզվեք, որ նշեք այդ դոմեյն/սուբդոմեյնը և այդ սերտիֆիկատների հետ առնչվող ֆայլերի ուղիները սերվերի բլոկում, ինչպես վերևում ցույց է տրված։
Երբ համապատասխան սերվերի բլոկը ավելացվում է ֆայլում, պահպանեք փոփոխությունները։ Հետո կարող եք կրկնակի ստուգել փոփոխությունները հետևյալ քայլերով։
Տեղադրեք հետևյալ հրամանը կոնֆիգուրացիայի սինտաքսի ստուգման համար՝
sudo nginx -t

Եթե ստանում եք սխալներ, կրկին ստուգեք, թե պատրաստեցիք արդյոք ճիշտ։ Համարձակ եղեք կապվել Supp???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 պորտի սերվերի բլոկը, ավելացրեք այս տողը՝
return 301 https://$server_name$request_uri;
Նշում։ Որպես վերջնական տող պետք է տեղադրվի այս վերափոխման կանոնը սերվերի բլոկում։