Drejt automatizimit të lëshimit të SSL

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:

 

Drejt automatizimit të lëshimit të SSL

 

Na intereson rezultati i fundit, pra — opsionet e disponueshme tĂ« konfirmimit tĂ« pronĂ«sisĂ« sĂ« domenit pĂ«r lĂ«shimin e certifikatĂ«s wildcard:

 

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

 

Drejt automatizimit të lëshimit të SSL

 

Krijojmë regjistrimin e nevojshëm dhe sigurohemi që ai është krijuar siç duhet:

 

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:

 

Drejt automatizimit të lëshimit të SSL

 

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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster