Gana dažnai tenka dirbti su SSL sertifikatais. Prisiminkime sertifikato kūrimo ir įdiegimo procesą (bendruoju atveju daugumai).
Raskite teikėją (svetainę, kurioje galime nusipirkti SSL).
Sukurti CSR.
Nusiųskite jį savo paslaugų teikėjui.
Patvirtinkite domeno nuosavybės teisę.
Gaukite sertifikatą.
Konvertuokite sertifikatą į reikiamą formą (neprivaloma). Pavyzdžiui, iš pem į PKCS Nr. 12.
Įdiekite sertifikatą žiniatinklio serveryje.
Palyginti greitai, nesudėtinga ir suprantama. Ši parinktis yra gana tinkama, jei turime daugiausia dešimt projektų. Ką daryti, jei jų yra daugiau ir jie turi bent tris aplinkas? Klasikinis kūrėjas - pastatymas - gamyba. Tokiu atveju verta pagalvoti apie šio proceso automatizavimą. Siūlau šiek tiek pasigilinti į problemą ir rasti sprendimą, kuris dar labiau sumažintų laiką, skiriamą sertifikatų kūrimui ir priežiūrai. Straipsnyje bus problemos analizė ir nedidelis pakartojimo vadovas.
Leiskite rezervuoti iš anksto: pagrindinė mūsų įmonės specializacija yra .net ir atitinkamai IIS bei kiti su Windows susiję produktai. Todėl ACME klientas ir visi su juo susiję veiksmai taip pat bus aprašyti „Windows“ naudojimo požiūriu.
Kam tai aktualu ir kai kurie pradiniai duomenys
Įmonė K, atstovaujama autoriaus. URL (pavyzdžiui): company.tld
Projektas X yra vienas iš mūsų projektų, prie kurio dirbdamas priėjau išvados, kad dirbant su sertifikatais dar reikia judėti link maksimalaus laiko taupymo. Šiame projekte yra keturios aplinkos: kūrimo, testavimo, sustojimo ir gamybos. Kūrėjas ir bandymas yra mūsų pusėje, pastatymas ir gamyba yra kliento pusėje.
Ypatinga projekto savybė yra ta, kad jame yra daug modulių, kurie yra prieinami kaip subdomenai.
Gamybai naudojamas įsigytas pakaitos pažymėjimas, čia klausimų nekyla. Bet tai apima tik pirmąjį padomenio lygį. Atitinkamai, jei yra *.projectX.tld sertifikatas, jis veiks su staging.projectX.tld, bet ne su module1.staging.projectX.tld. Bet kažkaip nenoriu pirkti atskiro.
Ir tai tik remiantis vienos įmonės vieno projekto pavyzdžiu. Ir, žinoma, projektų yra ne vienas.
Dažnos priežastys, dėl kurių kiekvienas kreipiasi į šią problemą, atrodo maždaug taip:
Palengvinti SSL išdavimo ir priežiūros procesą vidiniams projektų ir visos įmonės poreikiams.
Centralizuotas sertifikatų įrašų saugojimas, kuris iš dalies išsprendžia domeno tikrinimo naudojant DNS ir vėlesnio automatinio atnaujinimo problemą, taip pat išsprendžia klientų pasitikėjimo problemą. Vis dėlto CNAME partnerio / atlikėjo įmonės serveryje yra patikimesnis nei trečiosios šalies šaltinyje.
Na, pagaliau, šiuo atveju puikiai tinka frazė „geriau turėti nei neturėti“.
SSL teikėjo pasirinkimas ir parengiamieji veiksmai
Tarp galimų nemokamų SSL sertifikatų parinkčių buvo apsvarstyti „Cloudflare“ ir „letsencrypt“. Šio (ir kai kurių kitų projektų) DNS priegloba yra „cloudflare“, bet aš nemėgstu naudoti jų sertifikatų. Todėl buvo nuspręsta naudoti letsencrypt.
Norėdami sukurti pakaitos simbolių SSL sertifikatą, turite patvirtinti domeno nuosavybės teisę. Ši procedūra apima tam tikro DNS įrašo (TXT arba CNAME) sukūrimą ir jo patikrinimą išduodant sertifikatą. Linux turi naudingumą - certbotas, kuri leidžia iš dalies (arba visiškai kai kuriems DNS teikėjams) automatizuoti šį procesą. „Windows“ nuo rasta ir patikrinta ACME kliento parinktys Aš apsisprendžiau WinACME.
Ir domeno įrašas sukurtas, pereikime prie sertifikato kūrimo:
Mus domina paskutinė išvada, ty galimos galimybės patvirtinti domeno nuosavybę išduodant pakaitos simbolio sertifikatą:
Kurkite DNS įrašus rankiniu būdu (automatinis naujinimas nepalaikomas)
DNS įrašų kūrimas naudojant acme-dns serverį (daugiau galite perskaityti apie čia.
DNS įrašų kūrimas naudojant savo scenarijų (panašiai kaip certbot „Cloudflare“ papildinys).
Iš pirmo žvilgsnio trečias punktas yra gana tinkamas, bet ką daryti, jei DNS teikėjas nepalaiko šios funkcijos? Bet mums reikia bendro atvejo. Ir bendras atvejis yra CNAME įrašai, nes visi juos palaiko. Todėl sustojame 2 taške ir einame konfigūruoti savo ACME-DNS serverį.
ACME-DNS serverio ir sertifikatų išdavimo proceso nustatymas
Pavyzdžiui, sukūriau domeną 2nd.pp.ua ir naudosiu jį ateityje.
Privalomas reikalavimas Kad serveris veiktų tinkamai, jo domenui būtina sukurti NS ir A įrašus. Ir pirmasis nemalonus momentas, su kuriuo susidūriau, yra tai, kad „Cloudflare“ (bent jau laisvo naudojimo režimu) neleidžia vienu metu sukurti NS ir A įrašo tam pačiam kompiuteriui. Ne tai, kad tai yra problema, bet tai įmanoma. Parama atsakė, kad jų kolegija neleidžia to daryti. Jokių problemų, sukurkime du įrašus:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.
Šiame etape mūsų šeimininkas turėtų išspręsti acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data
Bet acme.2nd.pp.ua jis neišsispręs, nes jį aptarnaujantis DNS serveris dar neveikia.
Įrašai sukurti, pereiname prie ACME-DNS serverio nustatymo ir paleidimo. Jis veiks mano ubuntu serveryje dokininkas konteinerį, bet galite jį paleisti bet kur, kur yra golangas. Windows taip pat visai tinka, bet man vis tiek labiau patinka Linux serveris.
Sukurkite reikiamus katalogus ir failus:
$ mkdir config
$ mkdir data
$ touch config/config.cfg
Naudokime vim su mėgstama teksto rengykle ir įklijuokite pavyzdį į config.cfg konfigūracija.
Sėkmingam darbui pakanka pataisyti bendrąsias ir api skyrius:
Paklausus apie nuorodą į ACME-DNS serverį, atsakyme įveskite sukurto serverio URL adresą (https). acme-dns serverio URL: https://acme.2nd.pp.ua
Atidaryme klientas išduoda įrašą, kurį reikia pridėti prie esamo DNS serverio (vienkartinė procedūra):
[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.
Sukuriame reikiamą įrašą ir įsitikiname, kad jis buvo sukurtas teisingai:
Taip baigiamas sertifikato kūrimo procesas; galite jį įdiegti žiniatinklio serveryje ir naudoti. Jei kurdami sertifikatą planuoklyje sukursite ir užduotį, tai ateityje sertifikato atnaujinimo procesas vyks automatiškai.