Ngadto sa pag-automate sa pag-isyu sa SSL

Kasagaran kinahanglan namon nga magtrabaho kauban ang mga sertipiko sa SSL. Atong hinumdoman ang proseso sa paghimo ug pag-instalar sa usa ka sertipiko (sa kinatibuk-ang kaso alang sa kadaghanan).

  • Pangitag provider (usa ka site diin makapalit mi og SSL).
  • Paghimo og CSR.
  • Ipadala kini sa imong provider.
  • Tinoa ang pagpanag-iya sa domain.
  • Pagkuha ug sertipiko.
  • I-convert ang sertipiko sa gikinahanglan nga porma (opsyonal). Pananglitan, gikan sa pem hangtod sa PKCS #12.
  • I-install ang sertipiko sa web server.

Medyo paspas, dili komplikado ug masabtan. Kini nga kapilian haom kaayo kung kita adunay labing taas nga napulo ka mga proyekto. Unsa kaha kung adunay daghan kanila, ug sila adunay labing menos tulo ka palibot? Classic dev - staging - produksyon. Sa kini nga kaso, angay nga hunahunaon ang pag-automate niini nga proseso. Gisugyot ko nga tun-an pag-ayo ang problema ug mangita usa ka solusyon nga labi nga makapamenos sa oras nga gigugol sa paghimo ug pagmentinar sa mga sertipiko. Ang artikulo maglangkob sa usa ka pagtuki sa problema ug usa ka gamay nga giya sa pagsubli.

Tugoti ako sa paghimo og usa ka reserbasyon nga abante: ang nag-unang espesyalisasyon sa among kompanya mao ang .net, ug, sumala niana, IIS ug uban pang mga produkto nga may kalabutan sa Windows. Busa, ang kliyente sa ACME ug ang tanan nga mga aksyon alang niini ihulagway usab gikan sa punto sa panglantaw sa paggamit sa Windows.

Alang kang kinsa kini may kalabutan ug pipila ka inisyal nga datos

Kompanya K nga girepresentahan sa tagsulat. URL (pananglitan): company.tld

Ang Project X usa sa among mga proyekto, samtang nagtrabaho diin nakahinapos ako nga kinahanglan pa namon nga molihok padulong sa labing taas nga pagtipig sa oras kung nagtrabaho kauban ang mga sertipiko. Kini nga proyekto adunay upat ka palibot: dev, pagsulay, dula ug produksiyon. Ang dev ug pagsulay naa sa among kiliran, ang dula ug produksiyon naa sa bahin sa kliyente.

Ang usa ka espesyal nga bahin sa proyekto mao nga kini adunay daghang mga module nga magamit ingon mga subdomain.

Sa ato pa, aduna kitay mosunod nga hulagway:

Dev
pagsulay
Pagpahigayon
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

Alang sa produksiyon, gigamit ang usa ka gipalit nga wildcard nga sertipiko, wala’y mga pangutana nga mitungha dinhi. Apan kini naglangkob lamang sa unang lebel sa subdomain. Busa, kung adunay sertipiko alang sa *.projectX.tld, nan kini magamit alang sa staging.projectX.tld, apan dili alang sa module1.staging.projectX.tld. Apan sa usa ka paagi dili ko gusto nga mopalit usa ka lahi.

Ug kini gibase lamang sa pananglitan sa usa ka proyekto sa usa ka kompanya. Ug, siyempre, adunay labaw pa sa usa ka proyekto.

Ang kasagarang mga rason alang sa tanan sa pagsulbad niini nga isyu sama niini:

  • Bag-o lang Gisugyot sa Google ang pagkunhod sa labing taas nga panahon sa balido sa mga sertipiko sa SSL. Uban sa tanan nga mga sangputanan.
  • Pagdali sa proseso sa pag-isyu ug pagmentinar sa SSL alang sa internal nga mga panginahanglan sa mga proyekto ug sa kompaniya sa kinatibuk-an.
  • Ang sentralisadong pagtipig sa mga rekord sa sertipiko, nga partially solved sa problema sa domain verification gamit ang DNS ug sunod-sunod nga automatic renewal, ug masulbad usab ang isyu sa pagsalig sa kliyente. Bisan pa, ang usa ka CNAME sa server sa usa ka kauban/performer nga kompanya mas kasaligan kaysa sa usa ka ikatulo nga partido nga kapanguhaan.
  • Aw, sa katapusan, sa niini nga kaso ang hugpong sa mga pulong "mas maayo nga adunay kay sa wala" mohaum sa hingpit.

Pagpili og SSL Provider ug Mga Lakang sa Pangandam

Lakip sa mga magamit nga kapilian alang sa libre nga mga sertipiko sa SSL, gikonsiderar ang cloudflare ug letsencrypt. Ang DNS alang niini (ug uban pang mga proyekto) gi-host sa cloudflare, apan dili ako usa ka fan sa paggamit sa ilang mga sertipiko. Busa, nakahukom nga gamiton ang letsencrypt.
Aron makahimo og wildcard SSL certificate, kinahanglan nimo nga kumpirmahon ang pagpanag-iya sa domain. Kini nga pamaagi naglakip sa paghimo sa pipila ka DNS record (TXT o CNAME), ug unya pagmatuod niini sa diha nga nag-isyu sa usa ka sertipiko. Ang Linux adunay gamit - certbot, nga nagtugot kanimo sa partially (o sa hingpit alang sa pipila ka DNS providers) sa pag-automate niini nga proseso. Alang sa Windows gikan sa nakit-an ug gipamatud-an Mga kapilian sa kliyente sa ACME nga akong gihusay WinACME.

