SoftEther ServerCertSet: importa la cadena renovada amb vpncmd
Un fitxer renovat no canvia la identitat del servidor SoftEther. Importa la cadena amb ServerCertSet, enganxa el pas de desplegament i llegeix l'oient.
Certbot informa d'una renovació correcta, els fitxers del disc porten dates noves i els clients encara troben la identitat antiga. SoftEther guarda el seu certificat SSL de servidor a la seva pròpia configuració a nivell de servidor, així que un fitxer nou al disc no canvia res fins que s'importen el certificat fulla i la seva clau. La seqüència següent cobreix una importació manual, un embolcall que s'executa després de cada renovació i una comprovació que llegeix què presenta realment l'oient. Cada pas deixa proves que podeu comparar després de la propera renovació.
Un fitxer renovat no canvia la identitat del servidor
L'emissió i el desplegament són esdeveniments separats amb maneres de fallar separades. El client ACME escriu fitxers en un directori de llinatge i registra l'èxit; SoftEther continua fent servir el certificat que es va carregar per últim cop a la seva configuració. Per tant, un estat de sortida zero descriu els fitxers, no el servei, i tots dos poden discrepar mentre ningú no ho miri. Tracteu la importació com el pas de desplegament i la renovació com la seva entrada.
Aquesta distinció també explica el mig fracàs confús: el certificat antic continua funcionant fins al seu venciment, així que al principi res no sembla trencat. Quan venç, tots els clients fallen alhora, cosa que sembla una caiguda i no un pas de desplegament omès. Comprovar la identitat presentada després de cada renovació converteix aquesta sorpresa en una observació rutinària.
Trieu el repte que encaixi amb l'oient
El certificat ha de nomenar l'amfitrió que verifiquen els clients, així que feu servir el nom DNS públic en lloc d'una etiqueta interna o una adreça. HTTP-01 necessita que es respongui el repte al port 80 durant un moment, cosa que és un oient temporal i mai no és motiu per moure el port propi de SoftEther. DNS-01 demostra el control mitjançant un registre i no necessita cap HTTP entrant.
La renovació desatesa vol dir una integració DNS automatitzada amb credencials limitades a una sola zona, no un registre TXT escrit a mà cada dos mesos. Un comodí canvia el tipus de repte, no la necessitat d'aquesta automatització. Decidiu-ho abans que existeixi el primer certificat, perquè canviar el tipus de repte més tard vol dir tocar la configuració del client i el tallafoc alhora.
Mantingueu els artefactes en ordre mentre sou aquí. El certificat fulla i els intermediaris arriben com a fitxers separats i com un fitxer de cadena combinat, la clau privada torna a ser a part, i la importació necessita la cadena amb la seva clau corresponent, no un certificat públic sol.
Importeu la cadena a nivell de servidor
Feu una còpia de seguretat de la configuració del servidor i confirmeu que encara podeu arribar a la interfície de gestió abans de tocar el certificat. Connecteu-vos com a administrador del servidor i no com a administrador del Virtual Hub, perquè el certificat pertany a l'objecte del servidor. Després carregueu la cadena i la clau per camí absolut, des de fitxers que el compte que executa l'ordre pugui llegir. Fixeu-vos que els camins són absoluts perquè l'ordre els resol des del directori de treball del procés que va executar vpncmd:
ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pemLlegiu la sortida de l'ordre en lloc de suposar èxit, i després torneu a llegir la cadena en lloc de confiar en el fitxer que heu passat. La frontera entre les compilacions que importen un paquet PEM sencer i les que només agafen el primer certificat no està documentada en un sol lloc, així que la comprovació és el que ho resol per a la compilació que teniu davant. Compteu els certificats que presenta l'oient; un certificat fulla sense intermediaris és la signatura d'un importador que només va consumir el primer bloc.
Mantingueu la clau importada llegible només pel compte que executa el servidor, i mantingueu la contrasenya de gestió fora de l'historial de l'intèrpret. Per a aquesta primera importació, escriviu la contrasenya al prompt en lloc de passar-la com a argument de l'ordre. Aquests dos hàbits no costen res i eliminen la manera més comuna que un desplegament de certificat filtrí una cosa que havia de protegir. Feu-ho abans de la primera importació, no després.
Enganxeu el desplegament, no la renovació
Quan la importació manual funcioni, poseu exactament aquests passos en un embolcall petit i crideu-lo des del client ACME després d'una renovació correcta. Certbot estableix RENEWED_LINEAGE i RENEWED_DOMAINS per al hook, així que l'embolcall pot actuar sobre un certificat en una màquina que en gestiona diversos. Filtreu pel llinatge en lloc de reaccionar a cada renovació de l'amfitrió. L'embolcall és codi de desplegament que s'executa amb els privilegis del servidor, així que reviseu-lo com qualsevol altre script en aquesta posició.
certbot renew --deploy-hook /usr/local/sbin/softether-deploy.shUn hook que s'executa desatesament necessita el seu propi magatzem de credencials protegit i un senyal de fallada que arribi a una persona. Si l'emissió té èxit i la importació falla, torneu a provar la importació en lloc de demanar un altre certificat, perquè una segona petició amaga el defecte de desplegament darrere d'un fitxer nou. La documentació de renovació de Certbot deixa clar que una execució que no actualitza res és un resultat normal, així que el hook és el que distingeix les dues coses.
Compareu la cadena presentada amb el fitxer
Llegiu l'oient, no el disc. Connecteu-vos al port orientat als clients amb el nom de servidor que fan servir els clients i compareu després l'empremta i la cadena lliurada amb el llinatge que va instal·lar el hook. Dues ordres ho cobreixen, i la primera també mostra si arriben intermediaris:
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 -sha256Després feu una connexió de client nova, perquè les sessions establertes abans de la importació es van autenticar contra la identitat anterior i no proven res sobre la nova. Si els clients fixen el certificat fulla antic, necessiten una actualització coordinada fins i tot quan la cadena pública és vàlida, i aquesta tasca pertany al mateix runbook que la renovació. Un proxy invers davant del servei pot presentar un certificat bo mentre l'oient VPN encara té el vell, i per això la comprovació ha de nomenar el port que els clients realment assoleixen. Anoteu l'empremta al costat de la data de renovació, perquè la propera comparació sigui una comprovació i no un acte de memòria.