Ber bi otomatkirina belavkirina SSL

Pir caran divê em bi sertîfîkayên SSL re bixebitin. Ka em pêvajoya çêkirin û sazkirina sertîfîkayekê (di rewşa gelemperî de ji bo piran) bi bîr bînin.

  • Pêşkêşkerek (malperek ku em dikarin SSL bikirin) bibînin.
  • CSR çêbikin.
  • Wê ji pêşkêşkarê xwe re bişînin.
  • Xwedîtiya domainê verast bikin.
  • Sertîfîkayek bistînin.
  • Sertîfîkayê veguherînin forma pêwîst (vebijarkî). Mînakî, ji pem heya PKCS #12.
  • Sertîfîkayê li ser servera malperê saz bikin.

Bi nisbet bilez, ne tevlihev û têgihîştî. Ger herî zêde deh projeyên me hebin ev vebijark pir maqûl e. Ger ji wan zêdetir hebin, û bi kêmanî sê hawîrdorên wan hebin? Klasîk dev - sehnê - hilberîn. Di vê rewşê de, hêja ye ku meriv li ser otomatîkkirina vê pêvajoyê bifikirin. Ez pêşniyar dikim ku di pirsgirêkê de piçek kûrtir bigerim û çareseriyek bibînin ku dê wextê ku ji bo afirandin û domandina sertîfîkayan bêtir kêm bike. Gotar dê analîzek pirsgirêkê û rêbernameyek piçûk a dubarekirinê hebe.

Bihêle ez pêşwext veqetandinê bikim: pisporiya sereke ya pargîdaniya me .net e, û li gorî vê yekê, IIS û hilberên din ên têkildar ên Windows-ê ye. Ji ber vê yekê, muwekîlê ACME û hemî çalakiyên ji bo wê jî dê ji hêla karanîna Windows-ê ve were vegotin.

Ji bo kê ev têkildar e û hin daneyên destpêkê

Pargîdaniya K ji hêla nivîskar ve tê temsîl kirin. URL (mînak): company.tld

Projeya X yek ji wan projeyên me ye, dema ku ez li ser dixebitim ku ez gihîştim wê encamê ku em hîn jî hewce ne ku dema ku bi sertîfîkayan re dixebitin ber bi teserûfa wextê herî zêde ve biçin. Ev proje çar hawîrdor hene: dev, ceribandin, qonax û hilberîn. Dev û ceribandin li ser milê me ne, sehnekirin û hilberîn li aliyê xerîdar e.

Taybetmendiyek taybetî ya projeyê ev e ku hejmareke mezin ji modulên wê hene ku wekî subdomain hene.

Ango wêneyê me yê jêrîn heye:

dev
îmtîhan
Standing
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

Ji bo hilberandinê, sertîfîkayek qertafek kirî tê bikar anîn, li vir pirs dernakeve. Lê ew tenê asta yekem a subdomain vedigire. Li gorî vê, heke ji bo *.projectX.tld sertîfîkayek hebe, wê hingê ew ê ji bo staging.projectX.tld bixebite, lê ne ji bo module1.staging.projectX.tld. Lê bi awayekî ez naxwazim yekî cuda bikirim.

Û ev tenê li ser nimûneya yek projeya yek pargîdaniyê ye. Û, bê guman, ji yekê zêdetir proje hene.

Sedemên hevpar ên ku her kes vê pirsgirêkê çareser dike tiştek wiha xuya dike:

  • Berî demekê Google pêşniyar kir ku heyama derbasdariya herî zêde ya sertîfîkayên SSL kêm bike. Bi hemû encamên.
  • Pêvajoya derxistin û domandina SSL-ê ji bo hewcedariyên navxweyî yên projeyan û pargîdanî bi tevahî hêsan bikin.
  • Hilberîna navendîkirî ya tomarên sertîfîkayê, ku bi qismî pirsgirêka verastkirina domainê bi karanîna DNS û dûv re nûvekirina otomatîkî çareser dike, û di heman demê de pirsgirêka pêbaweriya xerîdar jî çareser dike. Dîsa jî, CNAME li ser servera pargîdaniyek hevkar / performer ji çavkaniyek sêyemîn pêbawertir e.
  • Welê, di dawiyê de, di vê rewşê de gotina "hebûn ji tunebûnê çêtir e" bi tevahî li hev dike.

Hilbijartina Pêşkêşkarek SSL û Pêngavên Amadekar

Di nav vebijarkên berdest de ji bo sertîfîkayên SSL-ya belaş, cloudflare û letsencrypt hatin hesibandin. DNS ji bo vê (û hin projeyên din) ji hêla cloudflare ve tê mêvandar kirin, lê ez ne hezkiriyê karanîna sertîfîkayên wan im. Ji ber vê yekê, biryar hate girtin ku letsencrypt bikar bînin.
Ji bo afirandina sertîfîkayek SSL-ê ya wildcard, hûn hewce ne ku xwediyê domainê piştrast bikin. Ev pêvajo di nav xwe de çêkirina hin tomarek DNS (TXT an CNAME) digire, û dûv re dema ku sertîfîkayek dide wê verast bike. Linux xwedan amûrek heye - certbot, ku dihêle hûn bi qismî (an jî bi tevahî ji bo hin pêşkêşkerên DNS) vê pêvajoyê otomatîk bikin. Ji bo Windows ji dîtin û verast kirin Vebijarkên xerîdar ACME ez li ser rûniştim WinACME.

