Usein joudumme työskentelemään SSL-varmenteiden kanssa. Muistakaamme varmenteen luomis- ja asennusprosessi (yleensä useimmille).
- Etsi palveluntarjoaja (sivusto, josta voimme ostaa SSL:n).
- Luo CSR.
- Lähetä se palveluntarjoajalle.
- Vahvista verkkotunnuksen omistajuus.
- Hanki todistus.
- Muunna varmenne vaadittuun muotoon (valinnainen). Esimerkiksi pemistä PKCS #12:een.
- Asenna varmenne verkkopalvelimelle.
Suhteellisen nopea, ei monimutkainen ja ymmärrettävä. Tämä vaihtoehto on varsin sopiva, jos meillä on enintään kymmenen projektia. Entä jos niitä on enemmän ja niillä on vähintään kolme ympäristöä? Klassinen kehitys - lavastus - tuotanto. Tässä tapauksessa kannattaa harkita tämän prosessin automatisointia. Ehdotan, että syvennytään ongelmaan ja löydetään ratkaisu, joka minimoi entisestään varmenteiden luomiseen ja ylläpitoon kuluvaa aikaa. Artikkeli sisältää ongelman analyysin ja pienen oppaan toistoon.
Haluan tehdä varaus etukäteen: yrityksemme pääerikoisala on .net ja vastaavasti IIS ja muut Windowsiin liittyvät tuotteet. Siksi ACME-asiakas ja kaikki sen toiminnot kuvataan myös Windowsin käytön näkökulmasta.
Kenelle tämä on olennaista ja joitain alkutietoja
Tekijän edustama yritys K. URL (esimerkiksi): company.tld
Projekti X on yksi projekteistamme, jota työskennellessäni tulin siihen tulokseen, että sertifikaattien kanssa työskentelyssä on vielä siirryttävä kohti maksimaalista ajansäästöä. Tässä projektissa on neljä ympäristöä: kehittäjä, testi, lavastus ja tuotanto. Kehittäjä ja testaus ovat meidän puolellamme, lavastus ja tuotanto ovat asiakkaan puolella.
Projektin erityispiirre on, että siinä on suuri määrä moduuleja, jotka ovat käytettävissä aliverkkotunnuksina.
Eli meillä on seuraava kuva:
dev
Testi
Näyttämöllepano
Tuotanto
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
Tuotannossa käytetään ostettua jokerimerkkisertifikaattia, täällä ei synny kysymyksiä. Mutta se kattaa vain aliverkkotunnuksen ensimmäisen tason. Vastaavasti, jos *.projectX.tld:lle on olemassa varmenne, se toimii staging.projectX.tld:lle, mutta ei module1.staging.projectX.tld:lle. Mutta jotenkin en halua ostaa erillistä.
Ja tämä perustuu vain yhden yrityksen yhden projektin esimerkkiin. Ja tietysti projekteja on enemmän kuin yksi.
Yleiset syyt, joiden vuoksi kaikki puuttuvat tähän ongelmaan, näyttävät tältä:
- Suhteellisen äskettäin . Kaikilla seurauksilla.
- Helpottaa SSL:n myöntämis- ja ylläpitoprosessia projektien ja koko yrityksen sisäisiin tarpeisiin.
- Varmennetietueiden keskitetty tallennus, joka osittain ratkaisee DNS:n avulla tapahtuvan verkkotunnuksen vahvistuksen ja myöhemmän automaattisen uusimisen ongelman sekä ratkaisee myös asiakkaan luottamusongelman. Kumppanin/esittäjäyrityksen palvelimella oleva CNAME on kuitenkin luotettavampi kuin kolmannen osapuolen resurssissa.
- Lopuksi, tässä tapauksessa lause "on parempi olla kuin ei ole" sopii täydellisesti.
SSL-palveluntarjoajan valitseminen ja valmisteluvaiheet
Ilmaisten SSL-sertifikaattien vaihtoehdoista otettiin huomioon cloudflare ja letsencrypt. Tämän (ja joidenkin muiden projektien) DNS:ää isännöi cloudflare, mutta en ole heidän sertifikaattiensa käyttämisen ystävä. Siksi päätettiin käyttää letsencryptia.
Luodaksesi jokerimerkki-SSL-varmenteen sinun on vahvistettava verkkotunnuksen omistajuus. Tämä toimenpide sisältää DNS-tietueen (TXT tai CNAME) luomisen ja sen vahvistamisen varmennetta myönnettäessä. Linux siellä on apuohjelma - , jonka avulla voit automatisoida tämän prosessin osittain (tai kokonaan joidenkin DNS-palveluntarjoajien kohdalla). Windows sama alkaen ACME-asiakasvaihtoehdot, joihin päädyin .
Ja verkkotunnuksen tietue on luotu, siirrytään varmenteen luomiseen:

