Easy-RSA казва, че PKI липсва? Той гледа другаде
Липсващ ключ на CA или index.txt обикновено означава, че Easy-RSA 3 е избрал друг каталог. Проверете първо селектора на PKI, приоритета и отпечатъка на издателя.
Командата спира с липсващ ca.crt или липсващ index.txt, а CA издава сертификати от месеци. В сертификатния орган нищо не се е променило; командата просто е погледнала другаде. Easy-RSA 3 определя директорията на PKI от опция, променлива на средата, файл vars и вградена стойност по подразбиране и всяко от тези може да сочи далеч от органа на внедряването. Проверете кой е победил, преди да създавате каквото и да е.
Грешката назовава файл, а не директория
Инсталационната директория и директорията на издателя са две различни места. Намирането на easyrsa на машината доказва само, че инструментът е инсталиран, а не че е намерил органа, на който вашият VPN вярва.
Затова преинсталирането на пакета или повторното пускане на стъпката init изглежда полезно и не променя нищо.
Проверете селектора преди всичко друго
В Easy-RSA 3 селекторът е EASYRSA_PKI или съответната опция --pki-dir. Подайте абсолютен път, например --pki-dir=/srv/pki/office, и отговорът спира да зависи от това къде случайно сте стояли. Този навик премахва цял клас от тази грешка, особено за скриптове, пуснати от cron или от CI копие.
Потвърдете първо поколението, защото навикът от Easy-RSA 2 с файл vars плюс build-key е различен модел от този, който очаква Easy-RSA 3. easyrsa --version отпечатва поколението, преди да направи нещо друго, а ./easyrsa --help изброява подкомандите: цел build-key означава 2.x, докато build-client-full означава 3.x. Пренасянето на стар път KEY_DIR към извикване на 3.x, защото името на директорията изглежда познато, дава точно тази грешка.
Ако низът за версията и синтаксисът на командата не съвпадат, спрете и прочетете документацията на инсталираното издание.
Приоритетът обяснява загубен файл vars
Документираният приоритет е опция от командния ред, после среда, после файл vars, после вградена стойност по подразбиране. Затова правилна стойност в vars губи от наследена променлива на средата и това е тихата версия на този отказ. Проверете предвидените променливи и избора на файл, вместо да изливате цялата среда в тикет. Разликата между двете обикновено е тайна.
Минете веригата по ред и отбележете кой източник е доставил пътя, който командата е използвала. След като знаете това, поправката е флаг или export, а не нов сертификатен орган.
Справочникът за конфигурацията на Easy-RSA дефинира селектора и приоритета и това е цитатът, който се слага в тикета.
Потвърдете издателя с публичен материал
При обичайния файлов издател прочетете ca.crt и сравнете отпечатъка му със записа на издателя, който сте одобрили. Съвпадащото име на субект не е доказателство за идентичност, нито директория с име production. Само отпечатъкът свързва намерения файл с органа, на който вашите партньори са били помолени да вярват.
Достатъчна е проверка само за четене: openssl x509 -in /srv/pki/office/ca.crt -noout -subject -issuer -serial -fingerprint -sha256.
След това установете ролята на директорията. Директория за заявки, която клиент използва, не е база данни на издател, а ключ за подписване, съхраняван офлайн, няма работа на всеки VPN хост. Липсващ ca.key е свойство на дизайна в тази подредба, а не разрешение да се измисли заместващ орган.
Ако състоянието наистина го няма
Понякога пътят е правилен, а състоянието наистина липсва. Празен index.txt и рестартиран пореден брояч ви дават PKI, която изглежда здрава и не може да докаже нищо за сертификатите, които никога не е виждала: подновяванията няма да отменят старите, а новите номера ще се сблъскат с историята. Възстановете вместо това от одобрената резервна копия на CA, защото инициализирането на празна PKI другаде само премества грешката и оставя втори, несвързан орган.
След като пътят и издателят съвпадат, разгледайте следващия отказ по същество. Permission denied, ключ за подписване, който се нуждае от паролата си, и липсващ запис за издаване са три различни повреди и само една от тях е за директорията, която току-що поправихте.
Никога не премахвайте шифроването на ключа и не разширявайте правата на директорията, за да замажете грешка в пътя. Грешката е евтина за поправяне; възстановяването не е.