OpenVPN username-as-common-name: CN шалгалт тань яагаад хоосон байна
common_name болон username-ийг харьцуулдаг client-connect скрипт нэрийг өөртэй нь харьцуулж болно. Орлуулалт эхлэхээс өмнө гэрчилгээг бүртгэлтэй холбоно уу.
Та client-connect скрипт нэмж, common_name username-оос ялгаатай бүх холболтыг татгалздаг бөгөөд энэ нь гэрчилгээ болон бүртгэлийн хоорондын холбоо мэт харагдана. username-as-common-name ажилладаг сервер дээр энэ харьцуулалт скрипт ажиллах үед аль хэдийн утгаа алдсан байна. Хоёр утга нь ижил мөр тул өөр хүнд олгогдсон гэрчилгээнд ч шалгалт давна.
Скрипт муу бичигдсэнээс шалгалт буруу биш. Энэ нь уншдаг утга нь мөн холболт дотор өмнө нь орлуулагдсан тул буруу юм.
Харьцуулалт юуг нотолж байгаа мэт харагдана
Гэрчилгээний баталгаажуулалт болон нууц үгийн баталгаажуулалт нь тусдаа нотолгоо бөгөөд сервер хоёуланг нь нэг хүнийх байхыг шаардалгүйгээр шаардаж болно. Зөрүү нь бодит: хүчинтэй төхөөрөмжийн гэрчилгээ болон аль ч хүчинтэй бүртгэл нь тухайн гэрчилгээ болон нэг нэрлэсэн бүртгэлээс өөр мэдэгдэл юм. common_name-ийг username-той харьцуулдаг скрипт хоёрын хоорондох дутуу холбоос мэт уншигдана. Хэрэв common_name гэрчилгээний хэлсэн утгыг хадгалж байсан бол тийм байх байсан.
Тийм эсэх нь серверийн нэг сонголтоос хамаардаг бөгөөд энэ сонголт ихэвчлэн холбоогүй шалтгаанаар асаалттай байдаг, жишээ нь хэрэглэгч бүрийн тохиргооны файлуудад нэр өгөхөд хялбар болгох зорилгоор.
username-as-common-name нэрэнд юу хийдэг
username-as-common-name идэвхтэй үед OpenVPN хэрэглэгчийн нэр, нууц үгийг баталгаажуулсны дараа гэрчилгээний нийтлэг нэрийг баталгаажсан хэрэглэгчийн нэрээр орлуулна. Тухайн шалгалтын үеэр ажилладаг шалгалтын дэгээ нь орлуулалт хараахан болоогүй тул гэрчилгээний нийтлэг нэрийг хүлээн авдаг. Дараагийн бүх зүйл, client-connect орсон, хэрэглэгчийн нэрийг харна. Тиймээс дараагийн дуудлага нэг ижил хамааралтай хоёр удаа авч, танилцуулсан гэрчилгээтэй харьцуулж чадахгүй.
| Stage | What common_name holds |
|---|---|
| Username and password verification hook | The certificate common name, for example bob-device |
| After the replacement | The authenticated account, alice |
| client-connect callback | The account again, alice |
Нэг жишээ холболтыг дагана уу: bob-device-д олгогдсон гэрчилгээ, alice гэж лавлах санд амжилттай нэвтрэх, сонголт идэвхтэй. Шалгалтын үе шат хоёр өөр мөрийг харж чадна. Холболтын үе шат alice болон alice-ыг харна.
Энэ жишээ харьцуулалт яагаад хоосон байгааг харуулна. Гэрчилгээний шалгалт болон нууц үгийн шалгалт дангаараа ажилладаг тул холболт өөрөөр хүлээн авагдах байсан эсэхийг харуулахгүй.
Холбоог хоёр хамаарал хоёулаа байгаа газарт тавь
Дүрмийг гэрчилгээний хамаарал болон бүртгэлийг нэгэн зэрэг хардаг үе шатанд хэрэгжүүлэх ёстой бөгөөд энэ нь практикт хэрэглэгчийн нэр, нууц үгийн шалгалтын дэгээ эсвэл тэнд ачаалагдсан залгаасыг хэлнэ. Нууц үгийн шалгалтыг аль хэдийн хийдэг дэмжигдсэн залгаас нь ихэвчлэн хосын дүрэм нэмэх зөв газар, учир нь үүнийг нэр харьцуулалтаар солих нь нууц үгийн шалгалтыг бүрмөсөн алдуулна.
Код бичихээс өмнө зураглалыг тодорхойл, учир нь тэгш байдал нь жинхэнэ бодлого байх нь ховор. Гэрчилгээ нь ихэвчлэн төхөөрөмжийг, нэвтрэлт нь хүнийг тодорхойлдог бөгөөд нэг төхөөрөмж хэд хэдэн хүнд хууль ёсоор үйлчилж болно. Харилцааг өөрийн хянадаг хэлбэрээр хадгалж, нэр солих, дахин олгох, доменоор тодорхойлогдсон нэрсийн үед юу болохыг шийд. Лавлах санг ойлголгүйгээр жижиг үсэг болгох эсвэл домэйн угтварыг хасах нь тусдаа байх ёстой хоёр бүртгэлийг нэгтгэж болно.
Энэ сонголт нь аль клиентийн тохиргоо хэрэгжихийг ч өөрчилдөг гэдгийг санаарай, учир нь client-config-dir нийтлэг нэрээр тодорхойлогддог.
Хосыг хоёр хүчинтэй нэвтрэх мэдээллээр шалга
Бодлого тань зөвшөөрсөн хосоор эхэлж, холбогддогийг батал. Дараа нь мөн хүчинтэй гэрчилгээг өөр боловч өөрөөр хүчинтэй бүртгэлтэй хамт танилцуул: тэр оролдлого амжилтгүй болох ёстой бөгөөд буруу бичсэн нууц үгнээс биш, хосын дүрмээс болж амжилтгүй болох ёстой. Буруу нууц үг нууц үгийн шалгалт ажиллаж байгааг нотолж, гэрчилгээ болон бүртгэлийн хоорондох дүрмийн талаар юу ч хэлэхгүй.
Гэрчилгээ байхгүй болон хүчингүй гэрчилгээний замыг ч шалгаж, сервер клиентийн тохиргоонд аль хамаарлыг ашигладагийг батал. Хэрэв харьцуулалтыг ажиллуулах цорын ганц арга нь username-as-common-name-ыг унтраах бол эхлээд тэр өөрчлөлтийн өртгийг тооцоол, учир нь энэ нь клиент бүрийн тохиргооны хайлтыг гэрчилгээний нэр рүү буцаана.