Certbot meld 'n geslaagde hernuwing, die lêers op skyf het nuwe datums, en kliënte sien steeds die ou identiteit. SoftEther hou sy SSL-bedienercertifikaat in sy eie konfigurasie op bedienervlak, dus 'n nuwe lêer op skyf verander niks totdat die leaf-sertifikaat en sy sleutel ingevoer is nie. Die volgorde hieronder dek een handmatige invoer, 'n omhulsel wat ná elke hernuwing loop, en 'n kontrole wat lees wat die luisteraar werklik aanbied. Elke stap laat bewyse na wat jy ná die volgende hernuwing kan vergelyk.

Hernuude lêer verander nie die bediener se identiteit nie

'n Uitreiking en 'n ontplooiing is twee aparte gebeurtenisse met aparte foutmeganismes. Die ACME-kliënt skryf lêers in 'n lineage-gids en teken sukses aan; SoftEther bly die sertifikaat gebruik wat laas in sy konfigurasie gelaai is. 'n Uittreewaarde van nul beskryf dus die lêers, nie die diens nie, en dié twee kan verskil solank niemand kyk nie. Hanteer die invoer as die ontplooiingstap en die hernuwing as die invoer daarvan.

Daardie onderskeid verduidelik ook die verwarrende halwe mislukking: die ou sertifikaat bly werk tot sy vervaldatum, so niks lyk aanvanklik stukkend nie. Wanneer dit wel verval, faal elke kliënt gelyk, wat soos 'n onderbreking lyk eerder as 'n oorgeslane ontplooiingstap. Om die aangebiede identiteit ná elke hernuwing te kontroleer, maak daardie verrassing 'n roetine-waarneming.

Kies die uitdaging wat by die luisteraar pas

Die sertifikaat moet die gasheer noem wat kliënte verifieer, dus gebruik die publieke DNS-naam eerder as 'n interne etiket of 'n adres. HTTP-01 vereis dat die uitdaging 'n oomblik op poort 80 beantwoord word, wat 'n tydelike luisteraar is en nooit 'n rede is om SoftEther se eie poort te skuif nie. DNS-01 bewys beheer deur 'n rekord en het glad geen inkomende HTTP nodig nie.

Onaangepaste hernuwing beteken 'n outomatiese DNS-integrasie met geloofsbriewe wat tot die een sone beperk is, nie 'n TXT-rekord wat elke paar maande met die hand getik word nie. 'n Jokerteken verander die tipe uitdaging, nie die behoefte aan daardie outomatisering nie. Besluit dit voordat die eerste sertifikaat bestaan, want om later van uitdagingstipe te verander beteken om die kliëntkonfigurasie en die firewall saam aan te pas.

Hou die artefakte reg terwyl jy hier is. Die leaf-sertifikaat en die tussenliggende sertifikate kom as aparte lêers en as een gekombineerde kettinglêer, die privaat sleutel is weer apart, en die invoer benodig die ketting met sy passende sleutel eerder as 'n publieke sertifikaat op sy eie.

Voer die ketting op bedienervlak in

Maak 'n rugsteun van die bedienerkonfigurasie en bevestig dat jy nog die bestuurkous kan bereik voordat jy aan die sertifikaat raak. Verbind as 'n bedieneradministrateur eerder as 'n Virtual Hub-administrateur, want die sertifikaat hoort by die bedienerobjek. Laai dan die ketting en die sleutel per absolute pad, uit lêers wat die rekening wat die opdrag loop kan lees. Let op dat die paaie absoluut is omdat die opdrag hulle vanaf die werkmap van watter proses ook al vpncmd geloop het, oplos:

ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pem

Lees die opdrag se uitset in plaas daarvan om sukses te aanvaar, en lees dan die ketting terug eerder as om die lêer te vertrou wat jy ingegee het. Die grens tussen bouwe wat 'n hele PEM-bundel invoer en bouwe wat net die eerste sertifikaat neem, is nie op een plek gedokumenteer nie, so die kontrole is wat dit vir die bou voor jou beslis. Tel die sertifikate wat die luisteraar aanbied; 'n leaf-sertifikaat sonder tussenliggende sertifikate is die kenmerk van 'n invoerder wat net die eerste blok verteer het.

Hou die ingevoerde sleutel leesbaar net vir die rekening wat die bediener loop, en hou die bestuurwagwoord uit die skripgeskiedenis. Vir hierdie eerste invoer, tik die wagwoord by die opdragprompt in plaas daarvan om dit as 'n opdragargument te gee. Daardie twee gewoontes kos niks en verwyder die mees algemene manier waarop 'n sertifikaatontplooiing iets lek wat dit moes beskerm. Doen dit voor die eerste invoer, nie daarna nie.

Koppel die ontplooiing, nie die hernuwing nie

Sodra die handmatige invoer werk, plaas presies daardie stappe in 'n klein omhulsel en roep dit vanuit die ACME-kliënt ná 'n geslaagde hernuwing. Certbot stel RENEWED_LINEAGE en RENEWED_DOMAINS vir die haak op, so die omhulsel kan op een sertifikaat handel op 'n masjien wat verskeie bestuur. Filter op die lineage eerder as om op elke hernuwing op die gasheer te reageer. Die omhulsel is ontplooiingskode wat met die bediener se voorregte loop, so hersien dit soos enige ander skrip in daardie posisie.

certbot renew --deploy-hook /usr/local/sbin/softether-deploy.sh

'n Haak wat onaangepas loop, het sy eie beskermde magtigingsbewaarplek en 'n foutsein wat 'n mens bereik, nodig. As uitreiking slaag en die invoer faal, probeer die invoer weer eerder as om nog 'n sertifikaat aan te vra, want 'n tweede versoek verberg die ontplooiingsfout agter 'n nuwe lêer. Die Certbot-hernuwingsdokumentasie is duidelik dat 'n loop wat niks opdateer nie 'n normale uitkoms is, so die haak is wat die twee onderskei.

Vergelyk die aangebiede ketting met die lêer

Lees die luisteraar, nie die skyf nie. Verbind na die kliëntgerigte poort met die bedienernaam wat die kliënte gebruik, en vergelyk dan die vingerafdruk en die gelewerde ketting met die lineage wat die haak geïnstalleer het. Twee opdragte dek dit, en die eerste wys ook of tussenliggende sertifikate hoegenaamd aankom:

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -fingerprint -sha256

Maak dan 'n nuwe kliëntverbinding, want sessies wat voor die invoer opgestel is, is teen die vorige identiteit geauthentiseer en bewys niks oor die nuwe een nie. As kliënte die ou leaf-sertifikaat pin, het hulle 'n gekoördineerde opdatering nodig selfs wanneer die publieke ketting geldig is, en daardie taak hoort in dieselfde runbook as die hernuwing. 'n Reverse proxy voor die diens kan 'n goeie sertifikaat aanbied terwyl die VPN-luisteraar nog die ou een hou, en daarom moet die kontrole die poort noem wat kliënte werklik bereik. Teken die vingerafdruk langs die hernuwingsdatum aan, sodat die volgende vergelyking 'n kontrole is eerder as 'n daad van geheue.

Verwante artikels