Û qeyda ji bo domainê hate afirandin, em biçin ser çêkirina sertîfîkayekê:

Ber bi otomatkirina belavkirina SSL

Em eleqedar in encama paşîn, ango vebijarkên berdest ên ji bo pejirandina xwedan domainê ji bo weşandina sertîfîkayek çolê:

  1. Tomarên DNS-ê bi destan biafirînin (nûvekirina otomatîk nayê piştgirî kirin)
  2. Afirandina tomarên DNS bi karanîna servera acme-dns (hûn dikarin li ser bêtir bixwînin vir.
  3. Afirandina tomarên DNS-ê bi karanîna skrîpta xwe (wek pêveka cloudflare ya ji bo certbot).

Di nihêrîna pêşîn de, xala sêyemîn pir maqûl e, lê heke pêşkêşkarê DNS vê fonksiyonê piştgirî neke? Lê pêwîstiya me bi dozeke giştî heye. Û doza giştî tomarên CNAME ye, ji ber ku her kes wan piştgirî dike. Ji ber vê yekê, em li xala 2 disekinin û diçin ku servera xweya ACME-DNS mîheng bikin.

Sazkirina servera ACME-DNS û pêvajoya derxistina sertîfîkayê

Mînakî, min domaina 2nd.pp.ua afirand, û dê di pêşerojê de wê bikar bînim.

Pêdiviya mecbûrî Ji bo ku server rast bixebite, pêdivî ye ku ji bo domaina wê tomarên NS û A biafirînin. Û yekem gava ne xweş a ku ez pê re rû bi rû bûm ev e ku cloudflare (kêm nebe di moda karanîna belaş de) rê nade ku hûn bi hevdemî ji bo heman mêvandar tomarek NS û A biafirînin. Ne ku ev pirsgirêkek e, lê di girêdanê de ew gengaz e. Piştgiriyê bersiv da ku panela wan destûrê nade vê yekê. Pirsgirêk nîne, em du tomar biafirînin:

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

Di vê qonaxê de, divê mêvandarê me çareser bike acmens.2nd.pp.ua.

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

acme.2nd.pp.ua ew ê çareser nebe, ji ber ku servera DNS-ê ya ku jê re xizmet dike hîn naxebite.

Qeyd hatine afirandin, em dest bi sazkirin û destpêkirina servera ACME-DNS dikin. Ew ê li ser servera min a ubuntu tê de bijî docker konteynir, lê hûn dikarin wê li her deverê ku golang lê heye bimeşînin. Windows jî pir maqûl e, lê ez dîsa jî serverek Linux tercîh dikim.

Derhêner û pelên pêwîst biafirînin:

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

Ka em vim-ê bi edîtorê nivîsa xweya bijare re bikar bînin û nimûneyê li config.cfg bixin veavakirina.

Ji bo operasyona serketî, bes e ku hûn beşên gelemperî û api rast bikin:

[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"
…

Di heman demê de, heke bixwaze, em ê di pelrêça karûbarê sereke de pelek docker-compose biafirînin:

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

Amade. Hûn dikarin wê bimeşînin.

$ docker-compose up -d

Di vê qonaxê de divê mêvandar dest bi çareseriyê bike acme.2nd.pp.ua, û 404 li ser xuya dike 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

Ger ev xuya nebe - docker logs -f <container_name> ji bo alîkariyê, bi bextewarî, têketin pir têne xwendin.

Em dikarin dest bi çêkirina sertîfîkayê bikin. Powershell wekî rêveber vekin û winacme bimeşînin. Em bi hilbijartinan re eleqedar in:

  • M: Sertîfîkaya nû biafirîne (vebijarkên tevahî)
  • 2: Ketina bi destan
  • 2: [dns-01] Bi acme-dns re tomarên verastkirinê biafirînin (https://github.com/joohoi/acme-dns)
  • Gava ku li ser girêdanek ji servera ACME-DNS re tê pirsîn, di bersivê de URL-ya servera hatî afirandin (https) têkevin. URL-ya servera acme-dns: https://acme.2nd.pp.ua

Di vebûnê de, xerîdar tomarek ku pêdivî ye ku li servera DNS ya heyî were zêdekirin (pêvajoya yek-car) derdixe:

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

Ber bi otomatkirina belavkirina SSL

Em qeyda pêwîst diafirînin û pê ewle dibin ku ew rast hatiye afirandin:

Ber bi otomatkirina belavkirina SSL

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

Em piştrast dikin ku me navnîşa pêwîst di winacme de çêkiriye, û pêvajoya afirandina sertîfîkayê berdewam dike:

Ber bi otomatkirina belavkirina SSL

Meriv çawa certbot wekî xerîdar bikar tîne tête diyar kirin vir.

Ev pêvajoya afirandina sertîfîkayekê temam dike; hûn dikarin wê li ser servera malperê saz bikin û wê bikar bînin. Ger, dema afirandina sertîfîkayekê, hûn di nexşerê de jî peywirek biafirînin, wê hingê di pêşerojê de pêvajoya nûvekirina sertîfîkayê bixweber çêdibe.

Source: www.habr.com

Add a comment