Easy-RSA mówi, że brak PKI? Zagląda gdzie indziej
Brakujący klucz CA lub index.txt zwykle oznacza, że Easy-RSA 3 wybrał inny katalog. Najpierw sprawdź selektor PKI, kolejność pierwszeństwa i odcisk wydawcy.
Polecenie zatrzymuje się z powodu brakującego ca.crt lub brakującego index.txt, choć CA od miesięcy wystawia certyfikaty. W samej instytucji nic się nie zmieniło; polecenie po prostu spojrzało gdzie indziej. Easy-RSA 3 wyznacza katalog PKI z opcji, zmiennej środowiskowej, pliku vars i wbudowanej wartości domyślnej, a każde z tych źródeł może wskazywać poza instytucję wdrożenia. Sprawdź, które wygrało, zanim cokolwiek utworzysz.
Błąd nazywa plik, a nie katalog
Katalog instalacji i katalog wydawcy to dwa różne miejsca. Znalezienie easyrsa na maszynie dowodzi tylko, że narzędzie jest zainstalowane, a nie że odnalazło instytucję, której ufa twój VPN.
Dlatego ponowna instalacja pakietu albo powtórzenie kroku init wydaje się produktywne i nic nie zmienia.
Najpierw sprawdź selektor
W Easy-RSA 3 selektorem jest EASYRSA_PKI lub odpowiednia opcja --pki-dir. Podaj ścieżkę bezwzględną, na przykład --pki-dir=/srv/pki/office, a odpowiedź przestanie zależeć od tego, gdzie akurat stałeś. Ten jeden nawyk usuwa całą klasę tego błędu, zwłaszcza w skryptach uruchamianych z cron lub z checkoutu CI.
Najpierw potwierdź generację, bo nawyk Easy-RSA 2 z plikiem vars plus build-key to inny model niż ten, którego oczekuje Easy-RSA 3. easyrsa --version wypisuje generację, zanim zrobi cokolwiek innego, a ./easyrsa --help wymienia podpolecenia: cel build-key oznacza 2.x, podczas gdy build-client-full oznacza 3.x. Przenoszenie starej KEY_DIR ścieżki do wywołania 3.x, bo nazwa katalogu wygląda znajomo, daje dokładnie ten błąd.
Jeśli ciąg wersji i składnia polecenia się nie zgadzają, zatrzymaj się i przeczytaj dokumentację zainstalowanego wydania.
Pierwszeństwo wyjaśnia przegrany plik vars
Udokumentowane pierwszeństwo to opcja wiersza poleceń, potem środowisko, potem plik vars, potem wbudowana wartość domyślna. Dlatego poprawna wartość w vars przegrywa z odziedziczoną zmienną środowiskową, i to jest cicha wersja tego błędu. Zbadaj zamierzone zmienne i wybór pliku, zamiast wylewać całe środowisko do zgłoszenia. Różnica między nimi to zwykle sekret.
Przejdź łańcuch po kolei i zanotuj, które źródło dostarczyło ścieżkę użytą przez polecenie. Gdy to wiesz, poprawką jest flaga albo export, a nie nowa instytucja certyfikująca.
Easy-RSA dokumentacja konfiguracji definiuje selektor i pierwszeństwo, i to jest cytat, który należy umieścić w zgłoszeniu.
Potwierdź wydawcę materiałem publicznym
W zwykłym wydawcy opartym na plikach odczytaj ca.crt i porównaj jego odcisk z rekordem wydawcy, który zatwierdziłeś. Zgodna nazwa podmiotu nie jest dowodem tożsamości, a katalog o nazwie production też nie. Tylko odcisk wiąże znaleziony plik z instytucją, której twoi partnerzy mieli zaufać.
Wystarczy kontrola tylko do odczytu: openssl x509 -in /srv/pki/office/ca.crt -noout -subject -issuer -serial -fingerprint -sha256.
Następnie ustal rolę katalogu. Katalog żądań używany przez klienta nie jest bazą wydawcy, a klucz podpisujący trzymany offline nie ma czego szukać na każdym hoście VPN. Brakujący ca.key jest w tym układzie cechą projektu, a nie pozwoleniem na wymyślenie zastępczej instytucji.
Jeśli stan naprawdę zniknął
Czasem ścieżka jest poprawna, a stanu naprawdę nie ma. Pusty index.txt i zrestartowany licznik serii dają PKI, która wygląda zdrowo i nie może niczego dowieść o certyfikatach, których nigdy nie widziała: odnowienia nie unieważnią starych, a nowe numery zderzą się z historią. Zamiast tego przywróć z zatwierdzonej kopii zapasowej CA, bo inicjalizacja pustej PKI gdzie indziej tylko przenosi błąd i zostawia drugą, niezwiązaną instytucję.
Gdy ścieżka i wydawca się zgadzają, potraktuj następną awarię merytorycznie. Permission denied, klucz podpisujący wymagający hasła i brakujący wpis wydania to trzy różne usterki, a tylko jedna z nich dotyczy katalogu, który właśnie naprawiłeś.
Nigdy nie usuwaj szyfrowania kluczy i nie poszerzaj uprawnień katalogów, aby ukryć błąd ścieżki. Błąd jest tani do naprawienia; naprawa nie.