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, ключ підпису, якому потрібна його парольна фраза, і відсутній запис випуску — це три різні несправності, і лише одна з них стосується каталогу, який ви щойно виправили.
Ніколи не знімайте шифрування ключів і не розширюйте права каталогів, щоб замаскувати помилку шляху. Помилку дешево виправити; відновлення — ні.