Gyakran SSL-tanúsítványokkal kell dolgoznunk. Emlékezzünk a tanúsítvány létrehozásának és telepítésének folyamatára (általános esetben a legtöbb esetében).
Keress egy szolgáltatót (olyan oldalt, ahol SSL-t vásárolhatunk).
CSR generálása.
Küldje el a szolgáltatónak.
Ellenőrizze a domain tulajdonjogát.
Szerezzen bizonyítványt.
Alakítsa át a tanúsítványt a kívánt formára (opcionális). Például a pemtől a PKCS #12-ig.
Telepítse a tanúsítványt a webszerverre.
Viszonylag gyors, egyszerű és érthető. Ez a lehetőség nagyon megfelelő, ha legfeljebb egy tucat projektünk van. Mi van, ha többen vannak, és legalább három környezetük van? Klasszikus dev - staging - produkció. Ebben az esetben érdemes elgondolkodni a folyamat automatizálásán. Azt javaslom, hogy elmélyüljünk egy kicsit a problémában, és találjunk olyan megoldást, amely tovább csökkenti a tanúsítványok létrehozására és karbantartására fordított időt. A cikk tartalmazza a probléma elemzését és egy kis útmutatót az ismétléshez.
Előzetesen foglalok: cégünk fő szakterülete a .net, és ennek megfelelően az IIS és egyéb csavarokkal kapcsolatos. Ezért az ACME klienst és az ezzel kapcsolatos összes műveletet a Windows használatának szempontjából is leírjuk.
Akik számára releváns és néhány háttéradat
A szerző által képviselt K cég. URL (például): company.tld
Az X projekt az egyik projektünk, amelyben arra a következtetésre jutottam, hogy a tanúsítványokkal való munka során továbbra is a maximális időmegtakarítás felé kell haladnunk. Ennek a projektnek négy környezete van: fejlesztői, tesztelési, staging és termelési. A fejlesztő és a tesztelés a mi oldalunkon, a kivitelezés és a gyártás az ügyfél oldalon áll.
A projekt sajátossága, hogy nagyszámú modullal rendelkezik, amelyek aldomainként érhetők el.
A gyártáshoz vásárolt helyettesítő tanúsítványt használnak, itt nincs kérdés. De ez csak az aldomain első szintjét fedi le. Ennek megfelelően, ha van tanúsítvány a *.projectX.tld-hez, akkor az működik a staging.projectX.tld-hez, de nem a module1.staging.projectX.tld-hez. Nem akarok külön venni.
És ez csak egy vállalat egy projektjének példáján van. És a projekt természetesen nincs egyedül.
A probléma kezelésének általános okai valahogy így néznek ki:
Az SSL kiadási és karbantartási folyamatának megkönnyítése a projektek és a vállalat egészének belső igényei szerint.
Tanúsítványrekordok központosított tárolása, amely részben megoldja a DNS segítségével történő tartományérvényesítés és az azt követő automatikus megújítás problémáját, valamint megoldja a kliens bizalom kérdését is. Ennek ellenére a CNAME megbízhatóbb a partner/végrehajtó cég szerverén, mint egy harmadik féltől származó erőforráson.
Nos, végül ebben az esetben tökéletesen illik a „jobb, ha van, mint ha nincs” kifejezés.
Az SSL-szolgáltató kiválasztása és az előkészítő lépések
Az ingyenes SSL-tanúsítványok elérhető lehetőségei közül a cloudflare-t és a letsencryptet vették figyelembe. Ennek (és néhány más projektnek) a DNS-ét a cloudflare üzemelteti, de nem rajongok a tanúsítványaik használatáért. Ezért a letsencrypt használata mellett döntöttek.
Helyettesítő karakteres SSL-tanúsítvány létrehozásához igazolnia kell a domain tulajdonjogát. Ez az eljárás magában foglalja néhány DNS-rekord (TXT vagy CNAME) létrehozását, amelyet a tanúsítvány kibocsátásakor ellenőrizni kell. A Linuxnak van egy segédprogramja − certbot, amely lehetővé teszi ennek a folyamatnak a részleges (vagy egyes DNS-szolgáltatók esetében teljesen) automatizálását. Windows esetén is ugyanilyentől találtak és teszteltek opciók az ACME kliensek számára WinACME.
És létrejött a domain rekordja, folytassuk a tanúsítvány létrehozását:
Az utolsó következtetés érdekel bennünket, nevezetesen a domain tulajdonjogának megerősítésére rendelkezésre álló lehetőségek a helyettesítő karakter tanúsítvány kiadásához:
DNS rekordok manuális létrehozása (az automatikus frissítés nem támogatott)
DNS-rekordok létrehozása az acme-dns szerverrel (további részletekért lásd: itt.
DNS-rekordok létrehozása saját szkript használatával (hasonlóan a certbot cloudflare beépülő moduljához).
Első pillantásra a harmadik pont teljesen megfelelő, de ha a DNS-szolgáltató nem támogatja ezt a funkciót? És szükségünk van egy általános esetre. És az általános eset a CNAME rekordok, mindenki támogatja őket. Ezért megállunk a 2. pontnál, és áttérünk az ACME-DNS szerverünk konfigurálására.
Az ACME-DNS szerver beállítási és tanúsítványkiadási folyamata
Például létrehoztam a 2nd.pp.ua domaint, és a jövőben is használni fogom.
Kötelező követelmény A szerver megfelelő működéséhez NS és A rekordok létrehozása szükséges a tartományához. És az első kellemetlen pillanat, amellyel találkoztam, az az, hogy a cloudflare (legalábbis szabad módban) nem teszi lehetővé, hogy egyidejűleg NS és A rekordot hozzon létre ugyanahhoz a gazdagéphez. Nem mintha ez probléma lenne, de kötésben lehetséges. A Support azt válaszolta, hogy a panelük ezt nem teszi lehetővé. Nem számít, hozzunk létre két bejegyzést:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.
Ebben a szakaszban meg kell oldanunk a fogadót acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data
De acme.2nd.pp.ua nem oldódik meg, mivel az azt kiszolgáló DNS-kiszolgáló még nem fut.
A rekordok elkészültek, térjünk át az ACME-DNS szerver beállítására és elindítására. Ubuntu szerveren fogom élni dokkmunkás konténer, de bárhol futtathatod, ahol van golang. A Windows is rendben van, de én még mindig jobban szeretem a Linux szervert.
Hozza létre a szükséges könyvtárakat és fájlokat:
$ mkdir config
$ mkdir data
$ touch config/config.cfg
Használjuk a vim-et kedvenc szövegszerkesztőjével, és illesszük be a mintát a config.cfg fájlba konfiguráció.
A sikeres munkához elegendő az általános és az api szakaszt kijavítani:
Amikor az ACME-DNS szerverre mutató hivatkozásról kérdezik, válaszul adja meg a létrehozott szerver URL-jét (https). Az acme-dns szerver URL-je: https://acme.2nd.pp.ua
Válaszul az ügyfél kiad egy rekordot, amelyet hozzá kell adni a meglévő DNS-kiszolgálóhoz (egyszeri eljárás):
[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.
Elkészítjük a szükséges bejegyzést, és megbizonyosodunk arról, hogy helyesen lett létrehozva:
Megerősítjük, hogy létrehoztuk a szükséges bejegyzést a winacme-ban, és folytatjuk a tanúsítvány létrehozásának folyamatát:
Leírják, hogyan kell a certbotot kliensként használni itt.
Ezzel befejeződik a tanúsítvány létrehozásának folyamata, telepítheti egy webszerverre és használhatja. Ha a tanúsítvány létrehozásakor egy feladatot is létrehoz az ütemezőben, akkor a jövőben a tanúsítvány frissítése automatikusan megtörténik.