OpenVPN username-as-common-name: pse kontrolli juaj i CN është bosh
Një skript client-connect që krahason common_name me username mund të krahasojë një emër me vetveten. Lidhe certifikatën me llogarinë përpara se të ekzekutohet zëvendësimi.
Ju shtoni një skript client-connect që refuzon çdo lidhje ku common_name ndryshon nga username, dhe duket si një lidhje midis një certifikate dhe një llogarie. Në një server që ekzekuton username-as-common-name, ai krahasim e ka humbur tashmë kuptimin kur ekzekutohet skripti. Të dyja vlerat janë e njëjta varg, kështu që testi kalon edhe për një certifikatë të lëshuar për dikë krejt tjetër.
Kontrolli nuk është i gabuar sepse skripti është shkruar keq. Është i gabuar sepse vlera që lexon u zëvendësua më herët në të njëjtën lidhje.
Çfarë duket se provon krahasimi
Vërtetimi me certifikatë dhe vërtetimi me fjalëkalim janë prova të ndara, dhe një server mund të kërkojë të dyja pa kërkuar që ato t'i përkasin të njëjtit person. Hendeku është i vërtetë: një certifikatë e vlefshme pajisjeje plus çdo llogari e vlefshme është një pohim tjetër nga ajo certifikatë plus një llogari e vetme e emërtuar. Një skript që krahason common_name me username lexohet si hallka që mungon midis të dyjave. Do të ishte, nëse common_name ende nënkuptonte atë që tha certifikata.
Nëse është kështu varet nga një opsion i serverit, dhe ai opsion zakonisht aktivizohet për një arsye të palidhur, si për t'i bërë më të lehta për t'u emërtuar skedarët e konfigurimit për çdo përdorues.
Çfarë i bën username-as-common-name emrit
Kur username-as-common-name është i aktivizuar, OpenVPN zëvendëson emrin e përbashkët të certifikatës me emrin e përdoruesit të vërtetuar pasi emri i përdoruesit dhe fjalëkalimi verifikohen. Grepi i verifikimit që ekzekutohet gjatë atij kontrolli ende merr emrin e përbashkët të certifikatës, sepse zëvendësimi nuk ka ndodhur ende. Çdo gjë pas kësaj, duke përfshirë client-connect, sheh emrin e përdoruesit. Pra, kthimi i thirrjes më vonë merr një identitet dy herë dhe nuk mund ta krahasojë me certifikatën e paraqitur.
| 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 |
Ndiq një lidhje ilustruese: një certifikatë e lëshuar për bob-device, një hyrje e suksesshme në drejtori si alice dhe opsioni i aktivizuar. Faza e verifikimit mund të shohë ende dy vargje të ndryshme. Faza e lidhjes sheh alice dhe alice.
Ky shembull tregon pse krahasimi është bosh. Nuk tregon se lidhja do të ishte pranuar ndryshe, pasi validimi i certifikatës dhe verifikimi i fjalëkalimit ende ekzekutohen vetë.
Vendos lidhjen aty ku ekzistojnë ende të dyja identitetet
Rregulli duhet zbatuar në një fazë që sheh identitetin e certifikatës dhe llogarinë në të njëjtën kohë, që në praktikë nënkupton grepin e verifikimit të emrit të përdoruesit dhe fjalëkalimit ose një shtojcë të ngarkuar aty. Një shtojcë e mbështetur që tashmë kryen verifikimin e fjalëkalimit është zakonisht vendi i duhur për të shtuar një rregull çiftimi, sepse zëvendësimi i saj me një krahasim emrash do të hiqte plotësisht kontrollin e fjalëkalimit.
Përcakto hartëzimin përpara se të shkruash kod, pasi barazia rrallë është politika e vërtetë. Një certifikatë shpesh identifikon një pajisje ndërsa hyrja identifikon një person, dhe një pajisje mund t'u shërbejë ligjërisht disa njerëzve. Ruaj marrëdhënien në një formë lëshimin e së cilës e kontrollon ti, dhe vendos çfarë ndodh në riemërtim, në rilëshim dhe me emra të kualifikuar me domen. Konvertimi në shkronja të vogla ose heqja e një prefiksi domeni pa e kuptuar drejtorinë mund të bashkojë dy llogari që duhej të mbeteshin të ndara.
Mbaj mend se opsioni ndryshon edhe cila konfigurim për klient zbatohet, sepse client-config-dir është i lidhur me emrin e përbashkët.
Testo çiftimin me dy kredenciale të vlefshme
Fillo me çiftin që lejon politika jote dhe konfirmo që lidhet. Pastaj paraqit të njëjtën certifikatë të vlefshme me një llogari tjetër, por gjithashtu të vlefshme: ai përpjekje duhet të dështojë, dhe duhet të dështojë për shkak të rregullit të çiftimit dhe jo për shkak të një fjalëkalimi të shtypur gabim. Një fjalëkalim i gabuar provon që kontrolli i fjalëkalimit funksionon dhe nuk thotë asgjë për rregullin midis certifikatës dhe llogarisë.
Kontrollo edhe rrugët me certifikatë që mungon dhe me certifikatë të pavlefshme, dhe konfirmo cilin identitet serveri përdor për cilësimet për klient. Nëse mënyra e vetme për ta bërë krahasimin të funksionojë është çaktivizimi i username-as-common-name, vlerëso fillimisht koston e asaj ndryshimi, sepse ai e kthen kërkimin e konfigurimit të çdo klienti te emri i certifikatës.