Meldinga seier at OpenVPN ikkje kan lasta inn eit innebygd sertifikat, og filnamnet du har i hovudet seier noko anna. Det parsaren tok imot tyder meir enn det filsystemet inneheld, fordi direktivet cert godtek to heilt ulike slag verdiar. Den eine er ein sti han opnar; den andre er PEM-tekst som kom inn i konfigurasjonen. Til du veit kva form den køyrande klienten fekk, er kvar retting ei gjetting.

To lagringsformer, eitt direktiv

Direktiva cert, key og ca godtek kvar ein sti eller ein innebygd blokk. Når verdien er ein sti, opnar OpenVPN fila og les objektet frå disken. Når konfigurasjonen inneheld ein blokk som er avgrensa av cert-taggar, brukar det same direktivet i staden innhaldet mellom desse taggane, og inga særskild fil er involvert.

Begge formene gjev til slutt same slags objekt, difor kan ein fungerande utrulling byta mellom dei utan noka anna endring. Ein profil som ber eit innebygd klientsertifikat og ein privat nøkkel, er sjølvstendig, og det å kopiera han til ein annan maskin verkar utan òg å kopiera ei sertifikatmappe.

Det motsette er ikkje sant. Å leggja client.crt ved sida av ein profil som byggjer inn eigne data endrar ingenting, fordi ingenting i konfigurasjonen viser til den fila. Dette er den vanlegaste grunnen til at ei fil som tydeleg finst ser ut til å bli ignorert.

Korleis ein innebygd blokk blir eit objekt

Innebygd innhald blir trekt ut av konfigurasjonen og gjeve til PEM-parsaren som tekst. Den parsaren ventar dei vanlege grensene: ei BEGIN-linje, ei base64-nyttelast og ei samsvarande END-linje. Viss blokka vart kutta av ein mislukka kopi, pakka inn i HTML av ei nedlastingsside eller opna i ein editor som normaliserte bindestrekane, feilar parsaren på innhald som ser ut til å vera til stades.

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

Det er òg difor feilformuleringa er misvisande. Ordet innebygd skildrar kvar innlastaren såg, ikkje kva han fann der. Ei fil som er namngjeven i ein konfigurasjon, og eit objekt som er bygt inn i han, kan gje same klaga når dei underliggjande byta er ubrukelege.

Kontroller kva form den innlasta profilen faktisk brukar, ikkje kva fil editoren din tilfeldigvis opna:

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

Korleis ein stireferanse blir løyst

Ein stiverdi blir opna relativt til arbeidskatalogen til klienten, ikkje til katalogen som inneheld konfigurasjonen. Under systemd er den arbeidskatalogen det eininga set, og ein interaktiv køyring frå skalet ditt arvar noko heilt anna. Difor kan den same konfigurasjonsfila verka når du testar henne for hand og feila som teneste.

Relative stiar arvar den same tvitydigheita. Når du ser eit bart filnamn, spør kva gjeldande katalog for prosessen er i produksjon i staden for å gå ut frå at han svarar til terminalen din.

For eit sertifikat som er lagra separat, stadfester ein fråkopla parsing objektet før du feilsøkjer noko over det:

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

Desse kommandoane beviser at filene er lesbare og strukturelt gyldige. Dei beviser ikkje at motparten stolar på utferdaren, at sertifikatet framleis er innanfor gyldigheitsvindauget, eller at nøkkelen høyrer til det.

Kva parsefeilen kan og ikkje kan fortelja deg

Ein parsefeil lokaliserer problemet til éin inndata og eitt trinn. Han fortel deg ikkje kva av dei to lagringsformene klienten brukte, og han fortel deg ikkje om objektet ville blitt godteke. Det er særskilde spørsmål med særskilde bevis.

Når parseringa lukkast, høyrer neste feil til eit seinare trinn. Ei tillitsavvising, eit formålsavvik eller eit nøkkelavvik blir rapportert av motparten eller av TLS-laget, ikkje av innlastaren. Å byta ut den same fila gong på gong flyttar ikkje den feilen.

Hald den følsame helvta unna offentlege rapportar medan du granskar. Del direktivnamna, feilteksten og strukturen i blokka, med nøkkelmaterialet og kvar identifiserande nyttelast fjerna. openvpn(8)-handboka dokumenterer begge formene for fildirektiva og arbeidskatalogåtferda bak dei.

Relaterte artiklar