Ceļā uz SSL izdoŔanas automatizāciju

Diezgan bieži nākas strādāt ar SSL sertifikātiem. Atcerēsimies sertifikāta izveides un instalÄ“Å”anas procesu (vispārējā gadÄ«jumā lielākajai daļai).

  • Atrodiet pakalpojumu sniedzēju (vietni, kur mēs varam iegādāties SSL).
  • Izveidojiet KSA.
  • NosÅ«tiet to savam pakalpojumu sniedzējam.
  • Apstipriniet domēna Ä«paÅ”umtiesÄ«bas.
  • IegÅ«stiet sertifikātu.
  • Konvertējiet sertifikātu vajadzÄ«gajā formā (pēc izvēles). Piemēram, no pem uz PKCS #12.
  • Instalējiet sertifikātu tÄ«mekļa serverÄ«.

SalÄ«dzinoÅ”i ātri, nesarežģīti un saprotami. Å Ä« opcija ir diezgan piemērota, ja mums ir ne vairāk kā desmit projekti. Ko darÄ«t, ja to ir vairāk un tiem ir vismaz trÄ«s vides? Klasiskā izstrāde - iestudējums - producÄ“Å”ana. Å ajā gadÄ«jumā ir vērts padomāt par Ŕī procesa automatizāciju. Piedāvāju nedaudz iedziļināties problēmā un rast risinājumu, kas vēl vairāk samazinātu laiku, kas tiek patērēts sertifikātu izveidei un uzturÄ“Å”anai. Rakstā bÅ«s problēmas analÄ«ze un neliels ceļvedis atkārtoÅ”anai.

Ä»aujiet man veikt rezervāciju iepriekÅ”: mÅ«su uzņēmuma galvenā specializācija ir .net un attiecÄ«gi IIS un citi ar Windows saistÄ«ti produkti. Tāpēc ACME klients un visas ar to veiktās darbÄ«bas tiks aprakstÄ«tas arÄ« no Windows lietoÅ”anas viedokļa.

Kam tas ir aktuāli un daži sākotnējie dati

Uzņēmums K, ko pārstāv autors. URL (piemēram): company.tld

Projekts X ir viens no mÅ«su projektiem, pie kura strādājot nonācu pie secinājuma, ka, strādājot ar sertifikātiem, tomēr jāvirzās uz maksimālo laika ietaupÄ«jumu. Å im projektam ir četras vides: izstrāde, testÄ“Å”ana, iestudÄ“Å”ana un ražoÅ”ana. Izstrādātājs un testÄ“Å”ana ir mÅ«su pusē, iestudÄ“Å”ana un ražoÅ”ana ir klienta pusē.

ÄŖpaÅ”a projekta iezÄ«me ir tā, ka tajā ir liels skaits moduļu, kas ir pieejami kā apakÅ”domēni.

Tas ir, mums ir Ŕāds attēls:

dev
Pārbaude
Inscenējums
ražoŔana

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
modulis1.projectX.tld

module2.projectX.dev.company.tld
module2.projectX.test.company.tld
module2.staging.projectX.tld
modulis2.projectX.tld

...
...
...
...

moduleN.projectX.dev.company.tld
moduleN.projectX.test.company.tld
moduleN.staging.projectX.tld
moduleN.projectX.tld

RažoÅ”anai tiek izmantots iegādāts aizstājējzÄ«mes sertifikāts, Å”eit nerodas jautājumi. Bet tas attiecas tikai uz apakÅ”domēna pirmo lÄ«meni. AttiecÄ«gi, ja ir sertifikāts *.projectX.tld, tad tas darbosies staging.projectX.tld, bet ne module1.staging.projectX.tld. Bet kaut kā negribas pirkt atseviŔķu.

Un tas ir balstīts tikai uz viena uzņēmuma viena projekta piemēru. Un, protams, ir vairāk nekā viens projekts.

Bieži sastopamie iemesli, kāpēc ikvienam jārisina Ŕī problēma, izskatās Ŕādi:

  • Nesen Google ierosināja samazināt SSL sertifikātu maksimālo derÄ«guma termiņu. Ar visām no tā izrietoÅ”ajām sekām.
  • Veicināt SSL izdoÅ”anas un uzturÄ“Å”anas procesu projektu un visa uzņēmuma iekŔējām vajadzÄ«bām.
  • Centralizēta sertifikātu ierakstu glabāŔana, kas daļēji atrisina domēna verifikācijas, izmantojot DNS un sekojoÅ”o automātisko atjaunoÅ”anu, problēmu, kā arÄ« atrisina klientu uzticÄ«bas jautājumu. Tomēr CNAME partnera/izpildÄ«tāja uzņēmuma serverÄ« ir uzticamāks nekā treŔās puses resursā.
  • Visbeidzot, Å”ajā gadÄ«jumā lieliski iederas frāze ā€œlabāk ir nekā navā€.

SSL nodroÅ”inātāja izvēle un sagatavoÅ”anas darbÄ«bas

Starp pieejamajām bezmaksas SSL sertifikātu opcijām tika apsvērti cloudflare un letsencrypt. Å Ä« (un dažu citu projektu) DNS mitina cloudflare, taču es neesmu viņu sertifikātu izmantoÅ”anas cienÄ«tājs. Tāpēc tika nolemts izmantot letsencrypt.
Lai izveidotu aizstājējzÄ«mes SSL sertifikātu, jums jāapstiprina domēna Ä«paÅ”umtiesÄ«bas. Å Ä« procedÅ«ra ietver DNS ieraksta (TXT vai CNAME) izveidi un pēc tam tā pārbaudi, izsniedzot sertifikātu. Linux ir utilÄ«ta - certbot, kas ļauj daļēji (vai dažiem DNS nodroÅ”inātājiem pilnÄ«bā) automatizēt Å”o procesu. Operētājsistēmai Windows no atrasts un pārbaudÄ«ts ACME klienta iespējas Es apmetos WinACME.

