Այստեղ ամենամեծ վնասը հասցնում են երկու համոզմունք՝ որ ինքնաստորագրված VPN վկայականը նշանակում է, թե թունելը գաղտնագրված չէ, և որ VPN-հաճախորդի ուզածն ինստալելը ազդում է միայն VPN-ի վրա։ Ոչ մեկը չի դիմանում իրական տեղաբաշխման հետ շփմանը։ Ինքնաստորագրված վկայականը նկարագրում է ստորագրության հարաբերություն, ոչ թե անվտանգության դատավճիռ, և ձեր ավելացրած վստահության հասանելիությունը կախված է նրանից, թե որ պահոցում է այն հայտնվում։ Ես տեսել եմ, թե ինչպես աջակցության ծառայությունը Windows մեքենայի մեջ ներմուծեց մատակարարի արմատը՝ մեկ նախազգուշացում լռեցնելու համար, ապա ամբողջ կեսօր բացատրում էր, թե ինչու բրաուզերը դադարեց բողոքել անկապ պորտալից։ Այս հարցի երկու կեսերը պատկանում են իրար, ուստի դրանք վերաբերվեք որպես մեկի։

Վկայականը վստահության պահոց չէ

Սերվերի ներկայացրած ֆայլը կրում է հանրային բանալի, սուբյեկտի անուն, թողարկողի անուն, վավերականության ամսաթվեր և ընդլայնումներ։ Ինքնաստորագրված նշանակում է, որ սուբյեկտը և թողարկողը նույն էությունն են, և ստորագրությունը ստուգվում է վկայականի սեփական բանալիով։ Այդ սահմանման մեջ ոչինչ չի ասում, որ կապը թույլ է, և ոչինչ չի ասում, որ հաճախորդը կընդունի այն։

Ընդունումը գալիս է այլ տեղից՝ CA ֆայլ, որին ուղղում եք հաճախորդին, մատնահետք, որը ձեռքով եք համեմատում, կամ արմատ, որն արդեն նստած է պահոցում, որը հաճախորդը կարդում է։ Տեղաբաշխումը կարող է լիովին առողջ լինել, մինչդեռ դրա վկայականը կտապալվեր յուրաքանչյուր հանրային թեստում։ openssl verify համակարգի փաթեթի դեմ կհայտնի անհայտ թողարկողի մասին, և այդ հաղորդումը ճիշտ է, ոչ թե խափանում։

OpenVPN-ի ca ընտրանքը հավելվածով սահմանափակված վստահության ամենապարզ դեպքն է։ Այդ ֆայլը անվանում է այն խարիսխները, որոնք հաճախորդը կընդունի, և այն կարող է պարունակել մեկ մասնավոր CA կամ փոքր տեղաբաշխման դեպքում սերվերի սեփական ինքնաստորագրված վկայականը։ 2.6 տարբերակը նույնպես ընդունում է --peer-fingerprint՝ SHA-256 մատնահետքը ամրացնելու համար՝ CA ֆայլ տարածելու փոխարեն։ WireGuard-ը ավելի հեռու է կանգնած՝ այնտեղ ընդհանրապես վկայականներ չկան, միայն ստատիկ հանրային բանալի յուրաքանչյուր զույգի համար, ուստի ինքնաստորագրման հարցը դրա վրա չի տարածվում։

Թե որտեղ եք տեղադրում վստահությունը, որոշում է, թե ով կժառանգի այն

Նույն վկայականը դրեք երեք տեղերում և կստանաք երեք տարբեր պայթյունի շառավիղ։ Միայն VPN-հաճախորդի կողմից կարդացվող փաթեթը ազդում է այդ հաճախորդի վրա։ Օպերացիոն համակարգի պահոցում արմատը ազդում է այդ պահոցին դիմող յուրաքանչյուր ծրագրի վրա։ Սեփական վստահության շտեմարան ունեցող բրաուզերը կարող է անտեսել երկուսն էլ, և այդ պատճառով նախազգուշացումը կարող է վերապրել այն ներմուծումը, որը թվում էր աշխատող։

Debian-ում կամ Ubuntu-ում /usr/local/share/ca-certificates/-ում ֆայլ գցելը և update-ca-certificates գործարկելը փոխում է համակարգային փաթեթը։ Windows-ում certutil -addstore -f Root գրում է մեքենայի պահոցում և պահանջում է բարձրացված հրամանի տող, մինչդեռ -user ավելացնելը թիրախավորում է ընթացիկ օգտատիրոջ պահոցը՝ դրանք փոխանակելի չեն։ Firefox-ը պահում է իր NSS շտեմարանը, ուստի ՕՀ մակարդակի ներմուծումը կարող է այնտեղ երբեք չհայտնվել։

Ծածկույթը կարևոր է նրա պատճառով, թե ինչ կարող է անել իշխանությունը։ Թողարկող CA-ն կարող է ստորագրել անուններ, որոնց հետ որևէ կապ չունի, ուստի ամեն ինչ, որ վստահում է այդ պահոցին, կընդունի այդ ստորագրությունները։ Մեկ ամրացված տերև չի կարող դա անել՝ այն նույնականացնում է ճիշտ մեկ զույգի ինքնություն։ Եթե նպատակը մեկ VPN-ի միացումն է, հավելվածով սահմանափակված CA-ն կամ ամրացված տերևը հասնում են դրան, մինչդեռ մեքենայական արմատը շատ ավելի մեծ զիջում է, քան պահանջում է ախտանիշը։

