Nan direksyon otomatize emisyon an nan SSL

Byen souvan nou oblije travay ak sètifika SSL. Ann sonje pwosesis pou kreye ak enstale yon sètifika (nan ka jeneral la pou pifò).

  • Jwenn yon founisè (yon sit kote nou ka achte SSL).
  • Jenere CSR.
  • Voye li bay founisè a.
  • Verifye pwopriyetè domèn.
  • Jwenn yon sètifika.
  • Konvèti sètifika a nan fòm ou vle a (si ou vle). Pa egzanp, soti nan pem rive nan PKCS #12.
  • Enstale sètifika a sou sèvè entènèt la.

Relativman vit, fasil ak konprann. Opsyon sa a se byen apwopriye si nou gen yon maksimòm de yon douzèn pwojè. E si gen plis nan yo, epi yo gen omwen twa anviwònman? Klasik dev - preparasyon - pwodiksyon. Nan ka sa a, li vo panse sou automatisation pwosesis sa a. Mwen pwopoze pou ale yon ti kras pi fon nan pwoblèm nan epi jwenn yon solisyon ki pral plis minimize tan ki pase nan kreye ak kenbe sètifika. Atik la pral genyen yon analiz de pwoblèm nan ak yon ti gid pou repete.

Mwen pral fè yon rezèvasyon davans: espesyalizasyon prensipal la nan konpayi nou an se .net, epi, kòmsadwa, IIS ak lòt moun ki gen rapò ak vis. Se poutèt sa, kliyan an ACME ak tout aksyon pou li pral tou dekri an tèm de lè l sèvi avèk fenèt yo.

Pou ki moun li enpòtan ak kèk done background

Konpayi K reprezante pa otè a. URL (pa egzanp): company.tld

Pwojè X se youn nan pwojè nou yo, kote mwen te rive nan konklizyon ke nou toujou bezwen pou avanse pou pi nan ekonomi tan maksimòm lè w ap travay ak sètifika. Pwojè sa a gen kat anviwònman: dev, tès, sèn ak pwodiksyon. Dev ak tès yo sou bò nou an, sèn ak pwodiksyon yo sou bò kliyan an.

Yon karakteristik nan pwojè a se ke li gen yon gwo kantite modil ki disponib kòm subdomains.

Sa vle di, nou gen foto sa a:

Dev
Tès
Rasanbleman
pwodiksyon

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

Pou pwodiksyon, yo itilize yon sètifika wildcard achte, pa gen okenn kesyon isit la. Men, li sèlman kouvri premye nivo nan subdomain la. An konsekans, si gen yon sètifika pou *.projectX.tld, Lè sa a, li pral travay pou staging.projectX.tld, men se pa pou module1.staging.projectX.tld. Mwen pa vle achte yon sèl separe.

Lè sa a se sèlman sou egzanp lan nan yon pwojè nan yon konpayi. Ak pwojè a, nan kou, se pa pou kont li.

Rezon jeneral yo pou abòde pwoblèm sa a sanble yon bagay tankou sa a:

  • Dènyèman Google pwopoze pou redwi peryòd maksimòm validite sètifika SSL yo. Ak tout konsekans yo.
  • Pou fasilite pwosesis pou bay ak kenbe SSL pou bezwen entèn pwojè yo ak konpayi an antye.
  • Depo santralize nan dosye sètifika, ki pasyèlman rezoud pwoblèm nan nan validation domèn lè l sèvi avèk DNS ak renouvèlman otomatik ki vin apre, epi tou li rezoud pwoblèm nan nan konfyans kliyan. Men, CNAME gen plis konfyans sou sèvè konpayi patnè/egzekitè a pase sou yon resous twazyèm pati.
  • Oke, finalman, nan ka sa a, fraz "pi bon pou genyen pase pa genyen" anfòm parfe.

Chwazi yon Founisè SSL ak Etap Preparasyon

Nan opsyon ki disponib pou sètifika SSL gratis, yo te konsidere cloudflare ak letsencrypt. DNS pou sa a (ak kèk lòt pwojè) akomode pa cloudflare, men mwen pa fanatik nan sèvi ak sètifika yo. Se poutèt sa, li te deside sèvi ak letsencrypt.
Pou kreye yon sètifika SSL wildcard, ou bezwen verifye pwopriyetè domèn nan. Pwosedi sa a enplike nan kreyasyon kèk dosye DNS (TXT oswa CNAME), ak verifikasyon ki vin apre li lè yo bay yon sètifika. Linux gen yon sèvis piblik - certbot, ki pèmèt ou pasyèlman (oswa konplètman pou kèk founisè DNS) otomatize pwosesis sa a. Pou Windows menm soti nan jwenn ak teste opsyon pou kliyan ACME mwen te etabli yo WinACME.

