Көбүнчө биз SSL сертификаттары менен иштешибиз керек. Келгиле, күбөлүк түзүү жана орнотуу процессин эстеп көрөлү (көпчүлүк үчүн жалпы учурда).
Провайдерди табыңыз (SSL сатып ала турган сайт).
CSR түзүү.
Провайдериңизге жөнөтүңүз.
Доменге ээлик кылууну ырастаңыз.
Сертификат алыңыз.
Сертификатты керектүү формага которуңуз (милдеттүү эмес). Мисалы, пемден PKCS №12ге чейин.
Сертификатты веб серверге орнотуңуз.
Салыштырмалуу тез, татаал жана түшүнүктүү эмес. Эгерде бизде эң көп он долбоор болсо, бул вариант абдан ылайыктуу. Эгер алар көп болсо, жана алардын жок дегенде үч чөйрөсү болсочы? Классикалык иштеп чыгуу - сахналаштыруу - өндүрүш. Бул учурда, бул процессти автоматташтыруу жөнүндө ойлонуу керек. Мен көйгөйдү бир аз тереңирээк изилдеп, сертификаттарды түзүүгө жана сактоого кеткен убакытты андан ары азайта турган чечимди табууну сунуштайм. Макалада маселенин талдоо жана кайталоо үчүн чакан колдонмо камтылат.
Мага алдын ала ээлеп коюуга уруксат этиңиз: биздин компаниянын негизги адистиги - .net, жана, ошого жараша, IIS жана башка Windows менен байланышкан өнүмдөр. Ошондуктан, ACME кардары жана ал үчүн бардык иш-аракеттер Windows колдонуу көз карашынан да сүрөттөлөт.
Бул кимге тиешелүү жана кээ бир баштапкы маалыматтар
К компаниясы автор тарабынан көрсөтүлгөн. URL (мисалы): company.tld
X долбоору - бул биздин долбоорлордун бири, анын үстүндө иштеп жатып, биз дагы эле сертификаттар менен иштөөдө убакытты максималдуу үнөмдөөгө өтүшүбүз керек деген тыянакка келдим. Бул долбоордун төрт чөйрөсү бар: иштеп чыгуу, сыноо, сахналаштыруу жана өндүрүш. Dev жана тест биз тарапта, сахналаштыруу жана өндүрүш кардар тарапта.
Долбоордун өзгөчөлүгү субдомендер катары жеткиликтүү болгон көп сандагы модулдарга ээ.
Өндүрүш үчүн сатылып алынган штрих сертификаты колдонулат, бул жерде эч кандай суроолор пайда болбойт. Бирок ал субдомендин биринчи деңгээлин гана камтыйт. Демек, *.projectX.tld үчүн сертификат бар болсо, анда ал staging.projectX.tld үчүн иштейт, бирок module1.staging.projectX.tld үчүн эмес. Бирок эмнегедир өзүнчө сатып алгым келбейт.
Ал эми бул бир гана компаниянын бир долбоорунун мисалына негизделген. Анан, албетте, бир эмес, бир нече долбоор бар.
Бул маселени чечүү үчүн ар бир адам үчүн жалпы себептер төмөнкүдөй көрүнөт:
Долбоорлордун жана бүтүндөй компаниянын ички муктаждыктары үчүн SSLди чыгаруу жана колдоо процессине көмөктөшүү.
Сертификат жазууларын борборлоштурулган сактоо, бул DNS аркылуу доменди текшерүү жана андан кийин автоматтык түрдө жаңыртуу маселесин жарым-жартылай чечет, ошондой эле кардарлардын ишеним маселесин чечет. Ошентсе да өнөктөш/аткаруучу компаниянын сервериндеги CNAME үчүнчү тараптын ресурсуна караганда ишенимдүү.
Акыр-аягы, бул учурда "болбогондон көрө бар жакшы" деген сөз айкашы туура келет.
SSL камсыздоочуну тандоо жана даярдоо кадамдары
Акысыз SSL сертификаттарынын жеткиликтүү варианттарынын арасында cloudflare жана letsencrypt каралды. Бул үчүн DNS (жана башка кээ бир долбоорлор) cloudflare тарабынан жайгаштырылган, бирок мен алардын сертификаттарын колдонууну жактырбайм. Ошондуктан, letsencrypt колдонуу чечими кабыл алынды.
Жапайы SSL сертификатын түзүү үчүн, доменге ээлик кылууну ырасташыңыз керек. Бул жол-жобосу кээ бир DNS жазуусун (TXT же CNAME) түзүп, андан кийин сертификатты берүү учурунда аны текшерүүнү камтыйт. Linuxтун утилитасы бар - certbotБул процессти жарым-жартылай (же кээ бир DNS провайдерлери үчүн толугу менен) автоматташтырууга мүмкүндүк берет. Windows үчүн табылган жана текшерилген ACME кардар параметрлери мен чечтим WinACME.
Ал эми домен үчүн жазуу түзүлдү, сертификат түзүүгө өтөлү:
Биз акыркы корутундуга кызыкдарбыз, тактап айтканда, коймочный сертификатты берүү үчүн доменге ээлик кылууну ырастоо үчүн жеткиликтүү варианттар:
DNS жазууларын кол менен түзүү (автоматтык жаңыртуу колдоого алынбайт)
Acme-dns серверин колдонуу менен DNS жазууларын түзүү (сиз жөнүндө көбүрөөк окуй аласыз бул жерде.
Өзүңүздүн скриптиңизди колдонуу менен DNS жазууларын түзүү (certbot үчүн cloudflare плагинине окшош).
Бир караганда, үчүнчү пункт абдан ылайыктуу, бирок DNS провайдери бул функцияны колдоого албасачы? Бирок бизге жалпы иш керек. Жана жалпы жагдай CNAME жазуулары, анткени бардыгы аларды колдойт. Ошондуктан, биз 2-пунктта токтоп, ACME-DNS серверибизди конфигурациялоого барабыз.
ACME-DNS серверин орнотуу жана сертификат берүү процесси
Мисалы, мен 2nd.pp.ua доменин түздүм жана аны келечекте колдоном.
Милдеттүү талап Сервер туура иштеши үчүн анын доменине NS жана A жазууларын түзүү керек. Жана мен биринчи жолуккан жагымсыз учур бул cloudflare (жок дегенде акысыз колдонуу режиминде) бир эле хост үчүн бир эле учурда NS жана A рекордун түзүүгө мүмкүндүк бербейт. Бул көйгөй деп айтууга болбойт, бирок бул мүмкүн. Колдоо алардын тобу буга жол бербейт деп жооп берди. Маселе жок, келгиле, эки жазуу түзөлү:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.
Бул этапта биздин үй ээси чечиши керек acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data
Мынакей acme.2nd.pp.ua ал чечилбейт, анткени аны тейлеген DNS сервери иштей элек.
Жазуулар түзүлдү, биз ACME-DNS серверин орнотууга жана ишке киргизүүгө киришебиз. Ал менин Ubuntu серверимде жашайт ютуб контейнер, бирок сиз аны голанг бар жерде иштете аласыз. Windows да абдан ылайыктуу, бирок мен дагы эле Linux серверин жактырам.
Керектүү каталогдорду жана файлдарды түзүңүз:
$ mkdir config
$ mkdir data
$ touch config/config.cfg
Келиңиз, vimди сүйүктүү текст редакторуңуз менен колдонуп, үлгүнү config.cfgге чаптайлы тарам.
Ийгиликтүү иштөө үчүн жалпы жана api бөлүмдөрүн оңдоо жетиштүү:
ACME-DNS серверине шилтеме жөнүндө сураганда, жоопко түзүлгөн сервердин URL дарегин (https) киргизиңиз. acme-dns серверинин URL дареги: https://acme.2nd.pp.ua
Ачылышта кардар учурдагы DNS серверине кошуу керек болгон жазууну чыгарат (бир жолку процедура):
[INFO] Creating new acme-dns registration for domain 1nd.pp.ua
Domain: 1nd.pp.ua
Record: _acme-challenge.1nd.pp.ua
Type: CNAME
Content: c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Note: Some DNS control panels add the final dot automatically.
Only one is required.
Биз керектүү жазууну түзүп, анын туура түзүлгөндүгүн текшеребиз:
Биз winacmeде талап кылынган жазууну түзгөнүбүздү тастыктайбыз жана сертификат түзүү процессин улантабыз:
Кардар катары certbot кантип колдонуу керектиги сүрөттөлгөн бул жерде.
Бул сертификат түзүү процессин аяктайт; сиз аны веб-серверге орнотуп, аны колдоно аласыз. Эгер күбөлүк түзүүдө сиз пландоочуда тапшырма түзсөңүз, анда келечекте сертификатты жаңылоо процесси автоматтык түрдө ишке ашат.