Хабарлама OpenVPN кірістірілген сертификатты жүктей алмайды дейді, ал сіздің жадыңыздағы файл атауы керісінше дейді. Талдағыштың не алғаны файл жүйесінде не бар екенінен маңыздырақ, өйткені cert директивасы мүлдем басқа екі мән түрін қабылдайды. Біреуі — ол ашатын жол; екіншісі — конфигурацияның ішінде келген PEM мәтіні. Жұмыс істеп тұрған клиент қандай пішін алғанын білмейінше, әр түзету болжам ғана.

Екі сақтау пішіні, бір директива

cert, key және ca директиваларының әрқайсысы жолды немесе кірістірілген блокты қабылдайды. Мән жол болса, OpenVPN сол файлды ашып, нысанды дискіден оқиды. Конфигурацияда cert тегтерімен шектелген блок болса, сол директива оның орнына осы тегтер арасындағы мазмұнды пайдаланады, ал бөлек файл қатыспайды.

Екі пішін де соңында бірдей нысан түрін шығарады, сондықтан жұмыс істейтін орналастыру басқа өзгеріссіз олардың арасында ауыса алады. Ішіне кірістірілген клиент сертификаты мен жеке кілтті тасымалдайтын профиль өзін-өзі қамтамасыз етеді, оны басқа машинаға көшіру сертификат каталогын да көшірмей-ақ жұмыс істейді.

Керісінше дұрыс емес. Өз деректерін ішіне кірістіретін профильдің жанына client.crt салу ештеңені өзгертпейді, өйткені конфигурацияда ештеңе сол файлға сілтемейді. Анық бар файлдың еленбейтін болып көрінуінің ең жиі себебі осы.

Кірістірілген блок қалай нысанға айналады

Кірістірілген мазмұн конфигурациядан алынып, PEM талдағышына мәтін ретінде беріледі. Ол талдағыш әдеттегі шекараларды күтеді: BEGIN жолы, base64 жүктемесі және сәйкес END жолы. Егер блок сәтсіз көшірмеден қиылып қалса, жүктеу беті оны HTML-ге орап қойса немесе сызықшаларды қалыпқа келтірген редакторда ашылса, талдағыш бар болып көрінетін мазмұнда сәтсіздікке ұшырайды.

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

Сондықтан қате мәтіні де жаңылыстырады. Кірістірілген деген сөз жүктегіштің қайдан қарағанын сипаттайды, ол жерден нені тапқанын емес. Конфигурацияда аталған файл мен оған кірістірілген нысан негізгі байттар жарамсыз болғанда бірдей шағым тудыра алады.

Жүктелген профиль шын мәнінде қандай пішінді қолданатынын тексеріңіз, редакторыңыз кездейсоқ қандай файлды ашқанын емес:

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

Жол сілтемесі қалай шешіледі

Жол мәні клиенттің жұмыс каталогына қатысты ашылады, конфигурацияны қамтитын каталогқа қатысты емес. systemd астында бұл жұмыс каталогы — юнит белгілейтін нәрсе, ал сіздің қабықшаңыздан интерактивті іске қосу мүлдем басқа нәрсені мұраға алады. Сондықтан бір конфигурация файлы қолмен сынағанда жұмыс істеп, қызмет ретінде сәтсіздікке ұшырауы мүмкін.

Салыстырмалы жолдар сол бір мағынасыздықты мұраға алады. Жалаң файл атауын көргенде, терминалыңызға сәйкес келеді деп болжамай, өндірісте процестің ағымдағы каталогы қандай екенін сұраңыз.

Бөлек сақталған сертификат үшін офлайн талдау нысанды оның үстінде бірдеңені жөндеуден бұрын растайды:

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

Бұл пәрмендер файлдардың оқылатынын және құрылымдық тұрғыдан жарамды екенін дәлелдейді. Олар серіктестің шығарушыға сенетінін, сертификаттың әлі де жарамдылық терезесінде екенін немесе кілттің соған тиесілі екенін дәлелдемейді.

Талдағыш қатесі нені айта алады және нені айта алмайды

Талдау сәтсіздігі мәселені бір кіріс пен бір кезеңге шектейді. Ол клиенттің екі сақтау пішінінің қайсысын қолданғанын айтпайды және нысан қабылданар ма еді, оны да айтпайды. Бұлар жеке дәлелдері бар жеке сұрақтар.

Талдау сәтті болғаннан кейін келесі сәтсіздік кейінгі кезеңге жатады. Сенімнен бас тартуды, мақсаттың сәйкессіздігін немесе кілттің сәйкессіздігін жүктегіш емес, серіктес немесе TLS қабаты хабарлайды. Бір файлды қайта-қайта ауыстыру сол қатені жылжытпайды.

Тексеру кезінде сезімтал жартысын жария есептерден тыс ұстаңыз. Директива атауларын, қате мәтінін және блок құрылымын бөлісіңіз, кілт материалы мен кез келген сәйкестендіретін жүктемені алып тастаңыз. openvpn(8) нұсқаулығы файл директиваларының екі пішінін де және олардың артындағы жұмыс каталогының әрекетін құжаттайды.

Қатысты мақалалар