Հաճախ մենք պետք է աշխատենք SSL վկայագրերի հետ: Հիշենք վկայագրի ստեղծման և տեղադրման գործընթացը (ընդհանուր դեպքում մեծամասնության համար):
Գտեք մատակարար (կայք, որտեղ մենք կարող ենք գնել SSL):
Ստեղծեք ԿՍՊ:
Ուղարկեք այն մատակարարին:
Հաստատեք տիրույթի սեփականությունը:
Ստացեք վկայական:
Վկայագիրը փոխարկեք ցանկալի ձևին (ըստ ցանկության): Օրինակ, pem-ից մինչև PKCS #12:
Տեղադրեք վկայագիրը վեբ սերվերի վրա:
Համեմատաբար արագ, ոչ բարդ և հասկանալի: Այս տարբերակը բավականին հարմար է, եթե մենք ունենք առավելագույնը տասը նախագիծ։ Իսկ եթե դրանք ավելի շատ լինեն, և նրանք ունենան առնվազն երեք միջավայր: Դասական զարգացում - բեմադրություն - արտադրություն: Այս դեպքում արժե մտածել այս գործընթացի ավտոմատացման մասին։ Առաջարկում եմ մի փոքր խորանալ խնդրի մեջ և գտնել լուծում, որն էլ ավելի կնվազեցնի սերտիֆիկատների ստեղծման և պահպանման վրա ծախսվող ժամանակը: Հոդվածը կպարունակի խնդրի վերլուծություն և կրկնության փոքր ուղեցույց:
Նախօրոք վերապահում կանեմ՝ մեր ընկերության հիմնական մասնագիտացումը .net-ն է, համապատասխանաբար՝ IIS-ը և այլ պտուտակայինները։ Հետևաբար, ACME հաճախորդը և դրա համար նախատեսված բոլոր գործողությունները նույնպես նկարագրվելու են պատուհանների օգտագործման առումով:
Ում համար է դա տեղին և որոշ ֆոնային տվյալներ
Կ ընկերություն՝ ի դեմս հեղինակի։ URL (օրինակ՝ company.tld):
Project X-ը մեր նախագծերից մեկն է, որտեղ ես եկել եմ այն եզրակացության, որ մենք դեռ պետք է գնանք դեպի առավելագույն ժամանակի խնայողություն սերտիֆիկատների հետ աշխատելիս: Այս նախագիծն ունի չորս միջավայր՝ մշակող, թեստ, բեմականացում և արտադրություն: Dev-ը և փորձարկումը մեր կողմից են, բեմադրությունն ու արտադրությունը՝ հաճախորդի կողմից:
Ծրագրի առանձնահատկությունն այն է, որ այն ունի մեծ թվով մոդուլներ, որոնք հասանելի են որպես ենթադոմեյններ:
Արտադրության համար օգտագործվում է ձեռք բերված wildcard վկայագիր, այստեղ հարցեր չկան: Բայց այն ընդգրկում է միայն ենթադոմեյնի առաջին մակարդակը: Համապատասխանաբար, եթե կա սերտիֆիկատ *.projectX.tld-ի համար, ապա այն կաշխատի staging.projectX.tld-ի համար, բայց ոչ module1.staging.projectX.tld-ի համար: Ես չեմ ուզում առանձին գնել:
Եվ սա միայն մեկ ընկերության մեկ նախագծի օրինակով։ Եվ նախագիծը, իհարկե, միայնակ չէ.
Այս խնդրի լուծման ընդհանուր պատճառները մոտավորապես այսպիսին են.
Դյուրացնել SSL-ի թողարկման և պահպանման գործընթացը նախագծերի և ընդհանուր առմամբ ընկերության ներքին կարիքների համար:
Հավաստագրի գրառումների կենտրոնացված պահպանում, որը մասամբ լուծում է DNS-ի միջոցով տիրույթի վավերացման և հետագա ավտոմատ նորացման խնդիրը, ինչպես նաև լուծում է հաճախորդի վստահության հարցը: Այնուամենայնիվ, CNAME-ն ավելի վստահելի է գործընկեր/կատարող ընկերության սերվերում, քան երրորդ կողմի ռեսուրսը:
Դե, վերջապես, այս դեպքում «ավելի լավ է ունենալ, քան չունենալ» արտահայտությունը լիովին տեղավորվում է։
SSL մատակարարի ընտրություն և նախապատրաստական քայլեր
Անվճար SSL վկայագրերի առկա տարբերակներից դիտարկվել են cloudflare-ը և letsencrypt-ը։ Այս (և որոշ այլ նախագծերի) DNS-ը տեղակայված է cloudflare-ի կողմից, բայց ես նրանց վկայականներն օգտագործելու երկրպագու չեմ: Ուստի որոշվեց օգտագործել letsencrypt:
SSL վկայագիր ստեղծելու համար դուք պետք է հաստատեք տիրույթի սեփականությունը: Այս ընթացակարգը ներառում է որոշ DNS գրառումների (TXT կամ CNAME) ստեղծում՝ վկայական տրամադրելիս դրա հետագա ստուգմամբ: Linux-ն ունի օգտակար − վկայագիր, որը թույլ է տալիս մասամբ (կամ ամբողջությամբ որոշ DNS մատակարարների համար) ավտոմատացնել այս գործընթացը։ Windows-ի համար նույնը հայտնաբերվել և փորձարկվել է տարբերակներ ACME հաճախորդների համար, որոնց վրա ես հաստատվել եմ WinACME.
Իսկ տիրույթի գրառումը ստեղծվել է, եկեք անցնենք վկայագրի ստեղծմանը.
Մեզ հետաքրքրում է վերջին եզրակացությունը, այն է՝ տիրույթի սեփականության հաստատման առկա տարբերակները wildcard վկայագիր տրամադրելու համար.
DNS գրառումների ձեռքով ստեղծում (ավտոմատ թարմացումը չի ապահովվում)
DNS գրառումների ստեղծում՝ օգտագործելով acme-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-ը որպես հաճախորդ, նկարագրված է այստեղ.
Սա ավարտում է վկայագրի ստեղծման գործընթացը, այն կարող եք տեղադրել վեբ սերվերում և օգտագործել այն: Եթե սերտիֆիկատ ստեղծելիս դուք նաև առաջադրանք եք ստեղծում ժամանակացույցում, ապա ապագայում վկայագրի նորացման գործընթացը տեղի կունենա ավտոմատ կերպով: