Nøgler på 8192 bit standser håndtrykket; DH på 1024 bit afvises
To størrelsesfejl med modsatte rettelser: en for stor nøgle brænder håndtrykkets tid, indtil modparten løber tør for tid, mens en lille DH-gruppe afvises, før den begynder.
På én server hænger klienter et stykke tid og genopretter derefter forbindelsen, og en anden afviser forbindelser med det samme med en besked om nøglestørrelse. De ser ud som forskellige fejl, og de er den samme fejl, der peger i modsatte retninger. Håndtrykkets kryptografi har en pris, der vokser med parameterstørrelsen, og den har også et gulv, som moderne biblioteker ikke går under. At dimensionere materialet er tjeklisten, og det første punkt er at afgøre, hvilken af de to fejl du faktisk har.
Læs fejlen, før du genskaber noget
Tidspunktet fortæller dig det meste. Et håndtryk, der bruger flere sekunder og derefter dør, betyder normalt, at beregningen overlevede modpartens tålmodighed, hvilket peger på parametre, der er for store til hardwaren eller til timeouten. En øjeblikkelig afvisning, der nævner en nøgle- eller gruppestørrelse, peger den anden vej, mod materiale som biblioteket slet ikke vil acceptere.
De to har brug for modsatte rettelser, og det er her, de fleste forsøg går galt. At genskabe 8192-bit parametre på en klient, der allerede har afvist en lille gruppe, gør det langsomme tilfælde værre, mens det ikke gør noget for det hurtige. Skriv ned, hvilket symptom du har set, før du rører en fil.
Undersøg derefter, hvad modparten bliver bedt om. En server, der er sat op til en stor gruppe i et endeligt felt, tvinger hver klient til at bruge samme CPU-tid ved hver genforhandling, ikke kun ved forbindelsen. Hvis problemet opstår med et fast interval i stedet for ved opstart, er det interval et stærkt hint om, hvilken indstilling der er dyr. Genforhandlingen gentager hele beregningen, så en forsinkelse, der vender tilbage hver time, er normalt den samme pris, der betales igen.
Det langsomme tilfælde: materiale, som hardwaren ikke kan betale
Arbejdet med Diffie-Hellman og RSA vokser hurtigt med nøglestørrelsen, og det hele sker, før der flyder trafik gennem tunnelen. På en lille router eller en klient med lav effekt kan en tilstrækkelig stor gruppe skubbe udvekslingen forbi den anden sides timeout, så forbindelsen prøver igen eller blot ser ud til at hænge uden nogen fejl.
Rettelsen er at gå ned til en størrelse, som hver modpart understøtter, og som hver enhed kan beregne komfortabelt. En RSA-nøgle på 2048 bit og en gruppe på 2048 bit er fortsat en bredt kompatibel basislinje; større hjælper kun, når alle parter er enige, og CPU'en kan betale for det ved hver genforhandling. Alt over den basislinje er en bevidst afvejning, ikke en opgradering.
Størrelse er ikke en score, og det største tal i en sammenligningstabel er ikke automatisk det rigtige valg. Vælg den mindste værdi, din politik tillader, og som alle modparter accepterer, og mål derefter håndtrykket i stedet for at antage, at det blev bedre. En mindre gruppe, der stadig løber ud i tid, fortæller dig, at størrelsen aldrig var hele historien.
Det hurtige tilfælde: en gruppe, som biblioteket afviser
Moderne OpenSSL-builds afviser de mindste grupper i endelige felter helt, og et hævet sikkerhedsniveau skubber gulvet endnu højere op. Router-firmware, der pakker en årtier gammel parameterfil, er den sædvanlige kilde, og symptomet er en forbindelse, der fejler med det samme med en besked, der nævner gruppen eller nøglestørrelsen. Intet ved den fejl er periodisk, og det er netop det, der gør den let at genkende.
Erstat filen i stedet for at redigere konfigurationen for at springe kontrollen over. Generer en aktuel gruppe, validér den, og installér den derefter, hvor dæmonen faktisk læser den. Behold den gamle fil, indtil en klient er forbundet med den nye:
openssl dhparam -out /etc/openvpn/ffdhe2048.pem 2048
openssl dhparam -in /etc/openvpn/ffdhe2048.pem -check -noout
ls -l /etc/openvpn/ffdhe2048.pemKontrolkommandoen validerer filen og udskriver intet nyttigt, når den passerer; oversigten bekræfter, at du erstattede den fil, tjenesten indlæser, og ikke en forældet kopi ved siden af. Peg konfigurationen mod den sti, genstart dæmonen, og bekræft, at en klient, der tidligere fejlede, nu fuldfører håndtrykket.
Hvis serveren også sætter et sikkerhedsniveau eller en certifikatprofil, skal du læse dem, før du konkluderer, at gruppen var forkert. En profil, der kræver en strengere klasse, kan afvise materiale, som standarden ville have accepteret, og at fjerne den indstilling er en snævrere ændring end at slå kontrollen fra globalt.
Vælg en størrelse til modparten og hardwaren
Find ud af, hvad den fjerne ende kan håndtere, før du genererer noget eksotisk. En enhed, der er for gammel til en gruppe på 2048 bit, er en enhed, der skal udskiftes, da det kun gør en kompatibilitetsklage til et nedbrud at pege serveren mod en svagere gruppe. Holdbare rettelser bevæger sig mod nyere software i stedet for ældre parametre. Enhver midlertidig undtagelse på dette område har en måde at blive den permanente konfiguration på.
Hvor serverens CPU er grænsen, skal du ændre algoritmen i stedet for at gå under politikken. En nøgleudveksling med elliptisk kurve som X25519 er dramatisk billigere end en stor gruppe i et endeligt felt og er bredt understøttet, hvilket gør den til det bedre svar på en ydelsesklage end et mindre RSA-modul.
Uanset hvad du vælger, skal du teste med én rigtig forbindelse og se, hvor lang tid håndtrykket tager, ikke blot om det til sidst forbinder. En forbindelse, der lykkes på tolv sekunder, har samme grundårsag som en, der fejler på femten.
Skriv valget ned, så en genopbygning ikke kan fortryde det
Hold parameterfilen under konfigurationsstyring, og skriv størrelsen, årsagen og datoen ved siden af. En genopbygget server, der stille genererer sine egne standarder, er måden, hvorpå den samme fejl vender tilbage seks måneder senere, uden at nogen kan forklare den oprindelige beslutning.
Skriv de samme oplysninger ved siden af endpointet og profilen, så en gennemgang ikke skal rekonstruere dem ud fra en filstørrelse. Når den næste forbindelse hænger, er den note forskellen mellem et fem minutters tjek og en ny undersøgelse. Det forhindrer også den næste ingeniør i at løse det langsomme tilfælde med en rettelse, der var beregnet til det hurtige.