OpenVPN refuséiert d’éischt Linn? D’Datei ass wahrscheinlech UTF-16
E Feeler an der éischter Linn mat komeschen Zeechen heescht meeschtens, datt de Profil als UTF-16 gespäichert gouf. Liest déi éischt Byten a konvertéier d’Datei duerno richteg.
De Feeler weist op déi éischt Linn vun enger .ovpn-Datei a zitéiert eppes, dat wéi duercherneen geroden Buschtawe ausgesäit, wou client stoen ergo. D’Datei geet am Editor ouni Problem op, déi éischt Linn liest client, an d’Direktiv ass ganz gewéinlech. Béid Observatioune sinn richteg, well den Editor d’Byten dekodéiert an de Client net. Wat Dir gesitt, ass bal ëmmer e Kodéierungsproblem, keen Syntaxproblem.
De Mythos: den Editor weist Iech d’Datei
En Texteditor dekodéiert Byten zu Zeechen mat enger Kodéierung, déi hien entweder erkennt oder rodet. Wa en UTF-16 rodet, gesäit d’Datei um Bildschierm perfekt aus, woubäi d’Byten drënner Puer sinn, mat engem Nullbyte no all laténgesche Buschtaf. OpenVPN liest déi Byten als Zeechen, an d’Diskrepanz erschéngt bei der éischter Direktiv, déi en ze analyséiere probéiert.
Also sinn déi siichtbar Linn an déi geliwwert Linn zwee verschidden Saachen. Déi komesch Zeechen, déi Dir gesitt, ze läschen ass eng Ännerung vun der Duerstellung, net vun der Kodéierung, an déi nächst Analyse schléit aus demselwechte Grond fehl mat enger liicht anerer Noriicht. Duerfir féiert d’Juegd op dat Zeechen am Feeler ëmmer niergendwu. D’Byten si bei der Quell falsch, an all Lieser duerno rodet déiselwecht futti Sequenz.
Déi spezifesch Form vum Feelschlag ass et wäert ze erkennen, well se op eng spezifesch Manéier diagnostesch ass. En Zeechen am alleréischt Ufank vun der Datei, an engem Profil deen soss op anere Maschinne funktionéiert huet, ass eng Fro vun der Byte-Reiefolleg an net vum Vocabulaire.
Wat déi éischt Byten tatsächlech soen
Liest d’Byten amplaz vun de Zeechen. Zwee kleng Kommandoen entscheeden dat a Sekonnen, a keent vun deenen zwee verlaangt, d’Datei an enger Applikatioun opzemaachen, déi se kéint änneren:
file client.ovpn
head -c 24 client.ovpn | od -An -tx1
D’Muster, no deem Dir sicht, ass en Duebelbyte virdrun, gefolgt vun Text, an deem all zweete Byte null ass. FF FE bezeechent UTF-16 little-endian, FE FF bezeechent big-endian, an EF BB BF bezeechent UTF-8 mat enger Byte-Order-Mark. Eng gewéinlech UTF-8-Datei ouni Mark fänkt direkt mam Byte vum éischte Buschtaf un.
Nullbyten tëschent de Buschtawen sinn den Haaptindiz. An UTF-16 little-endian hëlt d’Wuert client zwielef Byten amplaz sechs, well op all ASCII-Zeechen eng Null follegt. Déi Struktur kann Iech den Ecran vun engem Editor net weisen, an e Läschen vun zwee Byten kann se net ewechhuelen.
Hei läit eng wichteg Nuance: de Konfiguratiounslieser vun OpenVPN iwwerspréngt tatsächlech eng UTF-8-Byte-Order-Mark am Ufank vun enger Datei, wéi de Konfiguratiounslieser 2.6 weist. Déi Toleranz ass spezifesch fir déi Mark, an se mécht näischt fir eng UTF-16-Datei, deenen hir Buschtawen mat Nullen opgefëllt sinn. Déi zwou Marke wéi dat selwecht Problem ze behandelen ass déi zweet Halschent vum Mythos.
Konvertéieren ass späicheren als, net läschen
Hält eng onberéiert Kopie vum Original vum Bedreiwer, ier Dir eppes maacht, a schafft op enger separater Datei. E Profil kann e private Schlëssel oder Kontmaterial enthalen, dofir ass d’Kopie souwuel Ären Zréckwee wéi och Är Referenz.
Maacht duerno eng richteg Kodéierungskonversioun, entweder iwwer dem Editor seng explizit Kodéierungsmenü oder mat engem Konverterer, deen seng Input- an Outputkodéierung ugëtt:
iconv -f UTF-16 -t UTF-8 client.ovpn > client-utf8.ovpn
file client-utf8.ovpn
Verifizéiert d’Resultat, amplaz dem Exitstatus vum Kommando ze vertrauen. D’Konversioun soll all Direktiv erhalen, an se muss all agebaute Certificat- oder Schlësselblock Byte fir Byte bannent senge Markéierungen erhalen. PEM-Daten nei ëmzeleeën, d’Linnendungen an engem Block ze änneren oder de Profil wärend der Konversioun nei ze formatéieren schaaft en neit Problem, während dat aalt behuewe gëtt.
Richt de Client oder de Service op déi konvertéiert Datei a kuckt op den éischte Feeler, deen en mëttelt. Wann dat duercherneen Zeechen fort ass, ass d’Kodéierungsaarbecht fäerdeg an alles, wat duerno fehlschléit, ass eng aner Fro.
Wat eng behuewe Kodéierung net behieft
Kodéierung bestëmmt, wéi Text gelies gëtt; se seet näischt doriwwer, ob d’Optiounen fir de Client virun Iech gülteg sinn. E Profil, deen fir eng aner Implementatioun exportéiert gouf, kann propper analyséiert ginn a gëtt trotzdem ofgeleent wéinst enger Optioun, déi de lafende Build net ënnerstëtzt, oder wéinst enger Direktiv, deenen hiert Argument an deem Client eppes anescht bedeit.
Déi spéider Feeler verdéngen hir eege Enquête: déi genau Schreifweis, d’Syntax vum Argument an d’Versioun, déi et akzeptéiert. Betruecht eng gelungen Analyse net als e gelungene Profil.
Hält d’Enquête lokal, während Dir domat beschäftegt sidd. Ëffentlech Online-Konverterer an agefougt Hex-Dumps sinn eng schlecht Plaz fir eng Datei, déi e private Schlëssel kéint enthalen, well de Kodéierungsproblem ass einfach ze behiewen an e geleete Schlëssel net.