OpenSSL artıq quraşdırılıb, hostun entropiyası var və onunla açar yaratmaq aşkar qısa yol kimi görünür. Çıxış təsadüfi və məxfi və tamamilə yararsız olacaq, uğursuzluq isə açar formatını qeyd edən hər hansı şey əvəzinə idarəetmə kanalı xətası kimi gələcək. Bu yanlış yönləndirmə bahalı hissədir, çünki insanları şifrələrini yoxlamağa göndərir. VPN-in oxuduğu şey konkret fayl strukturudur, ixtiyari bayt bloku deyil, və xüsusiyyətin bir variantı serverdən kənarda ümumiyyətlə istehsal edilə bilməz.

Diskdəki fayl əslində nə olmalıdır

OpenVPN statik açar faylı mətndir. Nə olduğunu bildirən şərh sətri ilə başlayır, sabit enli sətirlərdə hex məlumatı daşıyır və cəmi 256 bayt açar materialı təşkil edir. OpenVPN onu idarəetmə kanalının ortaq sirri kimi oxuyur, sertifikat kimi deyil, parol ifadəsi kimi deyil və TLS kitabxanasının tanıyacağı hər hansı şey kimi deyil.

Eyni obyekt növü idarəetmə kanalının hər iki xüsusiyyətinə xidmət edir. Tls-auth ilə hər peer-ə istiqamət də lazımdır ki, bir tərəfin paketləri ona geri əks oluna bilməsin. Tls-crypt ilə tək ortaq sirr idarəetmə kanalını hər iki istiqamətdə şifrələyir və autentifikasiya edir, bu da əl sıxışmanı həm gizlədir, həm qoruyur.

Bunların heç biri gizli bilik deyil və format əsas məsələ deyil. Əsas məsələ odur ki, fayl oxucunun gözlədiyinə tam uyğun olmalıdır: başlıq, sətir eni, son sətir keçidi və ümumi uzunluq. Bir sətir səhv olan fayl zibil kimi yüklənir və ya tamamilə uğursuz olur. Buna görə iki peer-i bayt-bayt müqayisə etmək qanuni ilk testdir və iki konfiqurasiya faylından birini oxumaqdan daha sürətlidir.

Birini yaratmağın dəstəklənən yolu

Sadə statik açarı onu istehlak edəcək alətlə yaradın, sonra hər iki tərəfdən ona istinad edin:

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

Seçimin yazılışı zamanla dəyişdi: 2.4 dövrünün köhnə quraşdırmaları fayl adından əvvəl ayrı bayraq olan formadan istifadə edirdi, halbuki cari buraxılışlar qısasını qəbul edir. Hər halda nəticədə yaranan fayl eyni obyekt növüdür, ona görə yoxlama iki peer-in eyni baytlara sahib olub-olmadığıdır.

İkinci nəsil heç bir xarici generatorun uydura bilməyəcəyi struktur əlavə edir. Server açarı bir dəfə yaradılır və hər müştəri ondan törəmə bükülmüş açar alır:

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

Müştərinin aldığı şey serverin öz açarının surəti deyil. Bu, yalnız serverin aça biləcəyi metadatanı daşıyan bükülmüş obyektdir və bu bükülmə cihaz üzrə faylın heç bir digər cihaza toxunmadan ləğv edilə bilməsinin səbəbidir. Server açarını serverdə saxlayın və onu bu cihaz üzrə etimadın kökü kimi qəbul edin.

Əl ilə hazırlanmış baytların çökdüyü yer

256 təsadüfi baytı düzgün başlıq altında hex kimi çap etmək nəzəri olaraq yüklənən statik açar faylı verərdi. Yenə də pis fikirdir. Hər formatlaşdırma detallı yükləmə zamanı uğursuz olan və ya daha pisi, iki peer-i yalnız autentifikasiya uğursuzluğu kimi üzə çıxan fərqli dəyərlərlə qoyan material istehsal etmək şansına çevrilir.

V2 variantı ilə oxşar heç nə mümkün deyil. Bükülmüş müştəri açarı yalnız server açar prosesinin çıxışı kimi mövcuddur və server onu açmaq üçün lazım olan materialı saxlayır. Təsadüfi bir kütlə rədd ediləcək və ya sadəcə şifrəni aça bilməyəcək, və iki mesajdan heç biri təsadüfilikdən bəhs etməyəcək.

Versiya uyğunluğu bütün bunların üzərində dayanır. Birinci nəsil hər iki tərəfdə onu dəstəkləyən buraxılış tələb edir, ikincisi isə yenidən daha yeni buraxılış tələb edir. Xüsusiyyət mövcud olmadan əvvəl qurulmuş müştəri yalnız bükülmüş material qəbul edən serverlə əl sıxışmanı tamamlaya bilməz və bildirdiyi uğursuzluq versiyaya deyil, idarəetmə kanalına işarə edir.

Hamını kənarda qoymadan dövr etmək

Tək ortaq sirri dövr etmək texniki deyil, koordinasiya məşqidir. Hər müştəri server əvvəlkini geri götürməzdən əvvəl əvəzedici faylı əlində saxlamalıdır və hələ də köhnə dəyəri saxlayan hər hansı maşın bu baş verdiyi anda uğursuz olur. Bu dövrü iş gününün ortasında başlatmayın.

V2 tənzimləməsi ilə dövr cihaz üzrədir: bir maşın üçün yeni bükülmüş açar verin və köhnəni yalnız həmin maşın üçün təqaüdə çıxarın. Hər müştəri onu dəstəkləyən buraxılışda olduqdan sonra keçmək üçün əsas arqument budur.

Fayl icazələri eyni söhbətə aiddir. Açar yalnız xidməti işlədən hesab tərəfindən oxuna bilməlidir və qoruduğu profillərlə eyni repozitoriyada yaşamamalıdır. OpenVPN 2.6 arayışı yaratma formalarını və açar materialı bölmələrini sənədləşdirir ki, bu da forum yazısından kopyalanmış əmrdən daha yaxşı mənbədir.

Əlaqəli məqalələr