Olemme kiinnostuneita viimeisestä johtopäätöksestä, nimittäin käytettävissä olevista vaihtoehdoista verkkotunnuksen omistajuuden vahvistamiseksi jokerimerkkivarmenteen myöntämistä varten:
- Luo DNS-tietueet manuaalisesti (automaattista päivitystä ei tueta)
- DNS-tietueiden luominen acme-dns-palvelimella (voit lukea lisää .
- DNS-tietueiden luominen omalla skriptilläsi (samanlainen kuin certbotin cloudflare-laajennus).
Ensi silmäyksellä kolmas kohta on varsin sopiva, mutta entä jos DNS-palveluntarjoaja ei tue tätä toimintoa? Mutta tarvitsemme yleisen tapauksen. Mutta yleinen tapaus on CNAME-tietueet, koska kaikki tukevat niitä. Siksi pysähdymme kohtaan 2 ja siirrymme ACME-DNS-palvelimemme konfigurointiin.
ACME-DNS-palvelimen määrittäminen ja varmenteen myöntämisprosessi
Loin esimerkiksi verkkotunnuksen 2nd.pp.ua ja aion käyttää sitä jatkossa.
Jotta palvelin toimisi oikein, sen toimialueelle on luotava NS- ja A-tietueet. Ja ensimmäinen epämiellyttävä hetki, jonka kohtasin, on se, että cloudflare (ainakin vapaakäyttötilassa) ei salli sinun luoda samanaikaisesti NS- ja A-tietuetta samalle isännälle. Ei sillä, että tämä olisi ongelma, mutta sidottuna se on mahdollista. Tuki vastasi, että heidän paneelinsa ei salli tätä. Ei hätää, luodaan kaksi tietuetta:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.Tässä vaiheessa isäntämme pitäisi ratkaista acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of dataMutta acme.2nd.pp.ua se ei ratkea, koska sitä palveleva DNS-palvelin ei ole vielä käynnissä.
Tietueet on luotu, siirrytään ACME-DNS-palvelimen määrittämiseen ja käynnistämiseen. Isännöin sitä osoitteessa ubuntu palvelin sisään säilössä, mutta voit ajaa sitä missä tahansa, missä golang on saatavilla. Windows Tämäkin sopii varsin hyvin, mutta pidän silti parempana Linux palvelin.
Luo tarvittavat hakemistot ja tiedostot:
$ mkdir config
$ mkdir data
$ touch config/config.cfgKäytä vimiä suosikkitekstieditorillasi ja liitä esimerkki tiedostoon config.cfg .
Onnistuneelle toiminnalle riittää yleis- ja api-osien korjaaminen:
[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"
…Haluttaessa luomme myös Docker-Compose -tiedoston pääpalveluhakemistoon:
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-dnsValmis. Voit ajaa sen.
$ docker-compose up -dTässä vaiheessa isännän pitäisi alkaa ratkaista acme.2nd.pp.ua, ja 404 tulee näkyviin 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 foundJos tämä ei näy - docker logs -f <container_name> auttamaan, onneksi lokit ovat melko luettavia.
Voimme aloittaa varmenteen luomisen. Avaa powershell järjestelmänvalvojana ja suorita winacme. Olemme kiinnostuneita vaaleista:
- M: Luo uusi varmenne (kaikki vaihtoehdot)
- 2: Manuaalinen syöttö
- 2: [dns-01] Luo vahvistustietueet acme-dns:llä ()
- Kun kysytään linkistä ACME-DNS-palvelimeen, kirjoita vastaukseen luodun palvelimen URL-osoite (https). acme-dns-palvelimen URL-osoite:
Avauksessa asiakas antaa tietueen, joka on lisättävä olemassa olevaan DNS-palvelimeen (kertaluonteinen toimenpide):
[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.
Luomme tarvittavan tietueen ja varmistamme, että se on luotu oikein:
![]()
$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.Vahvistamme, että olemme luoneet vaaditun merkinnän winacmeen, ja jatkamme varmenteen luomista:

Certbotin käyttäminen asiakkaana kuvataan .
Tämä viimeistelee varmenteen luomisen. Voit asentaa sen verkkopalvelimelle ja käyttää sitä. Jos luot varmennetta luodessasi myös tehtävän ajoittimeen, niin jatkossa varmenteen uusimisprosessi tapahtuu automaattisesti.
Lähde: will.com
