Ինչ է ստուգում ձեր VPN հաճախորդը նախքան վկայագրին վստահելը
Անցկացրեք վկայագրի նախազգուշացումը ձեր հաճախորդի ստուգած չորս դարպասներով՝ CA վստահություն, շղթայի կառուցում, զուգընկերի անուն և նպատակ, և չեղարկման քաղաքականություն։
Ձեր VPN հաճախորդը հաղորդում է, որ վկայագիրը հնարավոր չեղավ ստուգել, և երկխոսությունը դադարում է այնտեղ։ Ֆայլը առկա է, սերվերը աշխատում է, և նույն պրոֆիլը անցյալ ամիս աշխատել է մեկ այլ նոթբուքի վրա։ Այդ մեկ տողանոց նախազգուշացման տակ հաճախորդը զուգընկերի վկայագիրը անցկացրել է չորս դարպասներով՝ ձեր կարգավորած վկայագրային մարմինը երաշխավորում է ստորագրության ուղին, այդ ուղին հասնում է մարմնին, զուգընկերի անունը ձեր պահանջածն է, և վկայագիրն այժմ պիտանի է այս նպատակի համար։ Գտեք փակված դարպասը, և վերանորոգումը սովորաբար մեկ ֆայլ է, բաց թողեք այդ քայլը, և ամբողջ կեսօր փաթեթներ կներմուծեք նորից։
Կարդացեք երկխոսությունը նախքան պրոֆիլը խմբագրելը
Վկայագրի սխալների ձևակերպումը տալիս է ներքևի գրադարանը, ոչ թե ձեր տեղադրած VPN արտադրանքը, ուստի ճշգրիտ տողը ձեր առաջին ապացույցն է։ «Չհաջողվեց ստանալ տեղական թողարկողի վկայագիրը» ցույց է տալիս ուղուն կամ վստահության խարիսխին։ «Վկայագրի ժամկետը լրացել է կամ այն դեռ վավեր չէ» ցույց է տալիս ժամանակին։ «Վկայագրի նպատակը չի աջակցվում» ցույց է տալիս բանալու ընդլայնված օգտագործմանը։ Անվան անհամապատասխանությունը ձեզ ասում է, թե որ անունն էր ուզում։ Չորսից ոչ մեկը չի շտկվում հաճախորդը վերատեղադրելով։
Բարձրացրեք գրանցման մակարդակը նախքան որևէ բան փոխելը։ OpenVPN հաղորդում է ստուգման ձախողման մասին ձեռքսեղմման շուրջ, երբ այն գործարկեք --verb 4-ով, իսկ strongSwan-ը իր ինքնության և շղթայի որոշումները գրում է charon մատյանում։ Այնուհետև հաստատեք, թե որ վկայագիրն եք ուսումնասիրում, որովհետև մարդիկ սովորաբար ստուգում են սկավառակի ֆայլը, մինչ պրոֆիլը ներսում դնում է ավելի հին պատճեն։ Երբ պրոֆիլը ներսում դնում է PEM բլոկներ, ստուգվում է հենց ներսում դրված վկայագիրը։
Վկայագրային մարմինը ստորագրում է ինքնություններ, ոչ թե թույլտվություններ
Մարմինը պահում է անուն և ստորագրության բանալի։ Այն թողարկում է վկայագրեր, որոնք իր սեփական քաղաքականության համաձայն հանրային բանալին կապում են այդ անվան հետ՝ վավերականության պատուհանով և օգտագործման սահմանափակումներով։ Ձեր հաճախորդին թողարկողին ճանաչելու համար պետք է միայն մարմնի վկայագիրը, նրան երբեք պետք չէ ստորագրության բանալին, և այդ բանալին հաճախորդներին ուղարկելը նրանց կտար տեղաբաշխման վստահած ցանկացած ինքնություն ստեղծելու ունակություն։
Մարմնին վստահելը նրա ստորագրած յուրաքանչյուր վկայագիր դարձնում է թեկնածու, ոչ թե ճիշտ զուգընկեր։ Նույն ներքին CA-ից վեբ սերվերի վկայագիրը նույնպես թեկնածու է։ Այդ պատճառով գոյություն ունեն անվան և նպատակի դարպասները, և այդ պատճառով վտանգված CA բանալին ավելի կարևոր է, քան ցանկացած առանձին սերվեր, այն հասնում է յուրաքանչյուր ինքնության, որը մարմինը երբևէ թողարկել է։ Թողարկեք հաճախորդի վկայագրեր յուրաքանչյուր սարքի համար, որպեսզի կորցրած նոթբուքը լինի մեկ չեղարկում, այլ ոչ թե ամբողջ տեղաբաշխման բանալիների վերարտադրում։
Վերակառուցեք այն ուղին, որը հաճախորդը փորձում է կառուցել
Ուղին անցնում է զուգընկերի վկայագրից՝ զրո կամ ավելի միջանկյալ վկայագրերի միջով, դեպի ձեր վստահության պահոցի արմատը։ Բացակայող միջանկյալ վկայագիրը շղթայի ամենատարածված խափանումն է, և հաճախորդի կողմից այն երևում է ճիշտ այնպես, ինչպես անվստահելի արմատը։ Նախ կարդացեք տերևը, ապա թույլ տվեք OpenSSL-ին կառուցել ուղին այն նյութից, որը պատրաստվում եք ուղարկել։
openssl x509 -in server.crt -noout -subject -issuer -dates
openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt
openssl verify -show_chain -CAfile root.crt -untrusted intermediate.crt server.crt
Զրո ելքի կարգավիճակը նշանակում է, որ ուղին կառուցվել է այդ ֆայլերից, ձախողումը նշում է այն վկայագիրը, որին չհաջողվեց հասնել։ Եթե openssl verify-ը հաջողվում է, մինչ հաճախորդը դեռ մերժում է, տարբերությունը նրանում է, թե ինչ է սերվերն իրականում ուղարկում կամ թե որ վստահության ֆայլն է բեռնում պրոֆիլը։ OpenVPN-ում միջանկյալ վկայագրերը կարող են գնալ սերվերի վկայագրի ֆայլի հետ կամ տրվել առանձին --extra-certs-ով, և նույն սուբյեկտի անվան տակ գրված երկու արմատ պարունակող փաթեթը ձեր հաճախորդներից մեկին կուղարկի սխալ ճյուղ։
Անունը և նպատակը առանձին դարպասներ են
Շղթայի կառուցումը երբեք չի հարցնում՝ անունը ձերն է արդյոք։ OpenVPN-ը դա ստուգում է միայն այն ժամանակ, երբ պրոֆիլը սահմանում է --verify-x509-name-ը, և միայն ընդհանուր անունը համեմատելու հին սովորությունը կոտրվում է այն վկայագրերի վրա, որոնց ինքնությունները ապրում են subjectAltName-ում։ IKEv2 տեղաբաշխումները կարգավորված ինքնությունը համեմատում են SAN գրառումների կամ տարբերակիչ անվան հետ՝ կախված հաճախորդից, և wildcard կամ %any արժեքը լուռ անջատում է այն համեմատությունը, որը դուք կարծում էիք, թե ունեք։
Հետո գալիս են ժամանակը և նպատակը։ Նոթբուքը, որի ժամացույցը մի քանի ժամ առաջ է, մերժում է դեռ վավեր չեղած վկայագիրը, և ժամկետանց միջանկյալ վկայագիրը խափանում է ուղին, մինչ տերևը գործում է։ Նպատակի խափանումները գալիս են վկայագրից, որն ընդլայնված բանալու օգտագործման մեջ serverAuth չունի, կամ ունի keyUsage, որը չի թույլատրում ձեռքսեղմման ստորագրությունը, ինչը OpenSSL-ը հաղորդում է որպես չաջակցվող վկայագրի նպատակ։ Վերաթողարկեք ճիշտ ձևանմուշից, այդ հաղորդագրության մեջ ոչինչ պատճառ չէ անջատելու ստուգումը։
Չեղարկումը աշխատում է միայն, եթե ինչ-որ մեկը կարգավորել է այն
CRL-ը կամ OCSP պատասխանը ինքնաշխատ չեն հարցվում։ OpenVPN սերվերի վրա հաճախորդի վկայագրերը ցանկի հետ համեմատվում են միայն այն ժամանակ, երբ --crl-verify-ը մատնանշում է ցանկի։ Սերվերի վկայագրի հաճախորդային կողմի ստուգումը կախված է իրականացումից և հաճախ բացակայում է։ strongSwan-ին պետք են իր չեղարկման հավելվածը և քաղաքականություն նախքան զուգընկերի համար CRL-ին նայելը։
Սա բացատրում է այն տոմսը, որը ի վերջո կստանաք, չեղարկված հաճախորդի վկայագիրը դեռ միանում է, և բոլորը եզրակացնում են, որ չեղարկումը կոտրված է։ Ոչինչ չէր ստուգում։ Հրապարակեք և թարմացրեք CRL-ը, կամ պահեք հաճախորդի վկայագրերը բավական կարճատև, որ հնացած չեղարկումը կարճ ժամանակ նշանակություն ունենա, և փորձեք չեղարկման ուղին լաբորատոր վկայագրի վրա նախքան միջադեպի ընթացքում այն ձեզ պետք գա։
Վերանորոգման հերթականություն, որը ստուգումը միացած է պահում
Դասավորեք ըստ ախտանշանի նախքան ֆայլերին դիպչելը, որովհետև աղյուսակի յուրաքանչյուր տող ձեզ ուղարկում է այլ օբյեկտի։
| Client says | Most likely gate | First check |
|---|---|---|
| unable to get local issuer certificate | trust anchor or missing intermediate | your own openssl verify against the files the profile loads |
| expired or not yet valid | validity window | leaf and intermediate dates against the device clock |
| unsupported certificate purpose | extended key usage | serverAuth present, keyUsage allows the handshake |
| name mismatch | peer identity | subjectAltName entries versus the profile name |
Անցեք ցանկը մեկ անցումով՝ հաստատեք այն ֆայլը, որը բեռնում է պրոֆիլը, ինքներդ կառուցեք ուղին, ստուգեք, որ սերվերն ուղարկում է միջանկյալ վկայագիրը, համեմատեք ժամացույցը, կարդացեք SAN-ը, կարդացեք EKU-ն, ապա նորից միացեք և տեսեք, թե ինչպես է նույն մատյանի տողը անհետանում։ Եթե սարքին ընդհանրապես հնարավոր չէ CA տալ, ամրացումը ազնիվ այլընտրանքն է, քանի որ OpenVPN 2.6-ը ընդունում է --peer-fingerprint-ը և վստահությունը նեղացնում է մեկ բանալու, փոխանակ ստուգումը հանելու։ RFC 5280-ը այն դաշտերից յուրաքանչյուրի իմաստի հղումն է։