Un domēna ieraksts ir izveidots, pāriesim pie sertifikāta izveides:

Ceļā uz SSL izdoŔanas automatizāciju

MÅ«s interesē pēdējais secinājums, proti, pieejamās iespējas domēna Ä«paÅ”umtiesÄ«bu apstiprināŔanai aizstājējzÄ«mju sertifikāta izsniegÅ”anai:

  1. Izveidojiet DNS ierakstus manuāli (automātiskā atjaunināŔana netiek atbalstīta)
  2. DNS ierakstu izveide, izmantojot acme-dns serveri (varat lasīt vairāk par Ŕeit.
  3. DNS ierakstu izveide, izmantojot savu skriptu (līdzīgi kā certbot spraudnim cloudflare).

No pirmā acu uzmetiena treÅ”ais punkts ir diezgan piemērots, bet ko darÄ«t, ja DNS nodroÅ”inātājs neatbalsta Å”o funkcionalitāti? Bet mums ir vajadzÄ«gs vispārÄ«gs gadÄ«jums. Un vispārējais gadÄ«jums ir CNAME ieraksti, jo visi tos atbalsta. Tāpēc mēs apstājamies 2. punktā un ejam, lai konfigurētu mÅ«su ACME-DNS serveri.

ACME-DNS servera un sertifikātu izsniegŔanas procesa iestatīŔana

Piemēram, es izveidoju domēnu 2nd.pp.ua un izmantoÅ”u to turpmāk.

Obligāta prasÄ«ba Lai serveris darbotos pareizi, tā domēnam ir jāizveido NS un A ieraksti. Un pirmais nepatÄ«kamais moments, ar ko saskāros, ir tas, ka cloudflare (vismaz brÄ«vās lietoÅ”anas režīmā) neļauj vienlaicÄ«gi izveidot NS un A ierakstu vienam un tam paÅ”am saimniekdatoram. Nav tā, ka tā ir problēma, bet kopā tā ir iespējama. Atbalsts atbildēja, ka viņu panelis neļauj to darÄ«t. Nav problēmu, izveidosim divus ierakstus:

acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.

Šajā posmā mūsu saimniekam vajadzētu atrisināt 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 tas neatrisināsies, jo DNS serveris, kas to apkalpo, vēl nedarbojas.

Ieraksti ir izveidoti, mēs turpinām ACME-DNS servera iestatÄ«Å”anu un palaiÅ”anu. Tas dzÄ«vos manā ubuntu serverÄ« dokers konteineru, taču varat to palaist jebkur, kur ir pieejams golangs. Windows arÄ« ir diezgan piemērots, bet es joprojām dodu priekÅ”roku Linux serverim.

Izveidojiet nepiecieŔamos direktorijus un failus:

$ mkdir config
$ mkdir data
$ touch config/config.cfg

Izmantosim vim ar jūsu iecienītāko teksta redaktoru un ielīmēsim paraugu failā config.cfg konfigurācija.

Veiksmīgai darbībai pietiek ar vispārīgo un api sadaļu laboŔanu:

[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"
ā€¦

Turklāt, ja vēlaties, galvenajā pakalpojumu direktorijā izveidosim docker-compose failu:

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

Gatavs. JÅ«s varat to palaist.

$ docker-compose up -d

Šajā posmā saimniekam jāsāk atrisināt acme.2nd.pp.ua, un parādās 404 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

Ja tas neparādās - docker logs -f <container_name> lai palīdzētu, par laimi, žurnāli ir diezgan salasāmi.

Mēs varam sākt veidot sertifikātu. Atveriet Powershell kā administratoru un palaidiet winacme. MÅ«s interesē vēlÄ“Å”anas:

  • M: izveidot jaunu sertifikātu (pilnas opcijas)
  • 2: manuāla ievade
  • 2: [dns-01] Izveidojiet verifikācijas ierakstus ar acme-dns (https://github.com/joohoi/acme-dns)
  • Kad jautā par saiti uz ACME-DNS serveri, atbildē ievadiet izveidotā servera URL (https). acme-dns servera URL: https://acme.2nd.pp.ua

Atvērumā klients izdod ierakstu, kas jāpievieno esoÅ”ajam DNS serverim (vienreizēja 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.

Ceļā uz SSL izdoŔanas automatizāciju

Mēs izveidojam nepiecieÅ”amo ierakstu un pārliecināmies, ka tas ir izveidots pareizi:

Ceļā uz SSL izdoŔanas automatizāciju

$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.

Mēs apstiprinām, ka esam izveidojuÅ”i nepiecieÅ”amo ierakstu winacme, un turpinām sertifikāta izveides procesu:

Ceļā uz SSL izdoŔanas automatizāciju

Ir aprakstīts, kā izmantot certbot kā klientu Ŕeit.

Tas pabeidz sertifikāta izveides procesu; varat to instalēt tÄ«mekļa serverÄ« un izmantot. Ja, veidojot sertifikātu, plānotājā izveido arÄ« uzdevumu, tad turpmāk sertifikāta atjaunoÅ”anas process notiks automātiski.

Avots: www.habr.com

Pievieno komentāru