Shpesh herë na duhet të punojmë me certifikatat SSL. Le të kujtojmë procesin e krijimit dhe instalimit të certifikatës (në përgjithësi për shumicën).
Â
- Të gjeni një ofrues (faqja ku mund të blejmë SSL).
- TĂ« gjeneroni CSR.
- Të dërgoni atë ofruesit.
- Të konfirmoni zotërimin e domeneve.
- Të merrni certifikatën.
- Të konvertoni certifikatën në formën e nevojshme (opsionale). Për shembull, nga pem në PKCS #12.
- Të instaloni certifikatën në serverin web.
Â
Mjaft shpejt, jo e komplikuar dhe e qartĂ«. Ky opsion Ă«shtĂ« mjaft i pĂ«rshtatshĂ«m, nĂ«se kemi maksimum njĂ« duzinĂ« projekte. Por çfarĂ« nĂ«se ka mĂ« shumĂ« dhe tĂ« paktĂ«n tri mjedise pĂ«r secilin? Klasicja dev â staging â production. NĂ« kĂ«tĂ« rast, ia vlen tĂ« mendojmĂ« pĂ«r automatizimin e kĂ«tij procesi. Propozoj tĂ« thellohemi pak nĂ« problem dhe tĂ« gjejmĂ« njĂ« zgjidhje qĂ« nĂ« vazhdim do tĂ« minimizojĂ« shpenzimet kohore pĂ«r krijimin dhe mirĂ«mbajtjen e certifikatave. Artikulli do tĂ« pĂ«rmbajĂ« njĂ« analizĂ« tĂ« problemit dhe njĂ« udhĂ«zues tĂ« vogĂ«l pĂ«r ripĂ«rsĂ«ritje.
Â
Përpara se të filloj, dua të përmend se specializimi kryesor i kompanisë sonë është .net, dhe për rrjedhojë IIS dhe të gjitha pasojat përkatëse. Prandaj, klienti ACME dhe të gjitha veprimet për të do të përshkruhen gjithashtu nga pikëpamja e përdorimit të Windows.
Â
Për kë është kjo e rëndësishme dhe disa të dhëna fillestare
Kompania K në emër të autorit. URL (si shembull): company.tld
Â
Projekt X â njĂ« nga projektet tona, me tĂ« cilin arrita nĂ« pĂ«rfundimin se duhet tĂ« lĂ«vizim drejt maksimizimit tĂ« kursimit tĂ« kohĂ«s nĂ« punĂ«n me certifikatat. Ky projekt ka katĂ«r mjedise: dev, test, staging dhe production. Dev dhe test janĂ« nga ana jonĂ«, staging dhe production nĂ« anĂ«n e klientit.
Â
Veçoria e projektit është se ka një numër të madh modulash, të cilat janë të aksesueshëm si sub-domena.
Â
Pra, kemi imazhin e mëposhtëm:
Â
Dev
Test
Staging
Production
projectX.dev.company.tld
projectX.test.company.tld
staging.projectX.tld
projectX.tld
module1.projectX.dev.company.tld
module1.projectX.test.company.tld
module1.staging.projectX.tld
module1.projectX.tld
module2.projectX.dev.company.tld
module2.projectX.test.company.tld
module2.staging.projectX.tld
module2.projectX.tld
âŠ
âŠ
âŠ
âŠ
moduleN.projectX.dev.company.tld
moduleN.projectX.test.company.tld
moduleN.staging.projectX.tld
moduleN.projectX.tld
Â
PĂ«r production pĂ«rdoret njĂ« certifikatĂ« wildcard e blerĂ«, kĂ«tu nuk ka pyetje. Por ajo mbulon vetĂ«m nivelin e parĂ« tĂ« nĂ«n-domenit. Prandaj, nĂ«se ka njĂ« certifikatĂ« pĂ«r *.projectX.tld â atĂ«herĂ« pĂ«r staging.projectX.tld do tĂ« funksionojĂ«, por pĂ«r module1.staging.projectX.tld nuk do tĂ« funksionojĂ«. Nuk Ă«shtĂ« se dua tĂ« blej njĂ« tĂ« veçantĂ«.
Â
Dhe ky është vetëm shembulli i një projekti të një kompanie. Dhe projekti, natyrisht, nuk është i vetëm.
Â
Arsyet e përgjithshme për të angazhuar në zgjidhjen e këtij problemi duken rreth kësaj:
Â
- Kohët e fundit Google ofroi të reduktojë maksimumin e afatit të vlefshmërisë së certifikatave SSL. Me të gjitha pasojat që rrjedhin.
- Të lehtësojë procesin e lëshimit dhe mirëmbajtjes SSL për nevojat e brendshme të projekteve dhe kompanisë si tërësi.
- Ruajtja e centralizuar e regjistrave të certifikatave, e cila pjesërisht zgjidh problemin e vërtetimit të domenit përmes DNS dhe azhurnimit automatik pasues, si dhe zgjidh çështjen e besimit të klientëve. Akoma, një CNAME në serverin e kompanisë partnerit/aktorit, sesa në një burim të jashtëm.
- E, dhe përfundimisht, në këtë rast, fraza "më mirë të kem se sa të mos kem" përshtatet shkëlqyer.
Â
Zgjedhja e ofruesit të SSL dhe hapat përgatitorë
Â
Nga opsionet e disponueshme të certifikatave SSL falas, u shqyrtuan cloudflare dhe letsencrypt. DNS për këtë (dhe disa projekte të tjera) janë në cloudflare, por unë nuk jam për përdorimin e certifikatave të tyre. Prandaj, u vendos të përdoret letsencrypt.
PĂ«r tĂ« krijuar certifikatĂ«n wildcard SSL duhet tĂ« konfirmohet pronĂ«sia e domenit. Kjo procedurĂ« parashikon krijimin e njĂ« regjistri DNS (TXT ose CNAME), me verifikimin e tij pas lĂ«shimit tĂ« certifikatĂ«s. NĂ« Linux ka njĂ« utilitĂ« â certbot, e cila lejon pjesĂ«risht (ose plotĂ«sisht pĂ«r disa ofrues DNS) tĂ« automatizojĂ« kĂ«tĂ« proces. PĂ«r Windows, nga opsionet e gjetura dhe tĂ« verifikuara u ndalova te WinACME.
Â
Dhe regjistri për domenin është krijuar, kalojmë në krijimin e certifikatës:
Â

