Dlaczego certyfikat CA znika z lokalnego magazynu?
Kiedy próbujesz złożyć podpis elektroniczny, a system wyświetla komunikat o braku certyfikatu CA w lokalnym magazynie, frustracja sięga zenitu. , . Weryfikacja łańcucha certyfikatów to nie czarna magia, ale mało kto dokładnie wyjaśnia, dlaczego certyfikat pośredni czasem w ogóle nie trafia do magazynu i co z tym zrobić w praktyce. Zanim jednak zaczniemy grzebać w konfiguracji, warto zrozumieć, jak dokładnie Windows przechowuje te dane i dlaczego czasem odmawia posłuszeństwa.

- Jak zainstalować certyfikat główny CA w systemie lokalnie?
- Konfiguracja Nginx z własnym certyfikatem CA krok po kroku
- Najczęstsze przyczyny problemów z certyfikatem pośrednim
- Brak certyfikatu CA w lokalnym magazynie
Jak zainstalować certyfikat główny CA w systemie lokalnie?
Windows traktuje magazyn certyfikatów jak sejf z wieloma przegródkami. Certyfikat główny CA musi trafić do odpowiedniej lokalizacji, by system mógł go automatycznie wykorzystać podczas weryfikacji podpisu. Magazyn ten różni się w zależności od typu konta użytkownika i zakresu uprawnień, dlatego instalacja na koncie z ograniczeniami często kończy się połowicznie. Podczas gdy użytkownik pracuje normalnie, system nie widzi certyfikatu, bo został zapisany w gałęzi CurrentUser, podczas gdy aplikacja serwerowa szuka go w gałęzi LocalMachine.
Mechanizm działania certyfikacji X.509 opiera się na hierarchii zaufania, gdzie każdy certyfikat pośredni musi prowadzić do wiarygodnego korzenia. Kiedy instalujesz certyfikat główny, system dodaje go do magazynu Trusted Root Certification Authorities, a każdy następny certyfikat w łańcuchu weryfikowany jest względem tego korzenia. Jeśli korzeń nie istnieje lokalnie, walidacja kończy się niepowodzeniem niezależnie od tego, czy certyfikat pośredni jest obecny. Proces ten można porównać do sprawdzania dowodu tożsamości przez ochroniarza, który musi najpierw zweryfikować, czy dana osoba figuruje na liście zaufanych gości.
Instalacja przebiega najsprawniej przez mmc.exe, czyli Microsoft Management Console. Wystarczy dodać przystawkę Certyfikaty, wybrać magazyn docelowy i wskazać plik certyfikatu w formacie DER lub Base-64. Przy instalacji w gałęzi LocalMachine system poprosi o uprawnienia administratora, co jest naturalnym zabezpieczeniem przed przypadkowym zaśmieceniem magazynu. Po zakończeniu instalacji warto uruchomić polecenie certutil -store My, by potwierdzić, że certyfikat faktycznie znajduje się w systemie.
Podobny artykuł brak certyfikatów jeżeli certyfikaty przechowujesz na karcie
Na komputerach z systemem Linux procedura przebiega odmiennie i wymaga innego podejścia. Certyfikaty główne trafiają do katalogu /usr/local/share/ca-certificates/, skąd polecenie update-ca-certificates automatycznie generuje nowy . W przypadku aplikacji Java proces walidacji jest całkowicie oderwany od systemowego magazynu, ponieważ JVM posiada własny keystore przechowywany w pliku cacerts. Dodanie certyfikatu do JVM wymaga użycia narzędzia keytool z parametrem -importcert, co tworzy nowy wpis w keystore'u przeznaczonym wyłącznie dla tej wirtualnej maszyny.
Po instalacji certyfikatu zawsze należy przeprowadzić weryfikację, czy system prawidłowo rozpoznaje łańcuch. Polecenie certutil -verifychain dostarcza szczegółowego raportu o każdym ogniwie łańcucha, wskazując, gdzie dokładnie pojawia się przerwa w zaufaniu. W środowiskach z wieloma serwerami warto skopiować certyfikat również do magazynu domenowego Active Directory, by certyfikat był dostępny dla wszystkich stacji roboczych bez konieczności ręcznej instalacji na każdej z nich.
Konfiguracja Nginx z własnym certyfikatem CA krok po kroku
Nginx domyślnie serwuje samopodpisany certyfikat, co w środowisku lokalnym powoduje ostrzeżenia przeglądarek i problemy z walidacją podpisów elektronicznych opartych na HTTPS. Aby certyfikat działał bez zarzutu, trzeba wygenerować własny łańcuch certyfikacji, który będzie zaufany w ramach infrastruktury wewnętrznej. Proces ten wymaga stworzenia prywatnego urzędu certyfikacji, wygenerowania certyfikatu dla konkretnej domeny i powiązania ich w Nginx.
Przeczytaj również o brak zarejestrowanego certyfikatu opp
Pierwszym krokiem jest instalacja narzędzia mkcert, które automatyzuje cały proces tworzenia prywatnego CA. Po instalacji wykonanie polecenia mkcert -install tworzy lokalny urząd certyfikacji zapisujący klucze w katalogu konfiguracyjnym użytkownika. To właśnie ten wygenerowany certyfikat główny należy następnie zainstalować w magazynie systemowym, by przeglądarki i aplikacje uznały go za wiarygodny. Mkcert automatycznie obsługuje ścieżki aktualizacji, co oznacza, że certyfikat pozostaje ważny przez kolejne wersje systemu operacyjnego.
Generowanie certyfikatu dla domeny lokalnej sprowadza się do wywołania mkcert z nazwą domeny, na przykład mkcert nginx.local. Narzędzie tworzy dwa pliki: certyfikat oraz klucz prywatny, które należy wskazać w konfiguracji Nginx. W pliku konfiguracyjnym serwera dodajemy dyrektywy ssl_certificate wskazujące na certyfikat oraz ssl_certificate_key wskazujące na klucz. Po zmianach konfiguracji serwer wymaga przeładowania, co realizujemy poleceniem systemctl reload nginx.
Weryfikacja poprawności instalacji przebiega za pomocą openssl s_client z parametrem -showcerts, który wyświetla pełen łańcuch certyfikacji serwera. Jeśli polecenie zwraca Verify return code: 0, oznacza to, że walidacja zakończyła się sukcesem i system rozpoznaje certyfikat jako zaufany. W przypadku błędów warto sprawdzić, czy ścieżki do plików są poprawne oraz czy format certyfikatu odpowiada wymaganiom Nginx, który oczekuje formatu PEM z sekwencją BEGIN CERTIFICATE.
Przeczytaj również o brak lub nieaktywny certyfikat
Dla środowisk produkcyjnych z wieloma usługami zaleca się automatyzację odnowy certyfikatów poprzez cron job lub systemd timer. Prywatne CA wymagają regularnej rotacji, by uniknąć sytuacji, w której certyfikat straci ważność w najmniej oczekiwanym momencie. Konfiguracja crona może wyglądać następująco: 0 0 1 */3 mkcert -install && systemctl reload nginx, co zapewnia odnowę co kwartał.
Najczęstsze przyczyny problemów z certyfikatem pośrednim
Certyfikat pośredni to ogniwo łączące certyfikat końcowy z korzeniem CA, a jego brak w lokalnym magazynie to najczęstsza przyczyna niepowodzeń w walidacji. Dzieje się tak dlatego, że wiele aplikacji serwerowych nie dołącza automatycznie całego łańcucha do odpowiedzi TLS, pozostawiając to zadanie administratorowi. Kiedy przeglądarka otrzymuje certyfikat końcowy bez łańcucha, próbuje pobrać certyfikat pośredni z repozytorium online, co w środowisku izolowanym kończy się fiaskiem. Rozwiązaniem jest dołączenie całego łańcucha do konfiguracji serwera, co realizuje się poprzez konkatenację certyfikatów w jednym pliku PEM.
Problemem bywa również niezgodność formatów, ponieważ niektóre systemy operacyjne oczekują certyfikatów w formacie DER, podczas gdy aplikacje webowe pracują na formacie PEM. Przy konwersji między formatami łatwo o błąd prowadzący do tego, że certyfikat wygląda na poprawny wizualnie, ale nie jest rozpoznawany przez weryfikator. Narzędzie openssl pozwala na bezstratną konwersję poleceniem x509 z parametrem -inform DER -outform PEM, co rozwiązuje większość problemów z formatem.
Zdarza się, że certyfikat pośredni wygasł lub został unieważniony, a system nadal próbuje go wykorzystać ze względu na stare wpisy w cache. Lista unieważnionych certyfikatów (CRL) powinna być regularnie aktualizowana, a w środowiskach bez dostępu do sieci zewnętrznej wymaga to ręcznego pobrania i dystrybucji. Windows oferuje mechanizm CDP, który automatycznie pobiera listy unieważnień, ale w sieciach odciętych od internetu funkcja ta pozostaje nieaktywna.
Zarządzanie certyfikatami wymaga systematyczności, ponieważ środowisko lokalne szybko się komplikuje wraz ze wzrostem liczby usług. Dobrą praktyką jest prowadzenie rejestru wszystkich zainstalowanych certyfikatów z datami ważności, co pozwala uniknąć sytuacji, w której usługa nagle przestaje działać z powodu wygasłego certyfikatu pośredniego. Regularne audyty certyfikatów, przeprowadzane na przykład kwartalnie, minimalizują ryzyko nagłych awarii i zapewniają ciągłość działania infrastruktury.
Brak certyfikatu CA w lokalnym magazynie