Epi yo te kreye dosye a pou domèn nan, ann ale nan kreye yon sètifika:

Nan direksyon otomatize emisyon an nan SSL

Nou enterese nan dènye konklizyon an, sètadi, opsyon ki disponib pou verifye pwopriyetè domèn pou bay yon sètifika wildcard:

  1. Kreye dosye DNS manyèlman (mizajou otomatik pa sipòte)
  2. Kreye dosye DNS lè l sèvi avèk sèvè acme-dns (pou plis detay, gade isit la.
  3. Kreye dosye DNS lè l sèvi avèk pwòp script ou (menm jan ak Plugin Cloudflare pou certbot).

Nan premye gade, twazyèm pwen an se byen apwopriye, men si founisè a dns pa sipòte fonksyonalite sa a? Epi nou bezwen yon ka jeneral. Ak ka jeneral la se dosye CNAME, tout moun sipòte yo. Se poutèt sa, nou sispann nan pwen 2, epi ale nan konfigirasyon sèvè ACME-DNS nou an.

Konfigirasyon sèvè ACME-DNS ak pwosesis emisyon sètifika

Pou egzanp, mwen te kreye domèn nan 2nd.pp.ua, epi mwen pral sèvi ak li nan tan kap vini an.

Egzijans obligatwa pou operasyon ki kòrèk la nan sèvè a se kreyasyon an nan dosye NS ak A pou domèn li yo. Ak premye moman dezagreyab ke mwen te rankontre se ke cloudflare (omwen nan mòd gratis) pa pèmèt ou ansanm kreye yon dosye NS ak A pou menm lame a. Se pa ke sa a se yon pwoblèm, men nan mare li posib. Sipò reponn ke panèl yo pa pèmèt fè sa. Li pa enpòtan, ann kreye de antre:

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

Nan etap sa a, nou ta dwe rezoud lame a acmens.2nd.pp.ua.

$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data

Men, acme.2nd.pp.ua p ap rezoud, depi sèvè dns ki sèvi li poko kouri.

Dosye yo te kreye, ann ale nan mete kanpe ak kòmanse sèvè ACME-DNS la. Mwen pral viv li sou sèvè ubuntu nan wokè veso, men ou ka kouri li nenpòt kote ki gen golang. Windows se byen tou, men mwen toujou prefere yon sèvè Linux.

Kreye anyè ak dosye ki nesesè yo:

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

Ann sèvi ak vim ak editè tèks ou pi renmen epi kole echantiyon an nan config.cfg konfigirasyon.

Pou travay siksè, li ase pou korije seksyon jeneral yo ak 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"
…

Epitou, opsyonèlman, kreye yon fichye Docker-konpoze nan anyè prensipal sèvis la:

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

Pare. Ou ka kouri.

$ docker-compose up -d

Nan etap sa a, lame a ta dwe kòmanse rezoud acme.2nd.pp.ua, epi parèt 404 sou 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

Si sa a pa parèt - docker logs -f <container_name> ede, bon, mòso bwa yo byen lizib.

Nou ka kòmanse kreye yon sètifika. Louvri powershell kòm administratè epi kouri winacme. Nou enterese nan eleksyon yo:

  • M: Kreye nouvo sètifika (opsyon konplè)
  • 2: D 'manyèl
  • 2: [dns-01] Kreye dosye verifikasyon ak acme-dns (https://github.com/joohoi/acme-dns)
  • Lè yo mande yo sou yon lyen ki mennen nan sèvè ACME-DNS la, antre URL sèvè kreye a (https) an repons. URL sèvè acme-dns la: https://acme.2nd.pp.ua

Kòm repons, kliyan an bay yon dosye ki bezwen ajoute nan sèvè DNS ki egziste deja (pwosedi yon sèl fwa):

[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.

Nan direksyon otomatize emisyon an nan SSL

Nou kreye antre ki nesesè yo, epi asire w ke li te kreye kòrèkteman:

Nan direksyon otomatize emisyon an nan SSL

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

Nou konfime ke nou te kreye antre obligatwa a nan winacme, epi kontinye pwosesis pou kreye yon sètifika:

Nan direksyon otomatize emisyon an nan SSL

Ki jan yo sèvi ak certbot kòm yon kliyan yo dekri isit la.

Sa a konplete pwosesis la nan kreye yon sètifika, ou ka enstale li sou yon sèvè entènèt epi sèvi ak li. Si, lè w ap kreye yon sètifika, ou menm tou ou kreye yon travay nan pwogramè a, Lè sa a, nan lavni an, pwosesis la nan aktyalizasyon sètifika a ap fèt otomatikman.

Sous: www.habr.com

Add nouvo kòmantè