La celo de la servila atestilo ŝajnas ĝusta, la ŝlosilo kongruas, la datoj estas bonaj, kaj la konekto ankoraŭ malsukcesas kun unsupported certificate purpose. La detalo, kiu solvas tion, kutime troviĝas en la sama linio kiel la eraro: profunda valoro kaj subjekto, kiuj nomas atestilon pli alte en la ĉeno. Du malsamaj testoj estas rulataj, kaj nur unu el ili temas pri la fina atestilo. Kompari ilin klarigas, kial anstataŭigi la servilan atestilon ŝanĝas nenion.

Kiun atestilon la kontrolilo fakte malakceptis

Ĉeno ne estas unu objekto ripetita tri fojojn. La fina atestilo portas la nomon kaj ŝlosilon de la servilo, la interaj ligas ĝin al radiko, kaj ĉiu havas sian propran validecan periodon, limigojn kaj uzojn. Kiam la eraro nomas profundon, tiu nombro identigas pozicion en la ĉeno, kiun la kontrolilo konstruis, kaj tio eble ne estas la pozicio, kiun vi atendas, se la servilo sendas neatenditan ĉenon.

Legi la kampojn de la atestilo je tiu profundo, ne de la atestilo, kiun vi supozis kulpa. Petu la du etendaĵojn, kiuj limigas eldonadon, anstataŭ elŝuti ĉiun kampon, ĉar la respondo preskaŭ ĉiam estas en unu el ili. Etendaĵa eligo estas sekura por kunhavigi; privataj ŝlosiloj neniam.

openssl x509 -in issuing-ca.pem -noout -subject -issuer -ext basicConstraints -ext extendedKeyUsage

Se la nomita atestilo estas intera atestilo, kies etendita ŝlosila uzo mencias ion ne ligitan al TLS-servila aŭtentikigado, la resto de la malsukceso sekvas meĥanike. La ĉeno ne povas esti uzata por la celo, kiun OpenVPN petis.

La celo de la fina atestilo kaj la ĉena politiko estas du testoj

La fina testa demando estas mallarĝa: ĉu ĉi tiu fina atestilo permesas servilan aŭtentikigadon por ĉi tiu nomo? La ĉena testa demando estas pli larĝa: ĉu ĉiu atestilo en la vojo rajtas servi tiun celon? Atestiga aŭtoritato, rajtigita eldoni nur klientajn atestilojn, pasos siajn proprajn subskribajn kontrolojn kaj tamen malsukcesos la duan teston, ĉar la vojo, kiun ĝi rajtigas, ne inkluzivas la celon, kiun la aplikaĵo bezonas. La du testoj malsukcesas per la samaj vortoj kaj havas tute malsamajn riparojn.

Tial ĵus eldonita fina atestilo, ĝusta en ĉiu videbla kampo, povas tuj malsukcesi. Tial ankaŭ la riparo kutime apartenas al la profilo de la eldonanta aŭtoritato, ne al la VPN-agordo.

Mankanta EKU ne estas limiga EKU

RFC 5280 faras la etendaĵon de etendita ŝlosila uzo laŭvola kaj, kiam ĝi ĉeestas, limiga. CA-atestilo sen la etendaĵo do ne diris «ne» al servila aŭtentikigado, dum unu, kiu listigas nur ne ligitan celon, diris ion tre specifan. Trakti tiujn du statojn kiel ekvivalentajn produktas malĝustan diagnozon kaj, pli malbone, malĝustan riparon. La distingo ankaŭ klarigas, kial du aŭtoritatoj, kiuj aspektas similaj en konzolo, kondutas tute malsame en ĉeno.

Ankaŭ la konduto de bibliotekoj ne estas unuforma ĉi tie. dokumento de OpenSSL pri kontrolaj opcioj priskribas sian propran traktadon de celaj kontroloj ĉe CA-atestiloj, kaj tiu traktado estas efektiviga politiko, ne regulo, kiun ĉiu TLS-stako sekvas idente. Priskribu, kion faras via kontrolilo, kaj poste konfirmu tion kontraŭ la versio, kiun vi efektive rulas.

Riproduktu la malsukceson senrete antaŭ ol reeldoni

Senreta kontrolo forigas la aplikaĵon el la demando. Se la ĉeno malsukcesas same sub la sama celo, la atestilo estas la problemo, kaj neniu servila agordo kaŝos ĝin. Se la ĉeno pasas senrete dum la servo ankoraŭ rifuzas, la aplikaĵo petas alian celon aŭ uzas alian ĉenon ol la testitan.

openssl verify -purpose sslserver -show_chain -CAfile root-ca.pem -untrusted issuing-ca.pem vpn-server.pem

-show_chain gravas, ĉar ĝi presas la vojon, kiun la ilo konstruis, kaj tiu ofte ne estas la dosiera ordo, kiun vi donis. Tiu eligo estas la plej rapida maniero malkovri, ke dua intera atestilo estas tirata el fido-tenejo, ke la servilo sendas krucsignitan variaĵon, kiun vi ne celis, aŭ ke la cela flago, kiun vi kopiis el lernilo, apartenas al alia rolo ol la servata.

Riparu la eldonan politikon, ne la kontrolan alvokon

La daŭra riparo estas intera atestilo eldonita laŭ politiko, kiu permesas la celojn, kiujn ĝi devas servi, kun la limigo skribita kaj reviziita. Aldoni ĉiun celon al ĉiu aŭtoritato ne estas politiko; ĝi forigas la limigon, kiu donis signifon al la etendaĵo, kaj kutime ĝi postvivas la okazaĵon, kiu ĝin kaŭzis. Mallonga noto en la profilo, priskribanta, kiujn rolojn la aŭtoritato rajtas atestigi, malhelpas la sekvan reeldonon ripeti la saman disputon.

Malŝalti la kontroladon estas la alia loga fuŝsolvo, kaj ĝi transformas atestilan problemon en fidoproblemon. Konservu la celan kontrolon, riparu la ĉenon kaj rerulu la saman senretan kontroladon por konfirmi, ke la vojo nun servas la celitan rolon, antaŭ ol denove tuŝi la servon.

Rilataj artikoloj