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.

Powiązane artykuły