Դուք դեռ գաղտնագրում եք առանց հանրային CA-ի

TLS ձեռքսեղմումը ածանցում է սեսիայի բանալիներ՝ անկախ նրանից, թե զույգի վկայականը շղթայվում է ձեր արդեն վստահած ինչ-որ բանի, թե ոչ։ Ինքնաստորագրված չի նշանակում բաց տեքստ և չի նշանակում, որ տրաֆիկը թռիչքի ընթացքում ընթեռնելի է։ Դա նշանակում է, որ հաճախորդը նախապես որևէ պատճառ չունի հավատալու, որ բանալին պատկանում է իր հարցրած սերվերին։

Հենց այդ ճեղքում են ապրում իրական հարձակումները։ Ցանկացած վկայական ընդունելու կարգավորված հաճախորդը՝ անջատված ստուգման կարգավորմամբ կամ մեկ անգամ սեղմված ու մոռացված «միևնույն է վստահել» կոճակով, ուրախությամբ կգաղտնագրի նրան, ով պատասխանում է։ Ընդհատումը տեղի է ունենում նույնականացման քայլում, մինչև հավելվածի տվյալները շարժվեն։ Առանց ինքնության ստուգման գաղտնագրումը պասիվ դիտորդին դրսում է պահում և քիչ այլ բան է անում։

Թողարկողին վստահելը չի շրջանցում անվան ստուգումը

Շղթայի վավերացումը, անվան համապատասխանությունը և վկայականի նշանակությունը առանձին որոշումներ են։ Շղթան կարող է վավեր լինել, մինչդեռ անունը սխալ է, և անունը կարող է համապատասխանել, մինչդեռ վկայականը թողարկվել է այլ դերի համար։ RFC 5280-ը սահմանում է այն դաշտերը, որոնք կրում են այդ սահմանափակումները, և թե հաճախորդը որքան խստորեն է դրանք պարտադրում, յուրաքանչյուր հավելվածի խնդիր է։

OpenVPN-ը տեսանելի է դարձնում բաժանումը։ verify-x509-name ամրացնում է սպասվող սուբյեկտը name, name-prefix կամ subject համապատասխանությամբ։ remote-cert-tls server պահանջում է, որ զույգի վկայականը օգտագործելի լինի որպես սերվերի վկայական, ինչը մերժում է միայն հաճախորդի վկայականը նույնիսկ երբ թողարկողը վստահելի է։ Կարգավորումներից ոչ մեկը չի փոխարինվում CA ֆայլ ուղարկելով։

Ուսումնասիրեք վկայականը նախքան որևէ բան որոշելը՝

  • openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltName ցույց է տալիս, թե ով է այն թողարկել, ինչ անունների համար և մինչև երբ։
  • openssl verify -CAfile ca.crt server.crt ստուգում է, թե արդյոք ուղարկելու պատրաստվող շղթան իրոք վավերացնում է տերևը։
  • openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_error աշխատում է TLS վերջնակետերի համար, ինչպիսին վեբ պորտալն է. 1194-ի վրա OpenVPN արձանագրությունը սովորական TLS հոսք չէ, ուստի այդ թեստը այնտեղ չի կիրառվում։

Ժամկետանց ամսաթվով, ձեր միացվող անվան համար subjectAltName-ի բացակայությամբ կամ serverAuth օգտագործման բացակայությամբ վկայականը ձախողվում է՝ անկախ նրանից, թե որքան զգուշորեն է տեղադրվել խարիսխը։

Հինգ ստուգում նախքան մեկը ընդունելը

Համեմատեք մատնահետքը այնպիսի ալիքով, որը չի հանդիսանում ձեր վերանորոգվող կապը՝ վահանակ, արդեն ունեցած տեղադրիչ, ստորագրված կոնֆիգուրացիայի ֆայլ։ openssl x509 -in server.crt -noout -fingerprint -sha256 սերվերի վրա և նույն արժեքը հաճախորդի մատյանում բավական են իմանալու, որ նայում եք մեկ օբյեկտի։

Այնուհետև որոշեք, թե ինչ եք տեղադրում՝ մեկ տերև, թե իշխանություն, որը կարող է ավելին հատել։ Հետո որոշեք, թե ուր է այն գնում, և անվանեք այն հավելվածները, որոնք կարդում են այդ պահոցը։ Գրեք հեռացման ուղին, քանի դեռ հիշում եք այն, քանի որ վստահիր-ու-շարունակիր-ը այն ձևն է, որով ժամանակավոր ներմուծումը դառնում է մշտական։

Վերջում պլանավորեք փոփոխությունը։ Ամրացված վկայականը կամ մատնահետքը պետք է թարմացվի նույն վստահելի ալիքով, երբ վկայականը պտտվի, և մասնավոր CA-ն ունի իր թողարկման և չեղարկման կյանքի ցիկլը։ Եթե մասնավոր բանալին արտահոսի, նույն վկայականի պատճենին նորից վստահելը ոչինչ չի վերանորոգում՝ ինքնությունը պետք է փոխարինվի։

Եթե նախազգուշացումը վերապրի բոլոր հինգ ստուգումները, օգտակար հարցը ոչ թե այն է, թե որ կոճակն է լռեցնում այն, այլ այն, թե հաճախորդը իրականում որ պահոցն է կարդում և որտեղից է եկել այդ արմատը։ Պատասխանեք դրան, և այն ներմուծումը, որը դուք պատրաստվում եք անել, դառնում է որոշում, ոչ թե ռեֆլեքս։

Առնչվող հոդվածներ