Mjaft shpesh na duhet të punojmë me certifikatat SSL. Le të kujtojmë procesin e krijimit dhe instalimit të certifikatit (në përgjithësi për shumicën).
Â
- Gjeni një ofrues (sit ku mund të blejmë SSL).
- Gjeneroni CSR.
- Dërgojeni atij ofruesi.
- Konfirmoni pronësinë e domenit.
- Merrni certifikatin.
- Përpunoni certifikatën në formatin e nevojshëm (opsionale). Për shembull, nga pem në PKCS #12.
- Instaloni certifikatën në serverin web.
Â
MĂ« se shpejti, nuk Ă«shtĂ« e komplikuar dhe Ă«shtĂ« e qartĂ«. Ky opsion Ă«shtĂ« i pĂ«rshtatshĂ«m nĂ«se kemi maksimum njĂ« duzinĂ« projekte. Po nĂ«se janĂ« mĂ« shumĂ«, dhe secili ka tĂ« paktĂ«n tre mjedise? Klasiku dev â staging â production. NĂ« kĂ«tĂ« rast, duhet tĂ« mendojmĂ« pĂ«r automatizimin e kĂ«tij procesi. Propozoj tĂ« thellohemi pak nĂ« problem dhe tĂ« gjejmĂ« njĂ« zgjidhje qĂ« mĂ« vonĂ« minimalizon shpenzimet e kohĂ«s 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 pĂ«rsĂ«ritjen.
Â
Si e përpara do ta thosha: specializimi kryesor i kompanisë sonë është .net, dhe për rrjedhojë IIS dhe të gjitha përfshirjet e tjera të Windows. Prandaj, klienti ACME dhe të gjitha veprimet për të po ashtu do të përshkruhen nga perspektiva e përdorimit të Windows.
Â
Për kë është i rëndësishëm ky informacion dhe disa të dhëna fillestare
Kompania K në emër të autorit. URL (për shembull): company.tld
Â
Projekti X â njĂ« nga projektet tona, me tĂ« cilin kam arritur nĂ« pĂ«rfundimin se duhet tĂ« ecim drejt maksimizimit tĂ« kursimit tĂ« kohĂ«s kur punojmĂ« me certifikatat. Ky projekt ka katĂ«r mjedise: dev, test, staging dhe production. Dev dhe test ndodhen nĂ« anĂ«n tonĂ«, ndĂ«rsa staging dhe production janĂ« nĂ« anĂ«n e klientit.
Â
Veçantia e projektit është se ai ka një numër të madh modulesh, të cilat janë të aksesueshme si subdomain.
Â
Pra, kemi këtë pamje:
Â
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. KĂ«shtu, 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 tashmĂ« nuk do tĂ« punojĂ«. Dhe nuk Ă«shtĂ« dĂ«shirĂ« pĂ«r tĂ« blerĂ« njĂ« tĂ« veçantĂ«.
Â
Dhe kjo është vetëm për shembullin e një projekti të një kompanie. Natyrisht, projekti nuk është vetëm një.
Â
Arsyet e zakonshme për të gjithë për t'u angazhuar në zgjidhjen e këtij problemi duken më pak si kjo:
Â
- Më së fundi, kohët e fundit Google propozoi të zvogëlohet maksimumi i afatit për certifikatat SSL. Me të gjitha pasojat që rrjedhin.
- Lehtësojnë procesin e lëshimit dhe mbështetjes SSL për nevojat e brendshme të projekteve dhe kompanisë në përgjithësi.
- Depozita qendrore e regjistrave të certifikatave, e cila pjesërisht zgjidh problemin e konfirmimit të domenit përmes DNS dhe rinovimit automatik, si dhe zgjidh çështjen e besueshmërisë së klientit. Sidoqoftë, më shumë besim shkakton një CNAME në serverin e kompanisë partnerit/ekzekutuesit, sesa në një burim të jashtëm.
- Po ashtu, nĂ« kĂ«tĂ« rast fraza âmĂ« mirĂ« tĂ« kesh sesa tĂ« mos keshâ i pĂ«rshtatet mjaft mirĂ«.
Â
Zgjedhja e ofruesit të SSL dhe hapat përgatitorë
Â
Nga opsionet e disponueshme për certifikatat falas SSL u shqyrtuan cloudflare dhe letsencrypt. DNS për këtë (dhe disa projekte të tjera) është të vendoset 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 domain-it. Kjo procedurĂ« pĂ«rfshin krijimin e njĂ« regjistrimi DNS (TXT ose CNAME), me verifikimin e saj tĂ« mĂ«vonshĂ«m gjatĂ« lĂ«shimit tĂ« certifikatĂ«s. NĂ« Linux ka njĂ« utilitar â certbot, i cili lejon automatizimin pjesĂ«risht (ose plotĂ«sisht pĂ«r disa ofrues DNS) tĂ« kĂ«tij procesi. NdĂ«rsa pĂ«r Windows nga opsionet e gjetura dhe tĂ« verifikuara klientĂ«ve ACME, unĂ« ndalova nĂ« WinACME.
Â
Tani që regjistrimi për domain-in është krijuar, kalojmë në krijimin e certifikatës:
Â

