Kriptografijos bibliotekos pervadinimas nesutaisys seno kliento
Simbolinė nuoroda pakeičia, kurį failą atidaro įkroviklis, o ne sąsają, kuriai buvo sukompiliuotas dvejetainis failas. Prieš liesdami bet kurią biblioteką, patikrinkite gedimo tipą.
Peržiūrėkite įkroviklio klaidą iš eilės: kurio failo trūksta, kokią architektūrą naudoja dvejetainis failas, kokio simbolio jis norėjo ir ar gedimas įvyko prieš procesui prasidedant, ar po to. Tai keturios skirtingos problemos, o simbolinė nuoroda sprendžia tik pirmąją. Vykdant jas iš eilės išvengiama įprasto rezultato, kai klientas paleidžiamas ir tada sugenda per pirmąjį handshake. Sąrašas baigiamas patikra per tikrąjį paleidiklį, o ne rankiniu bandymu.
Prieš ką nors keisdami, pažodžiui užrašykite vykdomojo failo kelią, jo architektūrą ir pirmąją klaidą.
Keturi skirtingi gedimai už vienos klaidos
Trūkstamas bendras objektas yra failo paieškos problema: įkroviklis ieškojo vardo ir nieko nerado. Trūkstamas simbolis yra sąsajos problema: failas egzistuoja ir neeksportuoja to, į ką nurodo dvejetainis failas. Simbolio versijos nesutapimas yra ta pati klasė su daugiau detalių. Po paleidimo praneštas nepalaikomas algoritmas yra elgsenos pokytis bibliotekoje, kuri įkelta sėkmingai. Kiekvienas reikalauja kito atsako, ir tik pirmasis yra pavadinimo klausimas.
ldd dvejetainiam failui ir readelf -d jo dinaminei sekcijai rodo, ko jis reikalauja, ir to paprastai pakanka atskirti failo problemą nuo sąsajos problemos.
Ko iš tikrųjų reikalauja OpenSSL 3
OpenSSL 3 migracijos vadovas tai sako tiesiogiai: programos, sukompiliuotos su ankstesnėmis versijomis, turi būti bent jau perkompiliuotos, o šaltinio kodo suderinamumas negarantuojamas. Sąsajos pasikeitė, o kai kurios buvo pasenusios arba pašalintos. Failo pavadinimo slapyvardis negali atlikti perkompiliavimo ir negali išmokyti seno dvejetainio failo naujos sąsajos. Naujesnės bibliotekos susiejimas su seniau atrodančiu pavadinimu sukuria programą, kuri gali pasileisti ir po to sugesti daug mažiau akivaizdžioje vietoje.
Tai blogiau nei švarus gedimas. Įkroviklio klaida iškart įvardija problemą, o vėlyvas gedimas operacijos viduje atrodo kaip tinklo ar prisijungimo duomenų problema ir nukreipia tyrimą netinkama linkme.
Kodėl platinimo biblioteka yra netinkama vieta
Platinimo bibliotekos pakeitimas vienam klientui patenkinti keičia aplinką kiekvienai mašinos programai, įskaitant saugos atnaujinimus ir viską, kas remiasi esama sąsaja. Senos bibliotekos kopijavimas šalia dvejetainio failo yra siauresnis, tačiau vis tiek sukuria priklausomybę, kurią kas nors turi prižiūrėti ir lopyti. Nė vienas nėra patvirtintas suderinamumo kelias, net kai atrodo, kad veikia tą dieną, kai taikoma. Po eksperimento paliktas globalus slapyvardis yra blogesnis, nes niekas neprisimena, kodėl jis egzistuoja.
Naudokite tiekėjo palaikomą klientą ir priklausomybių rinkinį faktinei OS versijai, architektūrai ir tinklų sietuvui. Vienam žmogui veikęs paketo formatas neįrodo teisingo dabartinio kelio, o archyvuotas receptas yra praeities įrodymas.
Tikrinkite paleidiklį, o ne paleidimą
Po palaikomo pakeitimo patikrinkite, ką išsprendžia įprastas paleidiklis: ldd įdiegtam vykdomajam failui, jo įvardijamoms bibliotekų versijoms ir aplinkai, kurią perduoda tarnyba. Tada paleiskite numatytą autentifikavimą ir vieną tikrą operaciją. Rankinis iškvietimas su pakeista aplinka įrodo tik tai, kad jūsų shell gali jį paleisti. Vartotojai iš tikrųjų paleidžia paleidiklį, darbalaukio įrašą ar tarnybos vienetą.
Jei palaikomo surinkimo nėra, paklauskite VPN savininko apie alternatyvą ar migracijos kelią. Tylus perėjimas prie kito protokolo ar prielaida, kad klientas su pažįstamu tiekėjo pavadinimu tenkina tinklų sietuvą, perkelia gedimą, o ne jį ištaiso.
Kai laikinas suderinamumo susitarimas neišvengiamas, dokumentuokite jį, apribokite jį tuo dvejetainiu failu ir pašalinkite, kai ateis palaikomas surinkimas.