Kalit yaratish vaqtinchalik faylni talab qilmaydi va undan voz kechish ko'pchilik qo'llanmalar aytadigan darajada ko'p muammoni tuzatmaydi. U yo'q qiladigan narsa bu fayl hayot tsikli va uning atrofidagi tozalash poygasi. U tegmagan narsa bu keyinchalik sirning oqib chiqishi uchun barcha imkoniyatlar. Bu skriptlardagi to'g'rilik muammosi odatda boshqa joyda yotadi, chunki diagnostika va kalit materiali turli oqimlarda yuradi.

Fayl hech qachon siz o'ylagan darajada fosh qiluvchi omil bo'lmagan

Vaqtinchalik fayl hamma o'qiy oladigan bo'lganda, halokatdan omon qolganda yoki istisnodan keyin tozalash qadami o'tkazib yuborilganda aniq xavf tug'diradi. Bular haqiqiy va ularni tuzatishga arziydi. Ular shu bilan birga mahalliy, ko'zga tashlanadigan va sinash oson. O'zgarish faqat tashqi ko'rinishga oid degan xulosaga kelishdan oldin har birini o'z skriptingizda nomlab chiqing.

Tinchroq xavflar quyi oqimda joylashgan: nosozliklarni tuzatish paytida chop etilgan kalit, butun natija obyektini seriyalashdan o'tkazuvchi istisno, yadro dumpini yozuvchi halokat ishlovchisi, avval fayl yo'lini, keyin esa mazmunini oladigan jurnal agregatori. Vaqtinchalik fayldan qochish ularning hech biriga yordam bermaydi va aksini o'ylash yaxshi niyatli qayta yozish sirni avvalgidan ham ko'proq fosh qilishining yo'lidir. Bu o'zgarishni ketma-ketlikdagi bitta yaxshilanish deb qabul qiling, tuzatish deb emas.

Fayl nomi berilmaganda mijoz nima yozadi

Mijozning joriy versiyalari kalit buyrug'i chiqish yo'li ko'rsatilmasdan berilganda yaratilgan kalitni standart chiqishga yuboradi. Ana shu hujjatlashtirilgan xatti-harakat xotiradagi yondashuvni amalga oshirish mumkin qiladi va asbobni qurilma yo'liga qaratish haqidagi eski hiylaga ehtiyojni olib tashlaydi.

import subprocess
proc = subprocess.run(
    ["openvpn", "--genkey", "tls-crypt"],
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    check=True,
)
key_material = proc.stdout

Buyruqni ro'yxat sifatida bering. Bu yerda qobiq kengaytirishi kerak emas va qobiqni yoqish argument chegarasini siz boshqarmaydigan qo'shtirnoqqa bog'liq qilib qo'yardi. Agar skript siz kutgandan boshqa qidiruv yo'li bilan ishga tushishi mumkin bo'lsa, mo'ljallangan bajariluvchi faylni mutlaq yo'l bilan ishlating.

Qaytish kodi tekshiruvi muvaffaqiyat yo'lining muvaffaqiyatsiz chaqiruvdan keyin davom etishini to'xtatadi. Usiz bo'sh bayt qatori oldinga oqib, faqat ancha keyin, kalit ishlatiladigan va xato xabari yaratishni umuman eslatmaydigan nuqtada muvaffaqiyatsizlikka uchrashi mumkin.

Ikki oqim, ikki ma'no

Standart chiqish kalitni olib yuradi. Standart xato asbob sizga aytmoqchi bo'lgan hamma narsani, shu jumladan konfiguratsiya, versiya va kalit turi haqidagi ogohlantirishlarni olib yuradi. Ikkalasini bitta buferga yo'naltirish ishonchli ko'rinadigan, o'rtasiga gap tikilgan kalitni keltirib chiqaradigan xato.

Muvaffaqiyatsizlik yo'lini ham alohida saqlang. Chaqiruv muvaffaqiyatsiz bo'lganda, muvaffaqiyatsiz bo'lgan buyruqni va chiqish holatini xabar qiling, so'ng standart xatoning biror qismini ko'rsatish xavfsizmi yo'qmi, buni ataylab hal qiling. To'liq natija obyektini jurnalga to'kish odatiy qisqa yo'l bo'lib, u kalitni o'zi bilan olib ketishi mumkin.

Agar keyinchalik materialni xeshlash yoki taqqoslash bo'lsa, ikkilik xavfsiz o'qish muhim. Kutilmagan kodlash bilan matn rejimi hech qachon matn bo'lishi mo'ljallanmagan baytlarni o'zgartirishi mumkin va o'zgargan kalitni handshake muvaffaqiyatsiz bo'lgunga qadar noto'g'ri kalitdan ajratib bo'lmaydi.

Agar uni baribir saqlab qo'ysangiz, buni ataylab qiling

Ko'pchilik joylashtirishlar oxir-oqibat kalitni diskda, shlyuzda yoki sir do'konida talab qiladi. Uni bir marta yozing, keyinchalik chmod qilishdan ko'ra yaratilishidanoq cheklangan ruxsatlar bilan va yozishni atomar qiling, shunda qismiy fayl hech qachon xizmat ishga tushganda o'qiydigan faylga aylanmaydi. Buning uchun o'sha katalogdagi yo'ldan nom o'zgartirish odatda yetarli. Muvaffaqiyatsizlik tarmog'ida vaqtinchalik yo'lni o'chirib tashlang, chunki muvaffaqiyatsiz yozuv aynan odamlar unutadigan nusxadir.

Fayl yaratilganda fayl rejimini belgilang va katalog rejimini ham cheklangan saqlang. Zaxira ishi o'ylamasdan supurib o'tadigan joy ostidagi har qanday yo'ldan qoching, chunki tungi zaxiradagi sir o'sha zaxiraning har bir nusxasidagi sirdir. Xuddi shu mulohaza boshqa xizmatlar o'qiy oladigan umumiy hajmga ham tegishli.

Umumiy kalit bu shaxsiyat emas

Bu materialni yaratish sertifikat bermaydi, mijozni ro'yxatga olmaydi va kim ulanayotganini aniqlamaydi. Umumiy kalit allaqachon bir-biriga ishonadigan tomonlar orasidagi kanalni himoya qiladi; shaxsiyat baribir sertifikatdan va uning oldida turgan har qanday autentifikatsiyadan keladi.

Kalit turlari ham bir-birini almashtira olmaydi. Bitta xususiyat uchun simmetrik kalit boshqasining o'rnini to'g'ridan-to'g'ri bosolmaydi, yangiroq nashrlar esa har ikki uchida turli fayllar bilan o'z variantlarini qo'shadi. Konfiguratsiyangiz aynan nomlagan turni yarating, so'ng uni o'sha tur belgilagan rolda ishlating.

Natijani fayl hajmini ko'zdan kechirish bilan emas, haqiqiy ulanish bilan sinab ko'ring. Agar handshake tugasa va jurnallarda kalit haqida ogohlantirish bo'lmasa, yaratish yo'li to'g'ri; agar kalit birlashtirilgan oqim tomonidan qirqilgan bo'lsa, ulanish aybni skriptga emas, tengdoshga qaratadigan tarzda muvaffaqiyatsiz bo'lardi.

O'xshash maqolalar