Dlaczego pojawia się błąd brak certyfikatu CA w lokalnym magazynie?
Błąd ten pojawia się, gdy system nie może odnaleźć wymaganego certyfikatu głównego lub pośredniego urzędu certyfikacji (CA) w lokalnym magazynie certyfikatów. Najczęściej przyczyną jest użycie certyfikatu wystawionego przez prywatną CA lub próba weryfikacji domeny lokalnej (np. .local), której certyfikat nie jest automatycznie zaufany przez system. Aby rozwiązać problem, należy zaimportować odpowiedni certyfikat CA do magazynu lub wygenerować własny zaufany certyfikat, np. za pomocą mkcert.
Jak zaimportować certyfikat CA do lokalnego magazynu na systemie Linux?
Na systemach Linux wystarczy skopiować plik certyfikatu CA (np. localCA.pem) do katalogu /usr/local/share/ca-certificates/, nadać mu rozszerzenie .crt, a następnie uruchomić polecenie sudo update-ca-certificates. Po wykonaniu polecenia certyfikat zostanie dodany do globalnego magazynu i system będzie mu ufał.
Jak wygenerować zaufany certyfikat dla domeny lokalnej przy użyciu mkcert?
Najpierw zainstaluj mkcert (np. poprzez pobranie binarki lub menedżer pakietów). Następnie uruchom mkcert -install, aby utworzyć lokalną CA i zapisać jej certyfikat w katalogu magazynu. Potem wygeneruj certyfikat dla potrzebnej domeny poleceniem mkcert nazwa_domeny.local. Otrzymasz dwa pliki: nazwa_domeny.local.pem (certyfikat) i nazwa_domeny.local-key.pem (klucz). Teraz skopiuj certyfikat CA do /usr/local/share/ca-certificates i uruchom sudo update-ca-certificates.
Jak skonfigurować Nginx, aby używał certyfikatu wygenerowanego przez mkcert?
W pliku konfiguracyjnym Nginx (np. nginx.conf lub strona.conf) dodaj dyrektywy ssl_certificate wskazujące na plik certyfikatu oraz ssl_certificate_key wskazujące na plik klucza, np. ssl_certificate /ścieżka/nazwa_domeny.local.pem; ssl_certificate_key /ścieżka/nazwa_domeny.local-key.pem;. Następnie przeładuj Nginx poleceniem sudo systemctl reload nginx. Po tej operacji serwer będzie używał certyfikatu wygenerowanego przez mkcert.
Jak zweryfikować poprawność łańcucha certyfikatów za pomocą poleceń openssl lub curl?
Aby sprawdzić poprawność łańcucha certyfikatów, możesz użyć polecenia openssl s_client -connect nazwa_domeny.local:443 -showcerts, które wyświetli cały łańcuch i ewentualne błędy. Innym sposobem jest wywołanie curl -I https://nazwa_domeny.local jeśli połączenie zakończy się sukcesem bez ostrzeżeń, certyfikat jest zaufany. W przypadku problemów zweryfikuj, czy certyfikat CA został poprawnie zaimportowany.
Czy wymagania prawne dotyczące kwalifikowanych podpisów elektronicznych wymagają przechowywania certyfikatu CA w magazynie lokalnym?
Zgodnie z wymaganiami dotyczącymi kwalifikowanych podpisów elektronicznych, certyfikat musi pochodzić od kwalifikowanego urzędu certyfikacji i musi być możliwe zweryfikowanie jego łańcucha. Oznacza to, że środowisko, w którym realizowany jest podpis, musi posiadać odpowiednie certyfikaty CA w swoim magazynie lokalnym. Jeśli używasz prywatnej CA do celów testowych, musisz ją również dodać do magazynu, aby walidacja przebiegła pomyślnie.