Go buraxılışı, Composer quraşdırması və Python müştərisi evdə işləyir və hamısı şirkət VPN-inin içində uğursuz olur. Bu nümunə sizə tətbiq haqqında deyil, yol haqqında danışır. Tuneldə nəsə prosesinizin gördüyü sertifikat zəncirini dəyişib, ya da zəncir ümumiyyətlə gəlməmişdən əvvəl əl sıxışmanı sıfırlayıb. Bu iki nasazlıq terminalda oxşar görünür və tamamilə fərqli cavablar tələb edir.

Üç mesaj, üç mexanizm

Naməlum orqan tərəfindən imzalanmış x509 sertifikatı xətası zəncirin qurulduğunu və kökünün həmin prosesin istifadə etdiyi sertifikat anbarında olmadığını bildirir. Sertifikat zəncirində özünüimzalanmış sertifikat xətası adətən yoxlama proksisinin öz sertifikatı ilə cavab verdiyini bildirir ki, bu da icra mühitinizin tanımadığı zəncirdir. Əl sıxışma zamanı SSL EOF bağlantının hər hansı yararlı sertifikat göndərilməmişdən əvvəl bağlandığını bildirir və bu, ClientHello-nu rədd edən aralıq qurğudur, heç də etibarnamə problemi deyil.

Təhlükəsizlik yoxlamasını söndürən bayraq əlavə etmək üç mesajın hamısını yox edir, müdaxiləni isə yerində saxlayır və həqiqi hücumçunu tutacaq yoxlamanı aradan qaldırır.

Prosesin həqiqətən oxuduğu paketi tapın

Windows anbarında quraşdırılmış korporativ kök sistem anbarına müraciət edən brauzerləri və .NET tətbiqlərini düzəldir. Konteyner içində işləyən buraxılış üçün heç nə etmir, çünki onun öz CA paketi var; certifi istifadə edən Python prosesi və öz daxili siyahısını istifadə edən Node prosesi üçün də heç nə etmir. Go binarın işlədiyi mühitin sistem hovuzunu oxuyur, yəni noutbuku deyil, konteyneri. Beləliklə bir maşın eyni vaxtda həm işləyən brauzer, həm də uğursuz olan qurma aləti yaradır.

Fərziyyə etmək əvəzinə alətdən soruşun. python3 -c "import ssl; print(ssl.get_default_verify_paths())" Python-un müraciət edəcəyi faylları çap edir, node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" isə artıq bir üstünlük təyin edilib-edilmədiyini göstərir. Konteyner üçün eyni yoxlamanı obrazın içində işlədin, çünki qurma əslində həmin mühiti istifadə edir.

Qurmanın işlədiyi yerdə bir kök quraşdırın

Yoxlama kökünü İT-dən PEM faylı kimi alın və etibar etməzdən əvvəl barmaq izini ayrı kanaldan yoxlayın. Debian əsaslı obrazlarda onu /usr/local/share/ca-certificates/ qovluğuna kopyalayın və update-ca-certificates işlədin; RHEL ailəsi obrazları faylı /etc/pki/ca-trust/source/anchors/ qovluğuna atdıqdan sonra update-ca-trust istifadə edir. Konteyner qurmasında bu addımları uğursuz əmrdən əvvəl əlavə edin ki, qat asılılıqların quraşdırılmasından yuxarıda keşlənsin.

Yerli devcontainer üçün PEM-i bağlayın və heç kimin təkrarlaya bilməyəcəyi şəxsi obrazın içinə yazmaq əvəzinə başlanğıcda eyni yeniləmə əmrini işlədin. Öz paketini gətirən alətlər öz sənədləşdirilmiş üstünlüyünə ehtiyac duyur: pip-in sertifikat parametri, npm-in cafile parametri var, qalanların çoxu standart mühit dəyişənlərini qəbul edir.

Bu, hər hansı sertifikatı qəbul etmək demək deyil. Siz yoxlamanı aparan tərəfdən alınmış bir konkret kökü bir mühitə əlavə edirsiniz və bütün digər zəncirlər üçün yoxlama açıq qalır. Hansı faylın əlavə edildiyini və nə vaxt bitdiyini qeyd edin, çünki yoxlama kökü də hər hansı CA kimi yenilənir.

Əl sıxışma sertifikatdan əvvəl öldükdə

Əgər heç nə təqdim edilmirsə, heç bir sertifikat anbarı dəyişikliyi kömək etməyəcək. Eyni sorğunu tunel açıq və bağlı halda müqayisə edin, sonra zənciri birbaşa openssl s_client -connect host:443 -servername host -showcerts ilə yoxlayın. VPN-dən kənarda tamamlanan və onun içində sıfırlanan bağlantı ara qurğunun verdiyi siyasət qərarıdır və dərman başqa sertifikat deyil, həmin host üçün istisnadır. Paket registrini və ya API son nöqtəsini dəyişdirilmədən keçirməyi xahiş edin.

Tuneli bölüb alətin VPN-i yan keçməsini təmin etmək o trafik üçün yoxlamadan yayınır, bu siyasəti poza bilər və aləti etibarlı etmir.

Nəticəni hər alət üzrə yazın

Binarı, onun oxuduğu etibarnamə faylını, işə düşən mühit dəyişənini və təsdiqlənmiş istisnanı sadalayan qısa qeyd növbəti şəxsin bütün diaqnozu aparmasına qənaət edir. Qeydi noutbuk üzrə deyil, alət üzrə saxlayın, çünki dəyişən şey nadir hallarda noutbuk olur.

Və biletdə iki cümləni ayrı saxlayın: konkret bir korporativ kök quraşdırdıq və yoxlamanı söndürdük. Bunlardan yalnız biri dəstək əməliyyatıdır.

Əlaqəli məqalələr