Â
Na intereson rezultati i fundit, pra â opsionet e disponueshme pĂ«r konfirmimin e pronĂ«sisĂ« sĂ« domain-it pĂ«r lĂ«shimin e certifikatĂ«s wildcard:
Â
- Krijimi i regjistrimeve DNS manualisht (aktualizimi automatik nuk mbështetet)
- Krijimi i regjistrimeve DNS me ndihmën e serverit acme-dns (mund të lexoni më shumë këtu.
- Krijimi i regjistrimeve DNS me ndihmën e skriptit të vet (analog i plugin-it cloudflare për certbot).
Â
Në parë, pika e tretë duket e përshtatshme, por nëse ofruesi i DNS nuk mbështet këtë funksionalitet? Na nevojitet një rast i përgjithshëm. Dhe rasti i përgjithshëm është regjistrimet CNAME, ato mbështeten nga të gjithë. Prandaj, ndalojmë në pikën 2 dhe vazhdojmë të konfigurojmë serverin tonë ACME-DNS.
Â
Konfigurimi i serverit ACME-DNS dhe procesi i lëshimit të certifikatës
Â
Për shembull, krijova domenin 2nd.pp.ua, dhe më pas do ta përdor këtë.
Â
NjĂ« kĂ«rkesĂ« oblaguese pĂ«r funksionimin e saktĂ« 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 u pĂ«rballa â cloudflare (tĂ« paktĂ«n nĂ« mĂ«nyrĂ«n e pĂ«rdorimit falas) nuk lejon krijimin njĂ«kohĂ«sisht tĂ« regjistrimeve NS dhe A pĂ«r tĂ« njĂ«jtin host. Nuk ishte se ishte njĂ« problem, por nĂ« bind Ă«shtĂ« e mundur. MbĂ«shtetje na tha se paneli i tyre nuk e lejon kĂ«tĂ«. Nuk ka 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 acmens.2nd.pp.ua.
Â
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of dataÂ
Ndërsa acme.2nd.pp.ua nuk do të rezolvohet, pasi serveri DNS që e mbështet atë ende nuk është aktivizuar.
Â
Përshkrimet janë krijuar, duke kaluar në konfigurimin dhe nisjen e serverit ACME-DNS. Ai do të jetë në serverin ubuntu në docker kontejner, por mund ta nisni kudo ku ka golang. Windows gjithashtu do të funksionojë, por unë ende preferoj serverin Linux.
Â
Krijoni direktorët dhe skedarët e nevojshëm:
Â
$ mkdir config
$ mkdir data
$ touch config/config.cfgÂ
Do ta përdorim vim, redaktorin tuaj të preferuar të tekstit dhe do të vendosim në config.cfg një shembull konfiguracioni.
Â
Për funksionimin e suksesshëm mjafton të ndryshoni 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"
âŠÂ
Po ashtu, me dëshirë, do të krijojmë një skedë docker-compose në direktorinë 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Â
Gati. Mund ta nisni.
Â
$ docker-compose up -dÂ
Në këtë fazë duhet të fillojë të rezolvohet hosti acme.2nd.pp.ua, dhe të shfaqet 404 në https://acme.2nd.pp.ua
Â
$ ping acme.2nd.pp.ua
PING acme.2nd.pp.ua (35.237.128.147) 56(84) bytes of data.
$ curl https://acme.2nd.pp.ua
404 page not foundÂ
NĂ«se kjo nuk ka ndodhur â docker logs -f ndihmĂ«, fatmirĂ«sisht, loget janĂ« mjaft tĂ« lexueshme.
Â
Mund të fillojmë me krijimin e certifikatës. Hapim powershell si administrator dhe ekzekutojmë winacme. Na intereson zgjedhja:
Â
- M: Krijo certifikatën e re (opsionet e plota)
- 2: Hyrja manuale
- 2: [dns-01] Krijo regjistrime verifikimi me acme-dns (https://github.com/joohoi/acme-dns)
- Në pyetjen për lidhjen me serverin ACME-DNS, vendosim në përgjigje URL-në e serverit të krijuar (https). URL e serverit acme-dns: https://acme.2nd.pp.ua
Â
Në klientin e dërguar, shfaqet regjistrimi që duhet të shtohet në DNS serverin ekzistues (proçedura është një herë):
Â
[INFO] Krijimi i regjistrimit të ri acme-dns për domenin 1nd.pp.ua
Domeni: 1nd.pp.ua
Regjistri: _acme-challenge.1nd.pp.ua
Lloji: CNAME
Përmbajtja: c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Shënim: Disa panelet e kontrollit të DNS e shtojnë automatikisht pikën përfundimtare.
VetĂ«m njĂ« e tillĂ« Ă«shtĂ« e nevojshme.Â

Â
Krijojmë regjistrimin e nevojshëm dhe sigurohemi që është krijuar saktë:
Â
![]()
Â
$ 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ërdoret certbot si klient është e përshkruar këtu.
Â
Procesi i krijimit të certifikatës është përfunduar, tani mund ta instaloni atë në serverin web dhe ta përdorni. Nëse gjatë krijimit të certifikatës krijoni gjithashtu një detyrë në planifikues, procesi i përditësimit të certifikatës do të ndodhi automatikisht në të ardhmen.
Burimi: habr.com
