Në rrugën drejt automatizimit të lëshimit të SSL

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:

 

Në rrugën drejt automatizimit të lëshimit të SSL

 

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:

 

  1. Krijimi i regjistrimeve DNS manualisht (aktualizimi automatik nuk mbështetet)
  2. Krijimi i regjistrimeve DNS me ndihmën e serverit acme-dns (mund të lexoni më shumë këtu.
  3. 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.

 

Në rrugën drejt automatizimit të lëshimit të SSL

 

Krijojmë regjistrimin e nevojshëm dhe sigurohemi që është krijuar saktë:

 

Në rrugën drejt automatizimit të lëshimit të SSL

 

$ 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:

 

Në rrugën drejt automatizimit të lëshimit të SSL

 

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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster