Tuag at awtomeiddio cyhoeddi SSL

Yn aml iawn mae'n rhaid i ni weithio gyda thystysgrifau SSL. Gadewch i ni gofio'r broses o greu a gosod tystysgrif (yn yr achos cyffredinol ar gyfer y rhan fwyaf).

  • Dod o hyd i ddarparwr (safle lle gallwn brynu SSL).
  • Cynhyrchu CSR.
  • Anfonwch ef at eich darparwr.
  • Gwirio perchnogaeth parth.
  • Cael tystysgrif.
  • Trosi'r dystysgrif i'r ffurflen ofynnol (dewisol). Er enghraifft, o pem i PKCS #12.
  • Gosodwch y dystysgrif ar y gweinydd gwe.

Cymharol gyflym, heb fod yn gymhleth ac yn ddealladwy. Mae'r opsiwn hwn yn eithaf addas os oes gennym ni uchafswm o ddeg prosiect. Beth os oes mwy ohonyn nhw, a bod ganddyn nhw o leiaf dri amgylchedd? Classic dev - llwyfannu - cynhyrchu. Yn yr achos hwn, mae'n werth meddwl am awtomeiddio'r broses hon. Rwy'n bwriadu ymchwilio ychydig yn ddyfnach i'r broblem a dod o hyd i ateb a fydd yn lleihau ymhellach yr amser a dreulir ar greu a chynnal tystysgrifau. Bydd yr erthygl yn cynnwys dadansoddiad o'r broblem a chanllaw bach i ailadrodd.

Gadewch imi archebu ymlaen llaw: prif arbenigedd ein cwmni yw .net, ac, yn unol Γ’ hynny, IIS a chynhyrchion eraill sy'n gysylltiedig Γ’ Windows. Felly, bydd y cleient ACME a'r holl gamau gweithredu ar ei gyfer hefyd yn cael eu disgrifio o safbwynt defnyddio Windows.

I bwy mae hyn yn berthnasol a pheth data cychwynnol

Cwmni K a gynrychiolir gan yr awdur. URL (er enghraifft): company.tld

Mae Prosiect X yn un o'n prosiectau, ac wrth weithio arno deuthum i'r casgliad bod angen i ni symud tuag at yr arbedion amser mwyaf posibl wrth weithio gyda thystysgrifau. Mae gan y prosiect hwn bedwar amgylchedd: datblygu, profi, llwyfannu a chynhyrchu. Mae datblygu a phrofi ar ein hochr ni, mae llwyfannu a chynhyrchu ar ochr y cleient.

Nodwedd arbennig o'r prosiect yw bod ganddo nifer fawr o fodiwlau sydd ar gael fel is-barthau.

Hynny yw, mae gennym y llun canlynol:

Dyfais
Prawf
Llwyfannu
cynhyrchu

prosiectX.dev.company.tld
projectX.test.company.tld
llwyfannu.prosiectX.tld
prosiectX.tld

modiwl1.projectX.dev.company.tld
modiwl1.projectX.test.company.tld
modiwl1.staging.projectX.tld
modiwl1.projectX.tld

modiwl2.projectX.dev.company.tld
modiwl2.projectX.test.company.tld
modiwl2.staging.projectX.tld
modiwl2.projectX.tld

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

modiwlN.projectX.dev.company.tld
modiwlN.projectX.test.cwmni.tld
modiwlN.staging.projectX.tld
modiwlN.projectX.tld

Ar gyfer cynhyrchu, defnyddir tystysgrif cerdyn gwyllt a brynwyd, nid oes unrhyw gwestiynau yn codi yma. Ond dim ond lefel gyntaf yr is-barth y mae'n ei gynnwys. Yn unol Γ’ hynny, os oes tystysgrif ar gyfer *.projectX.tld, yna bydd yn gweithio ar gyfer staging.projectX.tld, ond nid ar gyfer module1.staging.projectX.tld. Ond rhywsut dydw i ddim eisiau prynu un ar wahΓ’n.

