SoftEther ServerCertSet: importer den fornyede kjeden med vpncmd
En fornyet fil endrer ikke SoftEther-serverens identitet. Importer kjeden med ServerCertSet, heng på distribusjonstrinnet og les lytteren.
Certbot rapporterer en vellykket fornyelse, filene på disken har nye datoer, og klientene møter fortsatt den gamle identiteten. SoftEther holder SSL-tjenersertifikatet i sin egen konfigurasjon på servernivå, så en ny fil på disken endrer ingenting før bladet og nøkkelen er importert. Sekvensen nedenfor dekker én manuell import, en innpakning som kjører etter hver fornyelse, og en kontroll som leser hva lytteren faktisk presenterer. Hvert trinn etterlater bevis du kan sammenligne etter neste fornyelse.
En fornyet fil endrer ikke serverens identitet
Utstedelse og distribusjon er separate hendelser med separate feilmoduser. ACME-klienten skriver filer til en lineage-katalog og registrerer suksess; SoftEther fortsetter å bruke sertifikatet som sist ble lastet inn i konfigurasjonen. En null-exitstatus beskriver derfor filene, ikke tjenesten, og de to kan være uenige så lenge ingen ser. Behandle importen som distribusjonstrinnet og fornyelsen som inngangsverdien.
Forskjellen forklarer også den forvirrende halvfeilen: det gamle sertifikatet virker til det utløper, så ingenting ser ødelagt ut i starten. Når det utløper, feiler alle klienter samtidig, noe som ser ut som et avbrudd og ikke et oversett distribusjonstrinn. Å kontrollere den presenterte identiteten etter hver fornyelse gjør den overraskelsen til en rutinemessig observasjon.
Velg utfordringen som passer lytteren
Sertifikatet må navngi verten klientene verifiserer, så bruk det offentlige DNS-navnet i stedet for en intern etikett eller en adresse. HTTP-01 krever at utfordringen besvares på port 80 et øyeblikk, noe som er en midlertidig lytter og aldri en grunn til å flytte SoftEthers egen port. DNS-01 beviser kontroll gjennom en post og trenger ingen innkommende HTTP i det hele tatt.
Uovervåket fornyelse betyr en automatisert DNS-integrasjon med legitimasjon begrenset til én sone, ikke en TXT-post som skrives for hånd annenhver måned. Et jokertegn endrer utfordringstypen, ikke behovet for den automatiseringen. Bestem dette før det første sertifikatet finnes, fordi å bytte utfordringstype senere betyr å røre klientkonfigurasjonen og brannmuren samtidig.
Hold artefaktene i orden mens du er her. Bladet og mellomleddssertifikatene kommer som separate filer og som én kombinert kjedefil, den private nøkkelen er igjen separat, og importen trenger kjeden med den tilhørende nøkkelen, ikke et offentlig sertifikat alene.
Importer kjeden på servernivå
Ta sikkerhetskopi av serverkonfigurasjonen og bekreft at du fortsatt når administrasjonsgrensesnittet før du rører sertifikatet. Koble til som serveradministrator og ikke som Virtual Hub-administrator, fordi sertifikatet tilhører serverobjektet. Last deretter kjeden og nøkkelen med absolutt sti, fra filer kontoen som kjører kommandoen kan lese. Merk at stiene er absolutte fordi kommandoen løser dem fra arbeidskatalogen til prosessen som kjørte vpncmd:
ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pemLes kommandoens utdata i stedet for å anta suksess, og les deretter kjeden tilbake i stedet for å stole på filen du ga. Grensen mellom bygg som importerer hele PEM-pakken og bygg som bare tar det første sertifikatet er ikke dokumentert ett sted, så kontrollen er det som avgjør det for bygget foran deg. Tell sertifikatene lytteren presenterer; et blad uten mellomledd er signaturen til en importør som bare brukte den første blokken.
Hold den importerte nøkkelen lesbar bare for kontoen som kjører serveren, og hold administrasjonspassordet utenfor skallhistorikken. Ved denne første importen skriver du passordet ved ledeteksten i stedet for å sende det som et kommandoparameter. De to vanene koster ingenting og fjerner den vanligste måten en sertifikatdistribusjon lekker noe den skulle beskytte. Gjør det før den første importen, ikke etter.
Heng på distribusjonen, ikke fornyelsen
Når den manuelle importen virker, legg nøyaktig disse trinnene i en liten innpakning og kall den fra ACME-klienten etter en vellykket fornyelse. Certbot setter RENEWED_LINEAGE og RENEWED_DOMAINS for hooken, så innpakningen kan handle på ett sertifikat på en maskin som administrerer flere. Filtrer på lineage i stedet for å reagere på hver fornyelse på verten. Innpakningen er distribusjonskode som kjører med serverens rettigheter, så gjennomgå den som ethvert annet skript i den posisjonen.
certbot renew --deploy-hook /usr/local/sbin/softether-deploy.shEn hook som kjører uovervåket trenger sitt eget beskyttede lager for legitimasjon og et feilsignal som når et menneske. Hvis utstedelsen lykkes og importen feiler, prøv importen på nytt i stedet for å be om et nytt sertifikat, fordi en andre forespørsel skjuler distribusjonsfeilen bak en ny fil. Certbots dokumentasjon om fornyelse er tydelig på at en kjøring som ikke oppdaterer noe er et normalt resultat, så hooken er det som skiller de to.
Sammenlign den presenterte kjeden med filen
Les lytteren, ikke disken. Koble til den klientvendte porten med servernavnet klientene bruker, og sammenlign deretter fingeravtrykket og den leverte kjeden med lineagen hooken installerte. To kommandoer dekker det, og den første viser også om mellomledd i det hele tatt kommer:
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 -sha256Lag deretter en ny klienttilkobling, fordi økter etablert før importen ble autentisert mot den forrige identiteten og beviser ingenting om den nye. Hvis klienter fester det gamle bladet, trenger de en koordinert oppdatering selv når den offentlige kjeden er gyldig, og den oppgaven hører hjemme i samme runbook som fornyelsen. En omvendt proxy foran tjenesten kan presentere et godt sertifikat mens VPN-lytteren fortsatt holder det gamle, og derfor må kontrollen navngi porten klientene faktisk når. Noter fingeravtrykket ved siden av fornyelsesdatoen, slik at neste sammenligning er en kontroll og ikke en minnehandling.