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)" ցույց է տալիս՝ արդյոք վերագրանցում արդեն սահմանված է։ Բեռնարկղի համար նույն ստուգումը գործարկեք պատկերի ներսում, քանի որ հենց այդ միջավայրն է օգտագործում կառուցումը։
Տեղադրեք մեկ արմատ այնտեղ, որտեղ աշխատում է կառուցումը
Ստուգման արմատը վերցրեք ՏՏ բաժնից որպես 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-ը, խուսափում է այդ երթևեկության ստուգումից, ինչը կարող է խախտել քաղաքականությունը և գործիքը վստահելի չի դարձնում։
Գրանցեք արդյունքը յուրաքանչյուր գործիքի համար
Կարճ գրառում, որը թվարկում է բինարը, նրա կարդացած վստահության ֆայլը, խաղի մեջ գտնվող միջավայրի փոփոխականը և հաստատված բացառությունը, խնայում է հաջորդ մարդուն ողջ ախտորոշումը։ Պահեք գրառումը յուրաքանչյուր գործիքի, այլ ոչ թե նոթբուքի համար, քանի որ նոթբուքը հազվադեպ է այն, ինչ փոխվել է։
Եվ տոմսում երկու նախադասություն առանձին պահեք՝ մենք տեղադրեցինք կոնկրետ կորպորատիվ արմատ, և մենք անջատեցինք ստուգումը։ Դրանցից միայն մեկն է աջակցության գործողություն։