Ac mae hyn yn seiliedig yn unig ar yr enghraifft o un prosiect o un cwmni. Ac, wrth gwrs, mae mwy nag un prosiect.

Mae rhesymau cyffredin i bawb fynd i'r afael Γ’'r mater hwn yn edrych fel hyn:

  • Yn ddiweddar Cynigiodd Google leihau uchafswm cyfnod dilysrwydd tystysgrifau SSL. Gyda'r holl ganlyniadau.
  • Hwyluso'r broses o gyhoeddi a chynnal SSL ar gyfer anghenion mewnol prosiectau a'r cwmni cyfan.
  • Storio cofnodion tystysgrif yn ganolog, sy'n datrys yn rhannol y broblem o ddilysu parth gan ddefnyddio DNS ac adnewyddu awtomatig dilynol, a hefyd yn datrys y mater o ymddiriedaeth cleientiaid. Eto i gyd, mae CNAME ar weinydd cwmni partner / perfformiwr yn fwy dibynadwy nag ar adnodd trydydd parti.
  • Wel, yn olaf, yn yr achos hwn mae'r ymadrodd β€œmae'n well cael na pheidio Γ’ chael” yn cyd-fynd yn berffaith.

Dewis Darparwr SSL a Chamau Paratoi

Ymhlith yr opsiynau sydd ar gael ar gyfer tystysgrifau SSL am ddim, ystyriwyd cloudflare a letsencrypt. Mae'r DNS ar gyfer hyn (a rhai prosiectau eraill) yn cael ei gynnal gan cloudflare, ond nid wyf yn gefnogwr o ddefnyddio eu tystysgrifau. Felly, penderfynwyd defnyddio letsencrypt.
I greu tystysgrif SSL cerdyn gwyllt, mae angen i chi gadarnhau perchnogaeth parth. Mae'r weithdrefn hon yn golygu creu rhywfaint o gofnod DNS (TXT neu CNAME), ac yna ei wirio wrth roi tystysgrif. Mae gan Linux gyfleustodau - certbot, sy'n eich galluogi i awtomeiddio'r broses hon yn rhannol (neu'n gyfan gwbl ar gyfer rhai darparwyr DNS). Ar gyfer Windows o wedi'i ddarganfod a'i wirio Opsiynau cleient ACME yr wyf yn setlo arnynt WinACME.

Ac mae'r cofnod ar gyfer y parth wedi'i greu, gadewch i ni symud ymlaen i greu tystysgrif:

Tuag at awtomeiddio cyhoeddi SSL

Mae gennym ddiddordeb yn y casgliad olaf, sef, yr opsiynau sydd ar gael ar gyfer cadarnhau perchnogaeth parth ar gyfer cyhoeddi tystysgrif cerdyn gwyllt:

  1. Creu cofnodion DNS Γ’ llaw (ni chefnogir diweddariad awtomatig)
  2. Creu cofnodion DNS gan ddefnyddio gweinydd acme-dns (gallwch ddarllen mwy am yma.
  3. Creu cofnodion DNS gan ddefnyddio'ch sgript eich hun (yn debyg i'r ategyn cloudflare ar gyfer certbot).

Ar yr olwg gyntaf, mae'r trydydd pwynt yn eithaf addas, ond beth os nad yw'r darparwr DNS yn cefnogi'r swyddogaeth hon? Ond mae angen achos cyffredinol arnom. A'r achos cyffredinol yw cofnodion CNAME, gan fod pawb yn eu cefnogi. Felly, rydyn ni'n stopio ar bwynt 2 ac yn mynd i ffurfweddu ein gweinydd ACME-DNS.

Sefydlu gweinydd ACME-DNS a phroses cyhoeddi tystysgrif

Er enghraifft, creais y parth 2nd.pp.ua, a byddaf yn ei ddefnyddio yn y dyfodol.

