Xabar OpenVPN ichki sertifikatni yuklay olmaydi deydi, ammo xotirangizdagi fayl nomi buning aksini aytadi. Parser nima olgani fayl tizimida nima borligidan muhimroq, chunki cert direktivasi butunlay boshqa ikki turdagi qiymatni qabul qiladi. Biri u ochadigan yo'l; ikkinchisi konfiguratsiya ichida kelgan PEM matni. Ishlab turgan klient qaysi shaklni olganini bilmaguningizcha har bir tuzatish taxmin bo'lib qoladi.

Ikki saqlash shakli, bitta direktiva

cert, key va ca direktivalari har biri yo'l yoki ichki blokni qabul qiladi. Qiymat yo'l bo'lsa, OpenVPN o'sha faylni ochadi va obyektni diskdan o'qiydi. Konfiguratsiyada cert teglari bilan chegaralangan blok bo'lsa, xuddi shu direktiva uning o'rniga shu teglar orasidagi tarkibni ishlatadi va alohida fayl ishtirok etmaydi.

Ikkala shakl oxir-oqibat bir xil turdagi obyekt beradi, shuning uchun ishlaydigan joylashtirish boshqa hech qanday o'zgarishsiz ular orasida o'ta oladi. Ichiga joylashtirilgan klient sertifikati va maxfiy kalitni olib yuruvchi profil o'zini o'zi ta'minlaydi va uni boshqa mashinaga ko'chirish sertifikatlar jildini ham ko'chirmasdan ishlaydi.

Buning aksi to'g'ri emas. O'z ma'lumotlarini ichiga joylashtiruvchi profil yoniga client.crt qo'yish hech narsani o'zgartirmaydi, chunki konfiguratsiyada hech narsa o'sha faylga ishora qilmaydi. Aniq mavjud faylning e'tiborsiz qolayotgandek ko'rinishining eng keng tarqalgan sababi shu.

Ichki blok qanday qilib obyektga aylanadi

Ichki tarkib konfiguratsiyadan ajratib olinadi va matn sifatida PEM parseriga beriladi. Bu parser odatdagi chegaralarni kutadi: BEGIN satri, base64 yuklamasi va mos keluvchi END satri. Agar blok muvaffaqiyatsiz nusxa sababli kesilgan, yuklab olish sahifasi tomonidan HTML ichiga o'ralgan yoki chiziqchalarni normallashtirgan muharrirda ochilgan bo'lsa, parser mavjud bo'lib ko'rinadigan tarkibda muvaffaqiyatsizlikka uchraydi.

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

Xato so'zlari chalg'ituvchi bo'lishining sababi ham shu. Ichki so'zi yuklovchi qayerga qaraganini tasvirlaydi, u yerda nima topganini emas. Konfiguratsiyada nomlangan fayl va unga joylashtirilgan obyekt, asosiy baytlar yaroqsiz bo'lganda bir xil shikoyat keltirib chiqarishi mumkin.

Yuklangan profil aslida qaysi shaklni ishlatishini tekshiring, muharriringiz tasodifan qaysi faylni ochganini emas:

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

Yo'l havolasi qanday hal qilinadi

Yo'l qiymati klientning ish jildiga nisbatan ochiladi, konfiguratsiyani o'z ichiga olgan jildga nisbatan emas. systemd ostida bu ish jildi unit belgilagan narsadir, sizning shellingizdan interaktiv ishga tushirish esa butunlay boshqa narsani meros oladi. Shuning uchun bir xil konfiguratsiya fayli qo'lda sinab ko'rilganda ishlashi, xizmat sifatida esa muvaffaqiyatsiz bo'lishi mumkin.

Nisbiy yo'llar ham xuddi shu noaniqlikni meros oladi. Yalang'och fayl nomini ko'rganingizda, terminalingizga mos keladi deb o'ylash o'rniga ishlab chiqarishda jarayonning joriy jildi nima ekanini so'rang.

Alohida saqlanadigan sertifikat uchun oflayn tahlil obyektni uning ustida biror narsani tuzatishdan oldin tasdiqlaydi:

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

Bu buyruqlar fayllar o'qilishini va tuzilma jihatidan yaroqli ekanini isbotlaydi. Ular hamkor chiqaruvchiga ishonishini, sertifikat hali amal qilish muddati ichida ekanini yoki kalit o'shaniki ekanini isbotlamaydi.

Parser xatosi nima deyishi mumkin va nima deyishi mumkin emas

Tahlil muvaffaqiyatsizligi muammoni bitta kirish va bitta bosqichga chegaralaydi. U klient ikki saqlash shaklidan qaysi birini ishlatganini aytmaydi va obyekt qabul qilinarmidi, buni ham aytmaydi. Bu alohida dalillarga ega alohida savollardir.

Tahlil muvaffaqiyatli bo'lgach, keyingi muvaffaqiyatsizlik keyinroq bosqichga tegishli. Ishonch rad etilishini, maqsad nomuvofiqligini yoki kalit nomuvofiqligini yuklovchi emas, hamkor yoki TLS qatlami xabar qiladi. Bir xil faylni qayta-qayta almashtirish bu xatoni joyidan qo'zg'atmaydi.

Tekshiruv davomida nozik yarmini ommaviy hisobotlardan tashqarida saqlang. Direktiva nomlarini, xato matnini va blok tuzilmasini ulashing, kalit materiali va har qanday identifikatsiyalovchi yuklamani olib tashlang. openvpn(8) qo'llanmasi fayl direktivalarining ikkala shaklini va ular orqasidagi ish jildi xatti-harakatini hujjatlashtiradi.

O'xshash maqolalar