Mae’r neges yn dweud nad yw OpenVPN yn gallu llwytho tystysgrif fewnol, ac mae enw’r ffeil sydd yn eich pen yn dweud yn wahanol. Mae’r hyn a gafodd y parser yn bwysicach na’r hyn sydd yn y system ffeiliau, oherwydd bod y gyfarwyddeb cert yn derbyn dau fath hollol wahanol o werth. Un yw llwybr y mae’n ei agor; y llall yw testun PEM a gyrhaeddodd y tu mewn i’r cyfluniad. Hyd nes y gwyddoch pa ffurf a roddwyd i’r cleient sy’n rhedeg, mae pob atgyweiriad yn ddyfaliad.

Dau ffurf storio, un gyfarwyddeb

Mae’r cyfarwyddebau cert, key a ca bob un yn derbyn llwybr neu floc mewnol. Pan fo’r gwerth yn llwybr, mae OpenVPN yn agor y ffeil honno ac yn darllen y gwrthrych o’r disg. Pan fo’r cyfluniad yn cynnwys bloc wedi’i amgáu gan dagiau cert, mae’r un gyfarwyddeb yn defnyddio’r cynnwys rhwng y tagiau hynny yn lle hynny, ac nid oes ffeil ar wahân yn rhan o’r mater.

Mae’r ddau ffurf yn cynhyrchu’r un math o wrthrych yn y diwedd, a dyna pam y gall defnydd gweithredol symud rhyngddynt heb unrhyw newid arall. Mae proffil sy’n cario tystysgrif cleient a allwedd breifat fewnol yn hunangynhwysol, ac mae ei gopïo i beiriant arall yn gweithio heb gopïo cyfeiriadur tystysgrifau hefyd.

Nid yw’r gwrthwyneb yn wir. Nid yw gollwng client.crt wrth ymyl proffil sy’n mewnblannu ei ddata ei hun yn newid dim, oherwydd nid oes dim yn y cyfluniad yn cyfeirio at y ffeil honno. Dyma’r rheswm mwyaf cyffredin pam y mae ffeil sy’n amlwg yn bodoli yn ymddangos fel pe bai’n cael ei hanwybyddu.

Sut mae bloc mewnol yn troi yn wrthrych

Mae cynnwys mewnol yn cael ei dynnu o’r cyfluniad a’i drosglwyddo i’r parser PEM fel testun. Mae’r parser hwnnw’n disgwyl y ffiniau arferol: llinell BEGIN, llwyth base64, a llinell END sy’n cyfateb. Os yw’r bloc wedi cael ei dorri gan gopi a fethodd, ei lapio mewn HTML gan dudalen lawrlwytho, neu ei agor mewn golygydd a normaleiddiodd y llinellau toredig, mae’r parser yn methu ar gynnwys sy’n edrych yn bresennol.

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

Dyna hefyd pam mae geiriad y gwall yn gamarweiniol. Mae’r gair mewnol yn disgrifio lle’r edrychodd y llwythwr, nid beth a ganfu yno. Gall ffeil a enwir mewn cyfluniad a gwrthrych sydd wedi’i fewnblannu ynddi gynhyrchu’r un gŵyn pan fo’r beitiau sylfaenol yn annefnyddiadwy.

Gwiriwch ba ffurf y mae’r proffil llwythog yn ei defnyddio mewn gwirionedd, yn hytrach na pha ffeil y digwyddodd eich golygydd ei hagor:

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

Sut mae cyfeiriad llwybr yn cael ei ddatrys

Mae gwerth llwybr yn cael ei agor yn gymharol â chyfeiriadur gwaith y cleient, nid â’r cyfeiriadur sy’n cynnwys y cyfluniad. O dan systemd, y cyfeiriadur gwaith hwnnw yw’r hyn y mae’r uned yn ei osod, ac mae rhediad rhyngweithiol o’ch cragen yn etifeddu rhywbeth hollol wahanol. Dyma pam y gall yr un ffeil gyfluniad weithio pan fyddwch yn ei phrofi â llaw a methu fel gwasanaeth.

Mae llwybrau cymharol yn etifeddu’r un amwysedd. Pan welwch enw ffeil noeth, gofynnwch beth yw cyfeiriadur presennol y broses mewn cynhyrchiad yn hytrach na chymryd yn ganiataol ei fod yn cyfateb i’ch terfynell.

Ar gyfer tystysgrif sydd wedi’i storio ar wahân, mae dosrannu all-lein yn cadarnhau’r gwrthrych cyn i chi ddadfygio unrhyw beth uwch ei ben:

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

Mae’r gorchmynion hynny’n profi bod y ffeiliau’n ddarllenadwy ac yn ddilys yn strwythurol. Nid ydynt yn profi bod y cymar yn ymddiried yn y cyhoeddwr, bod y dystysgrif yn dal o fewn ei ffenestr ddilysrwydd, neu fod yr allwedd yn perthyn iddi.

Beth all gwall y parser ei ddweud a beth na all

Mae methiant dosrannu yn lleoli’r broblem mewn un mewnbwn ac un cam. Nid yw’n dweud pa un o’r dau ffurf storio a ddefnyddiodd y cleient, ac nid yw’n dweud a fyddai’r gwrthrych wedi cael ei dderbyn. Mae’r rhain yn gwestiynau ar wahân gyda thystiolaeth ar wahân.

Unwaith y bydd dosrannu yn llwyddo, mae’r methiant nesaf yn perthyn i gam diweddarach. Mae gwrthodiad ymddiriedaeth, anghydweddiad pwrpas neu anghydweddiad allwedd yn cael ei riportio gan y cymar neu gan haen TLS, nid gan y llwythwr. Ni fydd disodli’r un ffeil dro ar ôl tro yn symud y gwall hwnnw.

Cadwch y hanner sensitif allan o adroddiadau cyhoeddus tra byddwch yn ymchwilio. Rhannwch enwau’r cyfarwyddebau, testun y gwall a strwythur y bloc, gyda’r deunydd allweddol a unrhyw lwyth adnabyddadwy wedi’i dynnu. Mae llawlyfr openvpn(8) yn dogfennu dau ffurf y cyfarwyddebau ffeil a’r ymddygiad cyfeiriadur gwaith y tu ôl iddynt.

Erthyglau cysylltiedig