Križno potpisan CA: ključ se podudara, AKI povezivanje ne
List može prikvačiti svog izdavatelja pomoću identifikatora ključa te izdavatelja i serijskog broja. Provjerite tu vezu prije nego križno potpisan lanac smatrate zamjenjivim.
Dva CA certifikata mogu imati isti javni ključ i isti subjekt, a ipak ne biti zamjenjivi. Jedan je samopotpisan, drugi je križno potpisao stari korijen, a njihova imena izdavatelja, serijski brojevi i potpisi razlikuju se. List se može vezati upravo za jedan od njih preko svog Authority Key Identifier. Ta veza ostaje nevidljiva dok klijent ne odabere pogrešan lanac i handshake ne padne bez očitog razloga.
Prođite ovih pet provjera po redu: svaka isključuje drugu vrstu kvara.
Provjera 1: nacrtajte oba lanca prije nego dirate predložak
Zapišite putanje. Stara populacija vjeruje Starom korijenu A, koji je izdao CA B, koji je izdao poslužiteljev list. Nova populacija izravno vjeruje samopotpisanom CA B. Oba B certifikata nose isti ključ i subjekt, i upravo zato osoba koja čita redak subjekta vidi jedan CA ondje gdje klijent vidi dva.
Križno potpisana kopija također mora biti pravi CA certifikat, s basic constraints i key usage koji dopuštaju potpisivanje.
Provjera 2: usporedite polja AKI, ne samo ključ
Ime izdavatelja lista mora odgovarati B subjektu i taj dio obično vrijedi. Authority Key Identifier je mjesto gdje se dvije kopije razilaze, jer može nositi identifikator ključa, izdavatelja certifikata i serijski broj. Identifikator ključa odgovara objema kopijama jer je ključ identičan. Polja izdavatelja i serijskog broja odgovaraju točno jednoj, zato lanac koji se gradi prema samopotpisanoj kopiji može pasti prema križno potpisanoj.
Pregledajte list umjesto nagađanja: openssl x509 -in server.pem -noout -ext authorityKeyIdentifier.
Zatim usporedite oba kandidata s openssl x509 -in b-cross.pem -noout -text | grep -A2 "Authority Key Identifier", i istu naredbu prema samopotpisanoj kopiji.
Ako list nosi izdavatelja i serijski broj, lanac dovršava samo certifikat koji te vrijednosti opisuju, koju god kopiju klijent učitao.
Provjera 3: mijenjajte politiku izdavanja, nikada potpisane bajtove
Proširenja žive unutar potpisa. Dodavanje, uklanjanje ili uređivanje jednog na postojećem listu nije popravak, to je drugi certifikat i traži ponovno izdavanje. Promjena pripada politici izdavanja: authorityKeyIdentifier = keyid,issuer:always čini da novi listovi nose vezu specifičnu za certifikat, dok keyid sam zadržava labaviji oblik koji odgovara namjernom prijelazu na križno potpisivanje. Odlučite koji vaš PKI želi prije nego se potpiše sljedeća serija.
Uređivanje zajedničkog predloška mijenja i svaki budući certifikat, ne samo poslužitelj pred vama.
Provjera 4: provjerite svaku populaciju povjerenja zasebno
Testirajte stari put i novi put kao odvojena pokretanja. openssl verify -purpose sslserver -verify_hostname vpn.example -CAfile old-root.pem -untrusted b-cross-signed.pem server.pem vježba križno potpisanu rutu, a ista naredba s novim korijenom i bez untrusted datoteke vježba samopotpisanu rutu. Miješanje oba korijena u jedan paket skriva koji je lanac odabran. Zatim ponovite s pravim klijentima, jer VPN pozadina može preferirati lanac ili prikvačiti certifikat na načine koje openssl ne radi.
Dostavite posredni certifikat kroz konfiguraciju usluge koju klijent stvarno čita, a ne kroz wiki stranicu.
Provjera 5: držite stari put na satu umirovljenja
Križno potpisivanje drži stari put povjerenja živim po dizajnu, što je i svrha i rizik. Ono ne sanira kompromitirani stari korijen i ne uklanja taj korijen iz nijednog klijenta. Zapišite kada stari put prestaje davati povjerenje i potvrdite da taj dan doista dolazi.
Ako svaki klijent može prihvatiti novi korijen prije nego se listovi pomaknu, obično uvođenje s dvostrukim povjerenjem jednostavnije je od križnog potpisivanja i ostavlja jednu stvar manje za umirovljenje.