TLS қателері тек корпоративтік VPN-де: дұрыс сенім қоймасын түзетіңіз
Бір құрал, бір ноутбук, тек VPN TLS-ті бұзады. Хабарламаны оқыңыз, бинар оқитын CA бумасын табыңыз және тексерулерді өшірудің орнына бір тамыр қосыңыз.
Go құрастыруы, Composer орнатуы және Python клиенті үйде бәрі жұмыс істейді, ал компания VPN-інің ішінде бәрі сәтсіз аяқталады. Бұл үлгі сізге қосымша туралы емес, жол туралы айтады. Туннельдегі бірдеңе процесіңіз көретін сертификат тізбегін өзгертті немесе тізбек мүлде келмей тұрып қол алысуды қайта орнатты. Екі ақау терминалда ұқсас көрінеді және мүлде басқа жауаптарды талап етеді.
Үш хабарлама, үш тетік
x509 certificate signed by unknown authority қатесі тізбек құрылғанын және оның тамыры сол процесс пайдаланатын сенім қоймасында жоқ екенін білдіреді. self-signed certificate in certificate chain қатесі әдетте тексеру проксиі өз сертификатымен жауап бергенін білдіреді, ал бұл сіздің орындау ортаңыз танымайтын тізбек. Қол алысу кезіндегі SSL EOF кез келген жарамды сертификат жіберілмей тұрып байланыс жабылғанын білдіреді, және бұл ClientHello-ды қабылдамайтын аралық құрылғы, мүлде сенім мәселесі емес.
Қауіпсіз емес жалауша қосу үш хабарламаны да жоғалтады, ал кедергі орнында қалады, және нақты шабуылдаушыны ұстайтын тексеруді алып тастайды.
Процестің шын мәнінде оқитын бумасын табыңыз
Windows қоймасына орнатылған корпоративтік тамыр жүйелік қоймаға жүгінетін браузерлер мен .NET қосымшаларын түзетеді. Ол контейнер ішінде жұмыс істейтін құрастыруға ештеңе істемейді, өйткені оның өз CA бумасы бар, және certifi пайдаланатын Python процесіне немесе өзінің кіріктірілген тізімін пайдаланатын Node процесіне де ештеңе істемейді. Go бинар жұмыс істейтін ортаның жүйелік пулын оқиды, яғни контейнерді, ноутбукті емес. Сондықтан бір машина бір уақытта жұмыс істейтін браузер мен сәтсіз болатын құрастыру құралын шығарады.
Болжам жасаудың орнына құралдан сұраңыз. python3 -c "import ssl; print(ssl.get_default_verify_paths())" Python жүгінетін файлдарды басып шығарады, ал node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" қайта анықтау әлдеқашан орнатылғанын көрсетеді. Контейнер үшін сол тексеруді бейненің ішінде іске қосыңыз, өйткені құрастыру нақты сол ортаны пайдаланады.
Құрастыру жүретін жерге бір тамыр орнатыңыз
Тексеру тамырын IT-тен PEM файлы ретінде алыңыз және оған сенуге дейін саусақ ізін бөлек арна арқылы тексеріңіз. Debian негізіндегі бейнелерде оны /usr/local/share/ca-certificates/ ішіне көшіріп, update-ca-certificates іске қосыңыз; RHEL тұқымдасының бейнелері файлды /etc/pki/ca-trust/source/anchors/ ішіне қойғаннан кейін update-ca-trust пайдаланады. Контейнер құрастыруында бұл қадамдарды сәтсіз болатын пәрменнің алдына қосыңыз, сонда қабат тәуелділіктерді орнатудан жоғары кэштеледі.
Жергілікті devcontainer үшін PEM-ді тіркеп, іске қосу кезінде сол жаңарту пәрменін орындаңыз, оны ешкім қайталай алмайтын жеке бейнеге пісірудің орнына. Өз бумасын алып жүретін құралдарға өзінің құжатталған қайта анықтауы қажет: pip-те сертификат параметрі бар, npm-те cafile параметрі бар, ал қалғандарының көбі стандартты орта айнымалыларын қабылдайды.
Бұл кез келген сертификатты қабылдаумен бірдей емес. Сіз тексеруді жүргізетін тараптан алған бір нақты тамырды бір ортаға қосасыз, ал тексеру қалған әрбір тізбек үшін қосулы қалады. Қай файл қосылғанын және қашан бітетінін жазып қойыңыз, өйткені тексеру тамыры кез келген басқа CA сияқты жаңартылады.
Қол алысу сертификатқа дейін өлгенде
Егер ештеңе ұсынылмаса, сенім қоймасындағы ешбір өзгеріс көмектеспейді. Сол сұранысты туннель қосулы және өшірулі күйде салыстырыңыз, содан кейін тізбекті тікелей openssl s_client -connect host:443 -servername host -showcerts арқылы қараңыз. VPN-нен тыс аяқталып, оның ішінде қайта орнатылатын байланыс — аралық құрылғының саясат шешімі, ал ем — басқа сертификат емес, сол хост үшін ерекшелік. Пакет тізілімі немесе API соңғы нүктесі өзгеріссіз өтуін сұраңыз.
Құрал VPN-ді айналып өтетіндей туннельді бөлу сол трафик үшін тексеруден жалтарады, бұл саясатты бұзуы мүмкін және құралды сенімді етпейді.
Нәтижені әр құрал бойынша жазыңыз
Бинарды, оның оқитын сенім файлын, ойындағы орта айнымалысын және бекітілген ерекшелікті тізіп көрсететін қысқа жазба келесі адамға бүкіл диагностиканы үнемдейді. Жазбаны ноутбук бойынша емес, құрал бойынша ұстаңыз, өйткені өзгерген нәрсе сирек ноутбук болады.
Және билетте екі сөйлемді бөлек ұстаңыз: біз нақты корпоративтік тамырды орнаттық, және біз тексеруді өшірдік. Олардың тек біреуі ғана қолдау әрекеті.