Un server ha client che si bloccano per un po’ e poi si riconnettono, e un altro rifiuta subito le connessioni con un messaggio sulla dimensione della chiave. Sembrano difetti diversi e sono lo stesso difetto puntato in direzioni opposte. La crittografia della stretta di mano ha un costo che cresce con la dimensione dei parametri, e ha anche un pavimento sotto il quale le librerie moderne non scendono. Dimensionare il materiale è la lista di controllo, e il primo punto è decidere quale dei due difetti si ha davvero.

Leggi il guasto prima di rigenerare qualcosa

I tempi ti dicono la maggior parte. Una stretta di mano che consuma diversi secondi e poi muore di solito significa che il calcolo ha superato la pazienza del pari, il che indica parametri troppo grandi per l’hardware o per il timeout. Un rifiuto immediato che nomina una dimensione di chiave o di gruppo punta nella direzione opposta, verso materiale che la libreria non accetterà affatto.

Questi due richiedono correzioni opposte, ed è qui che sbagliano la maggior parte dei tentativi. Rigenerare parametri da 8192 bit su un client che ha già rifiutato un gruppo piccolo peggiora il caso lento senza fare nulla per quello veloce. Annota quale sintomo hai osservato prima di toccare un file.

Poi controlla cosa viene chiesto al pari. Un server configurato per un grande gruppo di campo finito costringe ogni client a spendere lo stesso tempo di CPU a ogni rinegoziazione, non solo alla connessione. Se il problema compare a intervalli regolari invece che all’avvio, quell’intervallo è un forte indizio su quale impostazione sia costosa. La rinegoziazione ripete l’intero calcolo, quindi uno stallo che ricompare ogni ora è di solito lo stesso costo pagato di nuovo.

Il caso lento: materiale che l’hardware non può permettersi

Il lavoro di Diffie-Hellman e RSA cresce rapidamente con la dimensione della chiave, e tutto avviene prima che scorra qualsiasi traffico nel tunnel. Su un router piccolo o un client a bassa potenza, un gruppo abbastanza grande può spingere lo scambio oltre il timeout dell’altro lato, così la connessione riprova o sembra semplicemente bloccata senza alcun errore.

La correzione è scendere a una dimensione che ogni pari supporta e ogni dispositivo può calcolare comodamente. Una chiave RSA da 2048 bit e un gruppo da 2048 bit restano una base ampiamente compatibile; andare oltre aiuta solo quando tutti i pari sono d’accordo e la CPU può pagarlo a ogni rinegoziazione. Tutto ciò che supera quella base è uno scambio deliberato, non un aggiornamento.

La dimensione non è un punteggio, e il numero più grande in una tabella di confronto non è automaticamente la scelta giusta. Scegli il valore più piccolo consentito dalla tua politica e accettato da tutti i pari, poi misura la stretta di mano invece di supporre che sia migliorata. Un gruppo più piccolo che scade ancora ti dice che la dimensione non è mai stata tutta la storia.

Il caso veloce: un gruppo che la libreria rifiuta

Le build moderne di OpenSSL rifiutano del tutto i gruppi di campo finito più piccoli, e un livello di sicurezza alzato spinge il pavimento ancora più in alto. Il firmware del router che include un file di parametri vecchio di decenni è la fonte abituale, e il sintomo è una connessione che fallisce subito con un messaggio che nomina il gruppo o la dimensione della chiave. Nulla di quel guasto è intermittente, ed è ciò che lo rende facile da riconoscere.

Sostituisci il file invece di modificare la configurazione per saltare il controllo. Genera un gruppo attuale, validalo, poi installalo dove il demone lo legge davvero. Conserva il file vecchio finché un client non si sarà connesso con successo con quello nuovo:

openssl dhparam -out /etc/openvpn/ffdhe2048.pem 2048
openssl dhparam -in /etc/openvpn/ffdhe2048.pem -check -noout
ls -l /etc/openvpn/ffdhe2048.pem

Il comando di controllo valida il file e non stampa nulla di utile quando passa; l’elenco conferma che hai sostituito il file che il servizio carica, non una copia obsoleta accanto. Punta la configurazione a quel percorso, riavvia il demone e conferma che un client che prima falliva ora completa la stretta di mano.

Se il server imposta anche un livello di sicurezza o un profilo di certificato, leggili prima di concludere che il gruppo fosse sbagliato. Un profilo che richiede una classe più severa può rifiutare materiale che il valore predefinito avrebbe accettato, e rimuovere quell’impostazione è un cambiamento più stretto che disattivare il controllo a livello globale.

Scegli una dimensione per il pari e l’hardware

Scopri cosa può sopportare l’estremità remota prima di generare qualcosa di esotico. Un dispositivo troppo vecchio per un gruppo da 2048 bit è un dispositivo da sostituire, dato che puntare il server a un gruppo più debole converte solo un reclamo di compatibilità in un’interruzione. Le correzioni durature vanno verso software più recente, non verso parametri più vecchi. Ogni eccezione temporanea in questo campo ha il modo di diventare la configurazione permanente.

Dove la CPU del server è il limite, cambia l’algoritmo invece di scendere sotto la politica. Uno scambio di chiavi a curva ellittica come X25519 è molto più economico di un grande gruppo di campo finito ed è ampiamente supportato, il che lo rende la risposta migliore a un reclamo sulle prestazioni rispetto a un modulo RSA più piccolo.

Qualunque cosa scegli, prova con una connessione reale e osserva quanto dura la stretta di mano, non solo se alla fine si connette. Una connessione che riesce in dodici secondi ha la stessa causa radice di una che fallisce a quindici.

Annota la scelta perché una ricostruzione non la annulli

Tieni il file dei parametri sotto gestione della configurazione e scrivi accanto la dimensione, il motivo e la data. Un server ricostruito che genera in silenzio i propri valori predefiniti è il modo in cui lo stesso difetto torna sei mesi dopo senza che nessuno sappia spiegare la decisione originale.

Annota le stesse informazioni accanto all’endpoint e al profilo, così una revisione non debba ricostruirle dalla dimensione di un file. Quando la prossima connessione si blocca, quella nota è la differenza tra un controllo di cinque minuti e una nuova indagine. Impedisce anche al prossimo ingegnere di risolvere il caso lento con una correzione pensata per quello veloce.

Articoli correlati