Hiel faak moatte wy wurkje mei SSL-sertifikaten. Lit ús ûnthâlde it proses fan it meitsjen en ynstallearjen fan in sertifikaat (yn it algemien gefal foar de measte).
Sykje in provider (in side wêr't wy SSL kinne keapje).
Generearje CSR.
Stjoer it nei de provider.
Befêstigje domein eigendom.
Krij in sertifikaat.
Konvertearje it sertifikaat nei de winske foarm (opsjoneel). Bygelyks, fan pem nei PKCS #12.
Ynstallearje it sertifikaat op 'e webtsjinner.
Relatyf fluch, maklik en begryplik. Dizze opsje is hiel geskikt as wy hawwe in maksimum fan in tsiental projekten. Wat as d'r mear binne, en se hawwe op syn minst trije omjouwings? Klassike dev - staging - produksje. Yn dit gefal is it wurdich te tinken oer it automatisearjen fan dit proses. Ik stel foar om in bytsje djipper yn it probleem te gean en in oplossing te finen dy't de tiid dy't bestege oan it meitsjen en ûnderhâlden fan sertifikaten fierder sil minimalisearje. It artikel sil in analyze fan it probleem befetsje en in lytse hantlieding foar werhelling.
Ik sil foarôf in reservearje meitsje: de wichtichste spesjalisaasje fan ús bedriuw is .net, en dus IIS en oare skroef-relatearre. Dêrom sil de ACME-kliïnt en alle aksjes dêrfoar ek wurde beskreaun yn termen fan it brûken fan finsters.
Foar wa't it relevant is en wat eftergrûngegevens
Company K fertsjintwurdige troch de skriuwer. URL (bygelyks): company.tld
Projekt X is ien fan ús projekten, wêrby't ik ta de konklúzje kaam dat wy by it wurkjen mei sertifikaten noch nei maksimale tiidbesparring moatte. Dit projekt hat fjouwer omjouwings: dev, test, staging en produksje. Dev en test binne oan ús kant, staging en produksje binne oan 'e klantkant.
In skaaimerk fan it projekt is dat it in grut oantal modules hat dy't beskikber binne as subdomeinen.
Foar produksje wurdt in kocht wildcard-sertifikaat brûkt, hjir binne gjin fragen. Mar it beslacht allinich it earste nivo fan it subdomein. As d'r dus in sertifikaat is foar *.projectX.tld, dan sil it wurkje foar staging.projectX.tld, mar net foar module1.staging.projectX.tld. Ik wol gjin aparte keapje.
En dit is allinich op it foarbyld fan ien projekt fan ien bedriuw. En it projekt is fansels net allinnich.
De algemiene redenen foar it oanpakken fan dit probleem sjogge der sa út:
Om it proses fan it útjaan en ûnderhâlden fan SSL te fasilitearjen foar de ynterne behoeften fan projekten en it bedriuw as gehiel.
Sintrale opslach fan sertifikaatrecords, dy't it probleem fan domeinvalidaasje foar in part oplost mei DNS en dêropfolgjende automatyske fernijing, en ek oplost it probleem fan klantfertrouwen. Dochs is CNAME mear betrouber op 'e tsjinner fan' e partner / útfierende bedriuw as op in boarne fan tredden.
No, úteinlik, yn dit gefal, past de útdrukking "better te hawwen dan net te hawwen" perfekt.
Selektearje in SSL-oanbieder en tariedende stappen
Fan 'e beskikbere opsjes foar fergese SSL-sertifikaten waarden cloudflare en letsencrypt beskôge. De DNS foar dit (en guon oare projekten) wurdt hosted troch cloudflare, mar ik bin gjin fan fan it brûken fan har sertifikaten. Dêrom waard besletten om letsencrypt te brûken.
Om in wildcard SSL-sertifikaat te meitsjen, moatte jo it eigendom fan it domein ferifiearje. Dizze proseduere omfettet it oanmeitsjen fan wat DNS-record (TXT of CNAME), mei de folgjende ferifikaasje by it útjaan fan in sertifikaat. Linux hat in hulpprogramma - certbot, wêrtroch jo dit proses foar in part (of folslein foar guon DNS-providers) kinne automatisearje. Foar Windows itselde út fûn en hifke opsjes foar ACME kliïnten ik fêstige op WinACME.
En it record foar it domein is oanmakke, litte wy trochgean mei it meitsjen fan in sertifikaat:
Wy binne ynteressearre yn 'e lêste konklúzje, nammentlik de beskikbere opsjes foar it ferifiearjen fan domeinbesit foar it útjaan fan in wildcard-sertifikaat:
DNS-records manuell oanmeitsje (automatyske fernijing wurdt net stipe)
DNS-records oanmeitsje mei de acme-dns-tsjinner (sjoch foar mear details hjir.
DNS-records oanmeitsje mei jo eigen skript (lykas de cloudflare-plugin foar certbot).
Op it earste each is it tredde punt hiel geskikt, mar as de DNS-provider dizze funksjonaliteit net stipet? En wy hawwe in algemiene saak nedich. En it algemiene gefal is CNAME records, elkenien stipet se. Dêrom stopje wy by punt 2, en gean nei it konfigurearjen fan ús ACME-DNS-tsjinner.
ACME-DNS tsjinner opset en sertifikaat útjefte proses
Bygelyks, ik makke de 2nd.pp.ua domein, en ik sil brûke it yn 'e takomst.
Ferplichte eask foar de juste wurking fan de tsjinner is it meitsjen fan NS- en A-records foar har domein. En it earste onaangename momint dat ik tsjinkaam is dat cloudflare (op syn minst yn 'e frije modus) jo net tagelyk in NS- en A-record meitsje kinne foar deselde host. Net dat dit in probleem is, mar yn binde is it mooglik. Stipe antwurde dat har paniel dit net tastean. It makket neat út, litte wy twa yngongen oanmeitsje:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.
Op dit stadium moatte wy de host oplosse acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data
Mar acme.2nd.pp.ua sil net oplosse, om't de DNS-tsjinner dy't it tsjinnet noch net rint.
De records binne oanmakke, litte wy trochgean mei it ynstellen en starten fan de ACME-DNS-tsjinner. Ik sil it libje op Ubuntu-tsjinner yn docker container, mar jo kinne rinne it oeral dêr is golang. Windows is ek goed, mar ik leaver noch in Linux-tsjinner.
Meitsje de nedige mappen en bestannen:
$ mkdir config
$ mkdir data
$ touch config/config.cfg
Litte wy vim brûke mei jo favorite tekstbewurker en plakke it foarbyld yn config.cfg konfiguraasje.
Foar suksesfol wurk is it genôch om de algemiene en api-seksjes te korrigearjen:
As jo frege oer in keppeling nei de ACME-DNS-tsjinner, fier dan de URL fan 'e oanmakke server (https) yn as antwurd. URL fan de acme-dns-tsjinner: https://acme.2nd.pp.ua
As antwurd jout de kliïnt in record út dat moat wurde tafoege oan de besteande DNS-tsjinner (ienmalige proseduere):
[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.
Wy meitsje de nedige yngong, en soargje derfoar dat it goed is makke:
Wy befêstigje dat wy de fereaske yngong hawwe makke yn winacme, en trochgean mei it proses fan it meitsjen fan in sertifikaat:
Hoe certbot as klant te brûken wurdt beskreaun hjir.
Dit foltôget it proses fan it meitsjen fan in sertifikaat, jo kinne it ynstallearje op in webserver en brûke it. As jo, by it meitsjen fan in sertifikaat, ek in taak meitsje yn 'e planner, dan sil yn' e takomst it proses fan it bywurkjen fan it sertifikaat automatysk plakfine.