OpenSSL allaqachon o'rnatilgan, xostda entropiya bor, va u bilan kalit yaratish ko'zga tashlanadigan qisqa yo'l bo'lib tuyuladi. Natija tasodifiy va maxfiy va mutlaqo yaroqsiz bo'ladi, xatolik esa kalit formatini eslatuvchi narsa o'rniga boshqaruv kanali xatosi sifatida keladi. Aynan shu chalg'itish qimmat qismdir, chunki u odamlarni shifrlarini tekshirishga yuboradi. VPN o'qiydigan narsa aniq fayl tuzilishi, tasodifiy bayt bloki emas, va xususiyatning bir varianti serverni tashqarisida umuman ishlab chiqarilmaydi.

Diskdagi fayl aslida qanday bo'lishi kerak

OpenVPN statik kalit fayli matndir. U nima ekanini e'lon qiluvchi izoh satri bilan boshlanadi, qat'iy kenglikdagi satrlarda hex ma'lumotlarini olib yuradi va jami 256 bayt kalit materialini tashkil qiladi. OpenVPN uni boshqaruv kanalining umumiy siri sifatida o'qiydi, sertifikat sifatida emas, parol iborasi sifatida emas va TLS kutubxonasi taniydigan narsa sifatida ham emas.

Xuddi shu obyekt turi boshqaruv kanalining ikkala xususiyatiga ham xizmat qiladi. tls-auth bilan har bir peer qo'shimcha yo'nalishga ham muhtoj, shunda bir tomonning paketlari unga qaytarib aks ettirilmaydi. tls-crypt bilan bitta umumiy sir boshqaruv kanalini ikki yo'nalishda ham shifrlaydi va autentifikatsiya qiladi, bu qo'l siqishni yashiradi va ayni paytda himoya qiladi.

Bularning hech biri maxfiy bilim emas, format esa asosiy masala emas. Asosiy masala shundaki, fayl o'quvchi kutgan narsaga to'liq mos kelishi kerak: sarlavha, satr kengligi, oxirgi yangi satr va umumiy uzunlik. Bir satr xato fayl axlat sifatida yuklanadi yoki butunlay muvaffaqiyatsiz bo'ladi. Shuning uchun ikki peerni bayt-bayt taqqoslash qonuniy birinchi sinovdir va u ikki konfiguratsiya faylidan birini o'qishdan tezroq.

Bittasini yaratishning qo'llab-quvvatlanadigan usuli

Oddiy statik kalitni uni ishlatadigan asbob bilan yarating, so'ngra ikki tomondan unga murojaat qiling:

openvpn --genkey secret /etc/openvpn/tc-shared.key
tls-crypt /etc/openvpn/tc-shared.key

Opsiyaning yozilishi vaqt o'tishi bilan o'zgardi: 2.4 davrining eski o'rnatishlari fayl nomidan oldin alohida bayroqli shaklni ishlatgan, hozirgi buildlar esa qisqasini qabul qiladi. Qanday bo'lsa ham, natijada hosil bo'lgan fayl xuddi shu obyekt turi, shuning uchun tekshiruv ikki peerda ham bir xil baytlar bor-yo'qligida.

Ikkinchi avlod hech qanday tashqi generator o'ylab topa olmaydigan tuzilmani qo'shadi. Server kaliti bir marta yaratiladi, va har bir mijoz undan olingan o'ralgan kalitni oladi:

openvpn --genkey tls-crypt-v2-server /etc/openvpn/tc-v2-server.key
openvpn --genkey tls-crypt-v2-client /etc/openvpn/laptop1.key --tls-crypt-v2 /etc/openvpn/tc-v2-server.key

Mijoz oladigan narsa serverning o'z kalitining nusxasi emas. Bu faqat server ocha oladigan metama'lumotlarni olib yuruvchi o'ralgan obyekt, va aynan shu o'rash tufayli bitta qurilma uchun faylni boshqa hech qanday qurilmaga tegmasdan bekor qilish mumkin. Server kalitini serverda saqlang va uni shu qurilma bo'yicha ishonchning ildizi deb biling.

Qo'lda yasalgan baytlar qayerda buziladi

256 tasodifiy baytni to'g'ri sarlavha ostida hex sifatida chop etish nazariy jihatdan yuklanadigan statik kalit faylini beradi. Bu baribir yomon fikr. Har bir formatlash tafsiloti yuklashda muvaffaqiyatsiz bo'ladigan yoki, undan yomoni, ikki peerni faqat autentifikatsiya xatosi sifatida ko'rinadigan turli qiymatlar bilan qoldiradigan material ishlab chiqarish imkoniyatiga aylanadi.

v2 varianti bilan shunga o'xshash hech narsa mumkin emas. O'ralgan mijoz kaliti faqat server kaliti jarayonining chiqishi sifatida mavjud, va server uni ochish uchun kerakli materialni saqlaydi. Tasodifiy blok rad etiladi yoki shunchaki shifrini ocha olmaydi, va ikki xabarning hech biri tasodifiylikni eslatmaydi.

Versiya mosligi bularning barchasi ustida turadi. Birinchi avlod ikki tomonda ham uni qo'llab-quvvatlaydigan versiyani talab qiladi, ikkinchisi esa yana yangiroq versiyani talab qiladi. Xususiyat paydo bo'lishidan oldin qurilgan mijoz faqat o'ralgan materialni qabul qiladigan server bilan qo'l siqishni yakunlay olmaydi, va u xabar qiladigan xatolik versiyaga emas, boshqaruv kanaliga ishora qiladi.

Hammani tashqarida qoldirmasdan aylantirish

Bitta umumiy sirni aylantirish texnik emas, muvofiqlashtirish mashqidir. Server avvalgisini qaytarib olishidan oldin har bir mijozning qo'lida almashtirish fayli bo'lishi kerak, va eski qiymatni hali saqlayotgan har qanday mashina o'sha lahzada muvaffaqiyatsiz bo'ladi. Bu aylantirishni ish kuni o'rtasida boshlamang.

v2 tartibida aylantirish har bir qurilma bo'yicha: bitta mashinaga yangi o'ralgan kalit chiqaring va eskisini faqat shu mashina uchun iste'foga chiqaring. Har bir mijoz uni qo'llab-quvvatlaydigan versiyada bo'lgach, o'tish uchun asosiy dalil shu.

Fayl ruxsatlari xuddi shu suhbatga tegishli. Kalit faqat xizmatni ishga tushiruvchi hisob uchun o'qiladigan bo'lishi kerak va u himoya qiladigan profillar bilan bir xil repozitoriyda turmasligi kerak. OpenVPN 2.6 ma'lumotnomasi yaratish shakllari va kalit materiali bo'limlarini hujjatlashtiradi, bu forum postidan ko'chirilgan buyruqdan yaxshiroq manbadir.

O'xshash maqolalar