Meddelandet säger att den privata nyckeln har fel längd, och den formuleringen pekar först på kodningen och sedan på kryptografin. WireGuard-nycklar kodar 32 byte som base64, vilket ger 44 tecken inklusive en avslutande utfyllnad, så ett värde av annan storlek är inte en nyckel hur slumpmässigt det än ser ut. Att fylla ut strängen tills parsern accepterar den ger ett välformat värde som ingen peer någonsin kommer att känna igen.

Bakom det här felet döljer sig två olika arbeten: att reparera texten i en giltig nyckel och att ersätta en identitet du inte längre har. De har olika konsekvenser, och den ena ogiltigförklarar den andra änden.

Vad parsern förväntar sig

En WireGuard-nyckel är 32 byte nyckelmaterial i base64 med standardutfyllnad, vilket ger en fast sträng på 44 tecken. Verktygen avvisar allt som inte avkodas till exakt 32 byte, eftersom den underliggande kurvan tar en skalär på 32 byte och inget annat. Publika och privata värden använder samma kodning, så parsern kan inte utifrån formatet avgöra vilken av dem du klistrade in. Den tvetydigheten orsakar hälften av förvirringen kring det här felet.

wg genkey | tee private.key | wg pubkey > public.key
base64 -d private.key | wc -c
wc -c private.key
wg show wg0 public-key

Om ditt värde avkodas till 32 byte är längden rätt och klagomålet kommer från någon annan plats i filen. Om det avkodas till något kortare har du avkortat material och inte ett formateringsproblem.

Formateringsskada eller fel material?

Formateringsskador samlas i kanterna: citattecken som ett skal lade till, en etikett som private_key kopierad tillsammans med värdet, en radbrytning infogad av en chattklient eller ett avslutande blanksteg som överlevde inklistringen. Var och en av dessa ändringar ändrar strängen utan att ändra byten, så att ta bort dem återställer den ursprungliga identiteten. Jämför filen med etableringsprotokollet tecken för tecken i stället för att ta bort skiljetecken tills parsern blir tyst.

Fel material är en annan situation. Ett lösenord, en certifikatnyckel eller ett publikt värde kan alla se trovärdiga ut och avkodas till fel storlek. Ingen rensning gör någon av dem till den skalär som peeren förväntar sig. Det fallet kräver en ny identitet i stället för en redigering.

En publik nyckel i det privata fältet

Den vanligaste förvirringen är ett publikt värde inklistrat i det privata fältet, eller tvärtom. Båda är giltig base64 på 32 byte, så längdkontrollen passerar och handskakningen misslyckas senare utan ett användbart meddelande. En privat nyckel är den skalär som producerar den publika, så du kan avgöra saken genom att härleda det publika värdet och jämföra det med vad peeren auktoriserar. När det härledda värdet inte stämmer med protokollet har du fel identitet och inte ett skrivfel.

Att byta ut klientens privata nyckel utan att uppdatera den auktoriserade publika nyckeln i andra änden återskapar samma brist på överensstämmelse, med den extra förvirringen att klientens egen fil nu ser självkonsistent ut. Ändra båda ändarna i en operation, annars felsöker nästa person fel halva.

Reparera profilen och bevisa sedan handskakningen

När nyckeln avkodas till rätt storlek och matchar det auktoriserade paret återstår profilen och rutten. Kommandona nedan genererar ett färskt par när det behövs, verifierar den avkodade storleken på en befintlig nyckel och läser det publika värde som gränssnittet faktiskt använder. Klistra aldrig in ett privat värde i ett ärende eller på en avkodningssajt.

wg genkey | tee new.key | wg pubkey > new.pub
base64 -d private.key | wc -c
ip route get 10.60.9.5
wg show wg0 latest-handshakes

Storlekskontrollen svarar på om materialet har nyckelform, och ruttfrågan svarar på om ett paket någonsin skulle nå gränssnittet. En handskakningsrad som förblir tom efter att båda kontrollerna passerat flyttar diagnosen till peerens ändpunkt och de tillåtna adresserna. Läs gränssnittets publika nyckel mot etableringsprotokollet en sista gång, eftersom en inaktuell sparad profil kan se korrekt ut medan den aktiva avviker].

Anteckna vilket värde du bytte ut och var den auktoriserade kopian finns. Nästa person som rör den här peeren måste veta vilken ände som ändrades.

Relaterade artiklar