It berjocht seit dat OpenVPN in ynline sertifikaat net lade kin, en de bestandsnamme dy't yn jo holle sit seit oars. Wat de parser krige is wichtiger as wat it bestandssysteem befettet, want de cert-rjochtline akseptearret twa folslein ferskillende soarten wearde. Ien is in paad dat er iepenet; de oare is PEM-tekst dy't binnen de konfiguraasje oankaam. Oant jo witte hokker foarm de rinnende klant krige, is elke reparaasje in gissing.

Twa opslachfoarmen, ien rjochtline

De rjochtlinen cert, key en ca akseptearje elk in paad of in ynline blok. As de wearde in paad is, iepenet OpenVPN dat bestân en lêst it objekt fan 'e skiif. As de konfiguraasje in blok befettet dat troch cert-tags begrinze wurdt, brûkt deselde rjochtline ynstee de ynhâld tusken dy tags, en gjin apart bestân is belutsen.

Beide foarmen leverje úteinlik itselde soarte objekt, dêrom kin in wurkjende útrulling sûnder oare feroaring tusken har wikselje. In profyl dat in ynbêde kliïntsertifikaat en priveekaai draacht is selsstannich, en it kopiearjen nei in oare masine wurket sûnder ek in sertifikaatmap te kopiearjen.

It omkearde is net wier. client.crt njonken in profyl lizze dat syn eigen gegevens ynbêdet, feroaret neat, want neat yn 'e konfiguraasje ferwiist nei dat bestân. Dit is de meast foarkommende reden dat in bestân dat dúdlik bestiet, negearre liket te wurden.

Hoe't in ynline blok in objekt wurdt

Ynline ynhâld wurdt út 'e konfiguraasje helle en as tekst oan 'e PEM-parser jûn. Dy parser ferwachtet de gewoane grinzen: in BEGIN-rigel, base64-lading en in byhearrende END-rigel. As it blok troch in mislearre kopy ôfknipt is, troch in downloadside yn HTML ferpakt is of iepene is yn in bewurker dy't de streepkes normalisearre hat, mislearret de parser op ynhâld dy't oanwêzich liket.

<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>

Dêrom is de flaterbewurding ek misliedend. It wurd ynline beskriuwt wêr't de lader seach, net wat er dêr fûn. In bestân dat yn in konfiguraasje neamd wurdt en in objekt dat dêryn ynbêde is, kinne deselde klacht opleverje as de ûnderlizzende bytes ûnbrûkber binne.

Kontrolearje hokker foarm it laden profyl eins brûkt, net hokker bestân jo bewurker tafallich iepene hat:

grep -nE '^(ca|cert|key) |^<(ca|cert|key)>' client.ovpn

Hoe't in paadferwizing oplost wurdt

In paadwearde wurdt iepene relatyf oan 'e wurkmap fan 'e klant, net oan 'e map dy't de konfiguraasje befettet. Under systemd is dy wurkmap wat de unit ynstelt, en in ynteraktive rinnen út jo shell erft hiel wat oars. Dêrom kin itselde konfiguraasjebestân wurkje as jo it mei de hân testenje en mislearje as tsjinst.

Relative paden ervje deselde dûbelsinnigens. As jo in keale bestandsnamme sjogge, freegje dan wat de hjoeddeiske map fan it proses yn produksje is, ynstee fan oan te nimmen dat dy oerienkomt mei jo terminal.

Foar in sertifikaat dat apart bewarre wurdt, befestiget in offline-parse it objekt foardat jo eat boppe it debugge:

openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check

Dy opdrachten bewiize dat de bestannen lêsber en struktureel jildich binne. Se bewiize net dat de peet de útjouwer fertrout, dat it sertifikaat noch binnen syn jildichheidsfinster is of dat de kaai derby heart.

Wat de parserflater jo wol en net fertelle kin

In parseflater lokalisearet it probleem nei ien ynfier en ien stadium. It fertelt jo net hokker fan 'e twa opslachfoarmen de klant brûkte, en it fertelt jo net oft it objekt akseptearre wurde soe. Dat binne aparte fragen mei aparte bewiizen.

Sadree't it parsen slagget, heart de folgjende flater by in letter stadium. In fertrouwensôfwizing, in doelôfwiking of in kaaiôfwiking wurdt rapportearre troch de peet of troch de TLS-laach, net troch de lader. It hieltyd ferfangen fan itselde bestân sil dy flater net ferpleatse.

Hâld de gefoelige helte bûten iepenbiere rapporten wylst jo ûndersykje. Diel de rjochtlinenammen, de flatertekst en de struktuer fan it blok, mei it kaaimateriaal en alle identifisearjende lading fuorthelle. De openvpn(8)-hânlieding dokumintearret beide foarmen fan 'e bestandsrjochtlinen en it wurkmapgedrach dêrefter.

Relatearre artikelen