Â
Na intereson rezultati i fundit, pra â opsionet e disponueshme tĂ« konfirmimit tĂ« pronĂ«sisĂ« sĂ« domenit pĂ«r lĂ«shimin e certifikatĂ«s wildcard:
Â
- Krijimi i regjistrave DNS manualisht (azhurtime automatike nuk mbështetet)
- Krijimi i regjistrave DNS me ndihmën e serverit acme-dns (më shumë mund të lexoni këtu.
- Krijimi i regjistrave DNS me ndihmën e skriptit të vet (analog i modulet cloudflare për certbot).
Â
Në dukje të parë, pika e tretë duket e përshtatshme, por çfarë ndodh nëse ofruesi i DNS nuk e mbështet këtë funksionalitet? Na nevojitet një rast i përgjithshëm. Rasti i përgjithshëm është regjistrimi CNAME, të cilin të gjithë e mbështetin. Prandaj, ndalemi në pikën 2 dhe vazhdojmë të konfigurojmë serverin tonë ACME-DNS.
Â
Konfiguroj serverin ACME-DNS dhe procesin e lëshimit të certifikatës
Â
Për shembull, kam krijuar domenin 2nd.pp.ua, dhe më tutje do ta përdor atë.
Â
Një kërkesë e domosdoshme për funksionimin e duhur të serverit është krijimi i regjistrimeve NS dhe A për domenin e tij. Dhe momenti i parë i pakëndshëm me të cilin kam përballur është që cloudflare (të paktën në modin e përdorimit falas) nuk lejon krijimin e njëkohshëm të regjistrimeve NS dhe A për të njëjtin host. Nuk është se është një problem, por në bind është e mundur. Mbështetjeja përgjigji se paneli i tyre nuk e lejon këtë. Nuk është problem, do të krijojmë dy regjistrime:
Â
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.Â
Në këtë fazë, hosti duhet të rezolvosh acmens.2nd.pp.ua.
Â
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) byte tĂ« dhĂ«nashÂ
Por acme.2nd.pp.ua nuk do të rezolvosh, sepse serveri i DNS që e shërben akoma nuk është nisur.
Â
Regjistrimet janë krijuar, kalojmë në konfigurimin dhe aktivizimin e serverit ACME-DNS. Ai do të jetojë në serverin ubuntu tim në docker kontenier, por është e mundur ta ndizni kudo ku ka golang. Windows gjithashtu do të përshtatej, por unë preferoj server Linux.
Â
Krijojmë drejtoritë dhe skedarët e nevojshëm:
Â
$ mkdir config
$ mkdir data
$ touch config/config.cfgÂ
Do ta përdorim vim, redaktori juaj të preferuar të tekstit dhe do të fusim në config.cfg një model konfigurimit.
Â
Për funksionimin e suksesshëm mjafton të rregullojmë seksionet general dhe api:
Â
[general]
listen = "0.0.0.0:53"
protocol = "both"
domain = "acme.2nd.pp.ua"
nsname = "acmens.2nd.pp.ua"
nsadmin = "admin.2nd.pp.ua"
records =
"acme.2nd.pp.ua. A 35.237.128.147",
"acme.2nd.pp.ua. NS acmens.2nd.pp.ua.", ]
...
[api]
...
tls = "letsencrypt"
âŠÂ
Gjithashtu, nëse dëshirojmë, do të krijojmë skedarin docker-compose në drejtorinë kryesore të shërbimit:
Â
version: '3.7'
services:
acmedns:
image: joohoi/acme-dns:latest
ports:
- "443:443"
- "53:53"
- "53:53/udp"
- "80:80"
volumes:
- ./config:/etc/acme-dns:ro
- ./data:/var/lib/acme-dnsÂ
E gatshme. Mund të nisni.
Â
$ docker-compose up -dÂ
Në këtë fazë, hosti duhet të fillojë të rezolvosh acme.2nd.pp.ua, dhe të shfaqë 404 në https://acme.2nd.pp.ua
Â
$ ping acme.2nd.pp.ua
PING acme.2nd.pp.ua (35.237.128.147) 56(84) byte të dhënash.
$ curl https://acme.2nd.pp.ua
404 faqe e gjeturÂ
NĂ«se kjo nuk ka ndodhur â docker logs -f pĂ«r ndihmĂ«, mirĂ«, logjet janĂ« mjaft tĂ« lexueshme.
Â
Mund të fillojmë krijimin e certifikatës. Hapim powershell me emrin e administratorit dhe nisnim winacme. Na interesojnë zgjedhjet:
Â
- M: Krijo certifikatën e re (mundësi të plota)
- 2: Hyrje manuale
- 2: [dns-01] Krijo regjistrimet e verifikimit me acme-dns (https://github.com/joohoi/acme-dns)
- Për pyetjen për lidhjen me serverin ACME-DNS, përgjigjemi me URL-në e serverit të krijuar (https). URL e serverit acme-dns: https://acme.2nd.pp.ua
Â
Klienti jep një regjistrim që duhet të shtohet në serverin ekzistues DNS (proçedura është një herë):
Â
[INFO] Krijimi i regjistrimit të ri acme-dns për domenin 1nd.pp.ua
Domeni: 1nd.pp.ua
Regjistrimi: _acme-challenge.1nd.pp.ua
Tipi: CNAME
Përmbajtja: c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Shënim: Disa panele të kontrollit të DNS shtojnë automatikisht pikën përfundimtare.
VetĂ«m njĂ« Ă«shtĂ« e nevojshme.Â

Â
Krijojmë regjistrimin e nevojshëm dhe sigurohemi që ai është krijuar siç duhet:
Â
![]()
Â
$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.Â
Konfirmojmë që kemi krijuar regjistrimin e nevojshëm në winacme dhe vazhdojmë procesin e krijimit të certifikatës:
Â

Â
Si të përdorim certbot si klient është përshkruar këtu.
Â
Me këtë, procesi i krijimit të certifikatës ka përfunduar, mund ta instaloni në serverin e uebit dhe ta përdorni. Nëse gjatë krijimit të certifikatës krijoni gjithashtu një detyrë në planifikues, atëherë procesi i përditësimit të certifikatës do të ndodhë automatikisht.
Burimi: habr.com
