Uw gateway accepteert een clientcertificaat dat hij nooit heeft gezien, omdat wat er is geconfigureerd een vertrouwde uitgever is, en het certificaat arriveert tijdens de handshake. Zo hoort het protocol te werken, en daarom is een maplijst op de server een slechte inventaris. De uitgever weet wat hij heeft gemaakt, de server weet wat er verbonden is, en de intrekkingsstatus weet wat er is ingetrokken. Een inventaris die die drie registraties vermengt, beweert uiteindelijk iets wat geen van hen heeft gezegd.

De gateway vertrouwt een uitgever, geen bestandslijst

Validatie vergelijkt een aangeboden certificaat met een vertrouwensanker, zodat een identiteit die dezelfde uitgever gisteren heeft gemaakt verbindt zonder ooit op de schijf van de server te hebben bestaan. Er hoeft niets te worden gekopieerd om dat te laten gebeuren, en niemand hoeft het met de hand goed te keuren. De eigen registraties van de server beschrijven dus aankomsten, niet de populatie identiteiten die zouden kunnen aankomen.

Het omgekeerde gat is net zo ongemakkelijk. Een map kan verlopen certificaten bevatten, ingetrokken certificaten en identiteiten die zijn uitgegeven voor apparaten die nooit zijn uitgerold. Bestanden tellen beantwoordt hoeveel bestanden er zijn, wat een vraag is die niemand heeft gesteld. Begin in plaats daarvan bij de registraties die betekenis dragen.

Vier vragen, vier verschillende registers

Elk registratietype beantwoordt één vraag goed en de andere slecht, daarom lijkt een rapport dat ze samenvoegt compleet terwijl het op een specifieke manier fout is. De tabel hieronder rangschikt ze naar de vraag die ze beslechten en niet naar het systeem dat ze produceert.

Question you are answeringWhere the answer livesHow quickly it changesWhat it will never show
Was this identity ever created?The issuer's issuance databaseOnly when something is issuedWhether the device still exists
Is a copy sitting on this host?The paths you actually inspectedWhenever anyone copies filesCertificates that were never copied here
Has the issuer withdrawn it?Published revocation stateWhen the issuer next publishesWithdrawals that are not published yet
Is it connected right now?The live session tableContinuouslyAnything about past or future sessions

Een archief van openbare certificaten is geen geheim, omdat het geen privésleutels bevat, maar het is ook niet deelbaar. Subjecten en apparaatnamen onthullen operationele details, en het rapport hoort bij het publiek te blijven dat het nodig heeft. Privésleutels blijven volledig buiten de inventaris, omdat de inventaris metadata nodig heeft en geen inloggegevens.

Uitgever plus serienummer is de enige stabiele sleutel

Subjecten worden hergebruikt en bestandsnamen worden opnieuw gebruikt, dus een naam die vorig jaar één apparaat aanduidde, kan nu een ander aanduiden. Geen van beide is een sleutel, en een rapport dat op een van beide is gebouwd, zal uiteindelijk twee identiteiten in één regel samenvoegen.

Het paar uitgever en serienummer identificeert een certificaat uniek, en beide velden komen uit het certificaat zelf. Leg ze vast met het subject, de geldigheidsdatums, de bron waar de kopie vandaan kwam, en de verantwoordelijke persoon of het apparaat. Voeg de intrekkings- en uitrolstatus toe als aparte velden met hun eigen observatietijden, want een certificaat binnen zijn geldigheidsvenster is niet automatisch gemachtigd. Die twee feiten leven in verschillende systemen, en ze samenvoegen verbergt het geval waarin een identiteit is ingetrokken terwijl het bestand er nog actueel uitziet.

Lees één certificaat tegelijk

Een wildcard die zich over een map uitstrekt is geen batch-interface, en hij verbergt welk bestand welke uitvoer opleverde. Lees de metadata per certificaat, en lees de intrekkingskant uit zijn eigen artefact. De OpenSSL x509-referentie somt de velden op die die opties afdrukken.

openssl x509 -in <cert>.pem -noout -issuer -serial -subject -dates -fingerprint -sha256
openssl crl -in <issuer>.crl -noout -text | head -n 40

Vraag voor een beheerde Easy-RSA PKI de uitgeefdatabase op via de werkstroom die het hulpmiddel ondersteunt in plaats van een mapindeling aan te nemen, en houd de originelen alleen-lezen terwijl de inventaris wordt samengesteld. Het registerformaat is regelmatig genoeg om geldige vermeldingen te tellen en de ingetrokken vermeldingen op te sommen zonder de database met de hand te openen.

grep -c '^V' pki/index.txt
grep '^R' pki/index.txt | cut -f4,5

Een inventaris die de volgende uitgifte overleeft

Een eenmalige dump van een map is verouderd op het moment dat het volgende certificaat wordt uitgegeven, dus bouw het rapport vanuit de uitgeefwerkstroom en laat het bijwerken als onderdeel van normale bedrijfsvoering. Dat maakt het rapport ook reproduceerbaar, wat telt wanneer twee mensen het oneens zijn over wat er is uitgegeven.

Gebruik het resultaat voor beslissingen over vernieuwing en uitfasering en niet als een spreadsheet-oefening. Het verwijderen van een lokale kopie maakt de externe kopieën die al bestaan niet ongeldig. Trek de identiteit in via de geconfigureerde intrekkings- en autorisatiewerkstroom, en registreer daarna de intrekking met de datum. Een identiteit die van de server is verdwenen maar die de uitgever nog steeds vertrouwt, is niet uitgefaseerd, en dat verschil scheidt een nauwkeurige inventaris van een die slechts geruststelt.

Gerelateerde artikelen