Easy-RSA zegt dat de PKI ontbreekt? Het kijkt elders
Een ontbrekende CA-sleutel of index.txt betekent meestal dat Easy-RSA 3 een andere map koos. Controleer eerst de PKI-selector, de prioriteit en de vingerafdruk van de uitgever.
De opdracht stopt met een ontbrekende ca.crt of een ontbrekende index.txt, terwijl de CA al maanden certificaten uitgeeft. Aan de autoriteit is niets veranderd; de opdracht keek simpelweg elders. Easy-RSA 3 bepaalt een PKI-map uit een optie, een omgevingsvariabele, een vars-bestand en een ingebouwde standaardwaarde, en elk daarvan kan van de autoriteit van de uitrol af wijzen. Controleer welke heeft gewonnen voordat u iets aanmaakt.
De fout noemt een bestand, geen map
De installatiemap en de map van de uitgever zijn twee verschillende plaatsen. Het vinden van easyrsa op de machine bewijst alleen dat het hulpprogramma is geïnstalleerd, niet dat het de autoriteit heeft gevonden die uw VPN vertrouwt.
Daarom voelt het herinstalleren van het pakket of het opnieuw uitvoeren van de init-stap productief en verandert het niets.
Controleer de selector vóór al het andere
In Easy-RSA 3 is de selector EASYRSA_PKI of de bijbehorende --pki-dir optie. Geef een absoluut pad zoals --pki-dir=/srv/pki/office, en het antwoord hangt niet langer af van waar u toevallig stond. Die ene gewoonte verwijdert een hele klasse van deze bug, vooral voor scripts die vanuit cron of vanuit een CI-checkout draaien.
Bevestig eerst de generatie, omdat de gewoonte van Easy-RSA 2 met een vars-bestand plus build-key een ander model is dan wat Easy-RSA 3 verwacht. easyrsa --version drukt de generatie af voordat het iets anders doet, en ./easyrsa --help somt de subopdrachten op: een build-key-doel betekent 2.x, terwijl build-client-full 3.x betekent. Een oud KEY_DIR-pad meenemen naar een 3.x-aanroep omdat de mapnaam bekend voorkomt, levert precies deze fout op.
Als de versietekst en de syntaxis van de opdracht niet overeenkomen, stop dan en lees de documentatie van de geïnstalleerde release.
Prioriteit verklaart een vars-bestand dat verloor
De gedocumenteerde prioriteit is opdrachtregeloptie, dan omgeving, dan vars-bestand, dan ingebouwde standaard. Een juiste waarde in vars verliest dus van een geërfde omgevingsvariabele, en dat is de stille versie van deze fout. Onderzoek de bedoelde variabelen en de bestandsselectie in plaats van de hele omgeving in een ticket te storten. Het verschil tussen beide is meestal een geheim.
Doorloop de keten op volgorde en noteer welke bron het pad leverde dat de opdracht gebruikte. Als u dat weet, is de oplossing een vlag of een export, geen nieuwe certificaatautoriteit.
De configuratiereferentie van Easy-RSA definieert de selector en de prioriteit, en dat is de verwijzing die in het ticket hoort.
Bevestig de uitgever met openbaar materiaal
Lees bij de gebruikelijke bestandsgebaseerde uitgever ca.crt en vergelijk de vingerafdruk met het uitgeversrecord dat u hebt goedgekeurd. Een overeenkomende onderwerpnaam is geen identiteitsbewijs, en een map met de naam production ook niet. Alleen de vingerafdruk verbindt het gevonden bestand met de autoriteit die uw peers geacht werden te vertrouwen.
Een controle met alleen lezen is genoeg: openssl x509 -in /srv/pki/office/ca.crt -noout -subject -issuer -serial -fingerprint -sha256.
Bepaal daarna de rol van de map. Een aanvraagmap die een client gebruikt is geen uitgeversdatabase, en een offline bewaarde ondertekeningssleutel heeft niets te zoeken op elke VPN-host. Een ontbrekende ca.key is een ontwerpeigenschap in die opzet, geen toestemming om een vervangende autoriteit te verzinnen.
Als de toestand echt weg is
Soms is het pad juist en is de toestand er echt niet. Een leeg index.txt en een herstarte serieteller geven u een PKI die er gezond uitziet en niets kan bewijzen over de certificaten die zij nooit zag: verlengingen trekken de oude niet in, en de nieuwe nummers botsen met de geschiedenis. Herstel in plaats daarvan uit de goedgekeurde back-up van de CA, want een lege PKI elders initialiseren verplaatst alleen de fout en laat een tweede, ongerelateerde autoriteit achter.
Als het pad en de uitgever overeenkomen, behandel de volgende fout dan op zijn eigen merites. Permission denied, een ondertekeningssleutel die zijn wachtwoordzin nodig heeft en een ontbrekend uitgeverecord zijn drie verschillende storingen, en slechts één ervan gaat over de map die u zojuist hebt hersteld.
Verwijder nooit sleutelversleuteling en verbreed nooit maprechten om een padfout te verbergen. De fout is goedkoop te verhelpen; de reparatie niet.