Gofyniad gorfodol Er mwyn i'r gweinydd weithio'n gywir, mae angen creu cofnodion NS ac A ar gyfer ei barth. A'r foment annymunol gyntaf i mi ddod ar ei draws yw nad yw cloudflare (o leiaf yn y modd defnydd rhydd) yn caniatΓ‘u ichi greu cofnod NS ac A ar yr un pryd ar gyfer yr un gwesteiwr. Nid bod hyn yn broblem, ond mewn rhwymiad mae'n bosibl. Atebodd y gefnogaeth nad yw eu panel yn caniatΓ‘u gwneud hyn. Dim problem, gadewch i ni greu dwy record:

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

Ar y cam hwn, dylai ein gwesteiwr ddatrys acmens.2nd.pp.ua.

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

Ond acme.2nd.pp.ua ni fydd yn datrys, gan nad yw'r gweinydd DNS sy'n ei wasanaethu yn rhedeg eto.

Mae'r cofnodion wedi'u creu, rydym yn symud ymlaen i sefydlu a lansio gweinydd ACME-DNS. Bydd yn byw ar fy weinydd ubuntu yn docwr cynhwysydd, ond gallwch ei redeg yn unrhyw le lle mae golang ar gael. Mae Windows hefyd yn eithaf addas, ond mae'n well gen i weinydd Linux o hyd.

Creu'r cyfeiriaduron a'r ffeiliau angenrheidiol:

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

Gadewch i ni ddefnyddio vim gyda'ch hoff olygydd testun a gludo'r sampl i config.cfg cyfluniad.

Er mwyn gweithredu'n llwyddiannus, mae'n ddigon cywiro'r adrannau cyffredinol ac 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"
…

Hefyd, os dymunir, byddwn yn creu ffeil cyfansoddi doc yn y prif gyfeiriadur gwasanaeth:

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

Yn barod. Gallwch chi ei redeg.

$ docker-compose up -d

Ar yr adeg hon dylai'r gwesteiwr ddechrau datrys acme.2nd.pp.ua, ac mae 404 yn ymddangos ar 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

Os nad yw hyn yn ymddangos - docker logs -f <container_name> i helpu, yn ffodus, mae'r logiau yn eithaf darllenadwy.

Gallwn ddechrau creu'r dystysgrif. Agor powershell fel gweinyddwr a rhedeg winacme. Mae gennym ddiddordeb yn yr etholiadau:

  • M: Creu tystysgrif newydd (opsiynau llawn)
  • 2: Mewnbwn Γ’ llaw
  • 2: [dns-01] Creu cofnodion dilysu gydag acme-dns (https://github.com/joohoi/acme-dns)
  • Pan ofynnwyd am ddolen i'r gweinydd ACME-DNS, rhowch URL y gweinydd a grΓ«wyd (https) yn yr ateb. URL y gweinydd acme-dns: https://acme.2nd.pp.ua

Yn yr agoriad, mae'r cleient yn cyhoeddi cofnod y mae angen ei ychwanegu at y gweinydd DNS presennol (gweithdrefn un-amser):

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

Tuag at awtomeiddio cyhoeddi SSL

Rydyn ni'n creu'r cofnod angenrheidiol ac yn sicrhau ei fod wedi'i greu'n gywir:

Tuag at awtomeiddio cyhoeddi SSL

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

Rydym yn cadarnhau ein bod wedi creu'r cofnod gofynnol yn winacme, ac yn parhau Γ’'r broses o greu tystysgrif:

Tuag at awtomeiddio cyhoeddi SSL

Disgrifir sut i ddefnyddio certbot fel cleient yma.

Mae hyn yn cwblhau'r broses o greu tystysgrif; gallwch ei gosod ar y gweinydd gwe a'i defnyddio. Os, wrth greu tystysgrif, byddwch hefyd yn creu tasg yn y trefnydd, yna yn y dyfodol bydd y broses adnewyddu tystysgrif yn digwydd yn awtomatig.

Ffynhonnell: hab.com

Ychwanegu sylw