Ug ang rekord alang sa domain nahimo na, magpadayon kita sa paghimo usa ka sertipiko:

Ngadto sa pag-automate sa pag-isyu sa SSL

Interesado kami sa katapusan nga konklusyon, nga mao, ang magamit nga mga kapilian alang sa pagkumpirma sa pagpanag-iya sa domain alang sa pag-isyu sa usa ka wildcard nga sertipiko:

  1. Paghimo og mga rekord sa DNS nga mano-mano (dili suportado ang awtomatikong pag-update)
  2. Paghimo sa mga rekord sa DNS gamit ang acme-dns server (mahimo nimong basahon ang dugang bahin sa dinhi.
  3. Paghimo sa mga rekord sa DNS gamit ang imong kaugalingon nga script (sama sa cloudflare plugin para sa certbot).

Sa una nga pagtan-aw, ang ikatulo nga punto haom kaayo, apan unsa man kung ang DNS provider dili mosuporta niini nga gamit? Apan kinahanglan namon ang usa ka kinatibuk-ang kaso. Apan ang kinatibuk-ang kaso mao ang mga rekord sa CNAME, tungod kay ang tanan nagsuporta kanila. Busa, mihunong kami sa punto 2 ug moadto aron i-configure ang among ACME-DNS server.

Pag-set up sa ACME-DNS server ug proseso sa pag-isyu sa sertipiko

Pananglitan, gibuhat nako ang domain 2nd.pp.ua, ug gamiton kini sa umaabot.

Mandatory nga kinahanglanon Aron ang server molihok sa husto, gikinahanglan ang paghimo sa NS ug A nga mga rekord alang sa domain niini. Ug ang una nga dili maayo nga higayon nga akong nahibal-an mao nga ang cloudflare (labing menos sa libre nga mode sa paggamit) wala magtugot kanimo nga dungan nga maghimo usa ka NS ug A nga rekord alang sa parehas nga host. Dili nga kini usa ka problema, apan sa pagbugkos kini posible. Ang suporta mitubag nga ang ilang panel dili motugot sa pagbuhat niini. Walay problema, maghimo ta ug duha ka rekord:

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

Niini nga yugto, ang among host kinahanglan nga masulbad acmens.2nd.pp.ua.

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

Apan acme.2nd.pp.ua dili kini masulbad, tungod kay ang DNS server nga nagsilbi niini wala pa nagdagan.

Ang mga rekord nahimo na, nagpadayon kami sa pag-set up ug paglansad sa ACME-DNS server. Kini mabuhi sa akong ubuntu server sa docker sudlanan, apan mahimo nimo kini ipadagan bisan asa kung asa magamit ang golang. Ang Windows angay usab, apan gusto ko gihapon ang usa ka server sa Linux.

Paghimo sa gikinahanglan nga mga direktoryo ug mga file:

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

Gamiton nato ang vim sa imong paboritong text editor ug idikit ang sample sa config.cfg configuration.

Alang sa malampuson nga operasyon, igo na ang pagtul-id sa mga seksyon sa kinatibuk-an ug 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"
…

Ingon usab, kung gusto, maghimo kami usa ka docker-compose file sa panguna nga direktoryo sa serbisyo:

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

Andam. Mahimo nimo kini padaganon.

$ docker-compose up -d

Niini nga yugto ang host kinahanglan magsugod sa pagsulbad acme.2nd.pp.ua, ug usa ka 404 ang makita sa 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

Kung dili kini makita - docker logs -f <container_name> sa pagtabang, maayo na lang, ang mga troso kay mabasa.

Makasugod kami sa paghimo sa sertipiko. Ablihi ang powershell isip tigdumala ug padagana ang winacme. Interesado kami sa eleksyon:

  • M: Paghimo og bag-ong sertipiko (bug-os nga mga kapilian)
  • 2: Manwal nga input
  • 2: [dns-01] Paghimo mga rekord sa pag-verify gamit ang acme-dns (https://github.com/joohoi/acme-dns)
  • Kung gipangutana bahin sa usa ka link sa ACME-DNS server, isulud ang URL sa gibuhat nga server (https) sa tubag. URL sa acme-dns server: https://acme.2nd.pp.ua

Sa pagbukas, ang kliyente nag-isyu sa usa ka rekord nga kinahanglan idugang sa kasamtangan nga DNS server (usa ka higayon nga pamaagi):

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

Ngadto sa pag-automate sa pag-isyu sa SSL

Gihimo namo ang gikinahanglan nga rekord ug gisiguro nga kini gibuhat sa husto:

Ngadto sa pag-automate sa pag-isyu sa SSL

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

Gikumpirma namon nga nahimo namon ang gikinahanglan nga pagsulod sa winacme, ug gipadayon ang proseso sa paghimo og sertipiko:

Ngadto sa pag-automate sa pag-isyu sa SSL

Giunsa paggamit ang certbot ingon usa ka kliyente gihulagway dinhi.

Nakompleto niini ang proseso sa paghimo og sertipiko; mahimo nimo kini i-install sa web server ug gamiton kini. Kung, kung maghimo usa ka sertipiko, maghimo ka usab usa ka buluhaton sa scheduler, unya sa umaabot ang proseso sa pagbag-o sa sertipiko awtomatiko nga mahitabo.

Source: www.habr.com

Idugang sa usa ka comment