AES-256-GCM nu a fost găsit: capacitatea clientului sau negocierea?
Două erori OpenVPN arată la fel: o compilare fără algoritm și perechi fără cifru comun. Citiți --show-ciphers și data-ciphers înainte de a edita profilul.
Un profil OpenVPN care funcționează în altă parte raportează că AES-256-GCM nu este găsit, sau că perechile nu au niciun cifru comun, iar primul impuls este să editați profilul. Aceste două mesaje descriu defecțiuni diferite. Unul spune că programul local nu are acel algoritm; celălalt că ambele capete au algoritmi, dar nicio alegere comună. Editarea profilului nu le repară pe niciuna până nu știți pe care o aveți.
Citiți textul exact al erorii și programul care a produs-o.
Stabiliți ce eroare aveți
Mesajul despre un cifru care nu este găsit vine din analiza opțiunilor pe mașina locală, înainte de a fi trimis vreun pachet. Înseamnă că executabilul din fața dumneavoastră, sau biblioteca de care este legat, nu oferă acel algoritm. Mesajul despre lipsa unui cifru comun apare mai târziu, în timpul negocierii, și înseamnă că ambele părți acceptă cifruri, dar nu se înțeleg asupra unuia.
Distincția contează pentru că unul este o problemă de versiune a software-ului, iar celălalt de configurare. Primul se rezolvă printr-un număr de versiune. Al doilea se rezolvă comparând două liste.
O lipsă locală de capacitate
Compilările vechi ale comunității sunt anterioare valorilor implicite moderne, iar o aplicație desktop poate aduce propriul motor, diferit de pachetul de linie de comandă instalat alături. Faceți verificările pe executabilul care a pornit efectiv conexiunea, apoi alegeți o compilare acceptată în loc să învățați un program vechi un algoritm nou.
openvpn --version openvpn --show-ciphers | grep -i gcm openvpn --show-tls | head -5
Dacă AES-256-GCM nu apare în acea listă, nicio linie a profilului nu îl adaugă. Soluția este un client mai nou sau altă compilare, iar limitările părții mai vechi devin o întrebare de proiectare separată.
La clienții bazați pe OpenVPN 3, motorul și directivele acceptate diferă de linia comunitară 2.x, așa că același text de profil poate eșua din motive care nu au legătură cu lista de cifruri.
O lipsă la negociere
Când ambele perechi enumeră algoritmul, întrebarea rămasă este ce listă oferă fiecare parte. OpenVPN comunitar a redenumit directiva de negociere: ncp-ciphers în 2.4 a devenit data-ciphers în 2.5, iar în 2.6 linia cipher veche servește mai ales compatibilității și revenirii, nu definirii setului negociat.
De aceea modificarea doar a unei linii cipher vechi poate lăsa lista de negociere neatinsă. Linia veche contează în continuare pentru revenire, iar aceasta este o sarcină separată. Confundarea celor două produce modificări care nu schimbă nimic vizibil.
openvpn --version | head -2 grep -n -E '^(data-ciphers|ncp-ciphers|cipher|tls-cipher)' server.conf client.ovpn
Comparați listele celor două capete și mesajul de respingere al serverului. Dacă intersecția este goală, aliniați listele deliberat în loc să copiați o valoare dintr-un articol scris pentru altă versiune. O listă prea largă slăbește în tăcere fiecare conexiune. O listă prea îngustă exclude perechea pe care voiați să o păstrați.
Păstrați compatibilitatea explicită
O revenire pentru o pereche veche este o decizie cu un cost: întreaga implementare acceptă o opțiune mai slabă pentru ca un dispozitiv să se poată conecta. Scrieți-o ca atare și limitați-o la perechea care are nevoie.
Două condiții decid rezultatul. Dacă eroarea este locală, înlocuiți compilarea. Dacă eroarea este de negociere, aliniați listele la ambele capete și notați ce versiuni acceptați.
Apoi raportați eroarea exactă cu ieșirea de versiune și capacități atașată. Acea pereche separă un algoritm lipsă de o neînțelegere și oprește următoarea rundă de modificări speculative înainte de a începe.