Certbot melder om ei vellukka fornying, filene på disken har nye datoar, og klientane møter framleis den gamle identiteten. SoftEther held SSL-tenarsertifikatet i si eiga konfigurasjon på tenarnivå, så ei ny fil på disken endrar ingenting før bladet og nøkkelen er importerte. Rekkjefølgja nedanfor dekkjer éin manuell import, ei innpakning som køyrer etter kvar fornying, og ein kontroll som les kva lyttaren faktisk presenterer. Kvart steg lèt etter seg prov du kan samanlikne etter neste fornying.

Ei fornya fil endrar ikkje identiteten til tenaren

Utferding og utrulling er skilde hendingar med skilde feilmodusar. ACME-klienten skriv filer til ein lineage-katalog og registrerer suksess; SoftEther held fram med å bruke sertifikatet som sist vart lasta inn i konfigurasjonen. Ein null-exitstatus skildrar difor filene, ikkje tenesta, og dei to kan vere usamde så lenge ingen ser. Handsame importen som utrullingssteget og fornyinga som inngangsverdien.

Denne skilnaden forklarer òg den forvirrande halvfeilen: det gamle sertifikatet verkar til det går ut, så i starten ser ingenting øydelagt ut. Når det går ut, feilar alle klientar samtidig, noko som ser ut som eit avbrot og ikkje eit oversett utrullingssteg. Å kontrollere den presenterte identiteten etter kvar fornying gjer den overraskinga til ein rutineobservasjon.

Vel utfordringa som passar lyttaren

Sertifikatet må namngje verten klientane verifiserer, så bruk det offentlege DNS-namnet i staden for ei intern etikett eller ei adresse. HTTP-01 krev at utfordringa vert svara på port 80 eit augneblink, noko som er ein mellombels lyttar og aldri ein grunn til å flytte SoftEther sin eigen port. DNS-01 provar kontroll gjennom ein post og treng ingen inngåande HTTP i det heile.

Uovervaka fornying betyr ein automatisert DNS-integrasjon med legitimasjon avgrensa til éi sone, ikkje ein TXT-post som vert skriven for hand annakvar månad. Eit jokerteikn endrar utfordringstypen, ikkje behovet for den automatiseringa. Avgjer dette før det første sertifikatet finst, fordi å byte utfordringstype seinare betyr å røre klientkonfigurasjonen og brannmuren samstundes.

Hald artefaktane i orden medan du er her. Bladet og mellomleddssertifikata kjem som skilde filer og som éi samansett kjede fil, den private nøkkelen er igjen skild, og importen treng kjeda med den tilhøyrande nøkkelen, ikkje eit offentleg sertifikat åleine.

Importer kjeda på tenarnivå

Ta tryggleikskopi av tenarkonfigurasjonen og stadfest at du framleis når administrasjonsgrensesnittet før du rører sertifikatet. Kople til som tenaradministrator og ikkje som Virtual Hub-administrator, fordi sertifikatet høyrer til tenarobjektet. Last deretter kjeda og nøkkelen med absolutt stig, frå filer kontoen som køyrer kommandoen kan lese. Merk at stigane er absolutte fordi kommandoen løyser dei frå arbeidskatalogen til prosessen som køyrde vpncmd:

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

Les utdata frå kommandoen i staden for å gå ut frå suksess, og les deretter kjeda tilbake i staden for å stole på fila du gav. Grensa mellom bygg som importerer heile PEM-pakken og bygg som berre tek det første sertifikatet er ikkje dokumentert på éin stad, så kontrollen er det som avgjer det for bygget framfor deg. Tel sertifikata lyttaren presenterer; eit blad utan mellomledd er signaturen til ein importør som berre brukte den første blokka.

Hald den importerte nøkkelen lesbar berre for kontoen som køyrer tenaren, og hald administrasjonspassordet utanfor skallhistorikken. Ved denne første importen skriv du passordet ved ledeteksta i staden for å sende det som eit kommandoargument. Dei to vanane kostar ingenting og fjernar den vanlegaste måten ei sertifikatutrulling lek noko ho skulle verne. Gjer det før den første importen, ikkje etter.

Heng på utrullinga, ikkje fornyinga

Når den manuelle importen verkar, legg nøyaktig desse stega i ei lita innpakning og kall ho frå ACME-klienten etter ei vellukka fornying. Certbot set RENEWED_LINEAGE og RENEWED_DOMAINS for hooken, så innpakninga kan handle på eitt sertifikat på ein maskin som administrerer fleire. Filtrer på lineage i staden for å reagere på kvar fornying på verten. Innpakninga er utrullingskode som køyrer med rettane til tenaren, så gå gjennom ho som eitkvart anna skript i den posisjonen.

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

Ein hook som køyrer uovervaka treng sitt eige verna lager for legitimasjon og eit feilsignal som når eit menneske. Viss utferdinga lukkast og importen feilar, prøv importen på nytt i staden for å be om eit nytt sertifikat, fordi ei andre førespurnad skjuler utrulleringsfeilen bak ei ny fil. Dokumentasjonen til Certbot om fornying er tydeleg på at ein køyring som ikkje oppdaterer noko er eit normalt resultat, så hooken er det som skil dei to.

Samanlikn den presenterte kjeda med fila

Les lyttaren, ikkje disken. Kople til den klientvende porten med tenarnamnet klientane brukar, og samanlikn deretter fingeravtrykket og den leverte kjeda med lineagen hooken installerte. To kommandoar dekkjer det, og den første viser òg om mellomledd i det heile kjem:

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

Lag deretter ei ny klienttilkopling, fordi økter etablerte før importen vart autentiserte mot den førre identiteten og provar ingenting om den nye. Viss klientar festar det gamle bladet, treng dei ei koordinert oppdatering sjølv når den offentlege kjeda er gyldig, og den oppgåva høyrer heime i same runbook som fornyinga. Ein omvend proxy framfor tenesta kan presentere eit godt sertifikat medan VPN-lyttaren framleis held det gamle, og difor må kontrollen namngje porten klientane faktisk når. Noter fingeravtrykket ved sida av fornyingsdatoen, slik at neste samanlikning er ein kontroll og ikkje ei minnehandling.

Relaterte artiklar