Inwentarz certyfikatów VPN: co może udowodnić rejestr CA
Folder na serwerze, rejestr CA, lista unieważnień i tabela sesji odpowiadają na różne pytania. Trzymaj je osobno, gdy inwentaryzujesz tożsamości VPN.
Twoja brama akceptuje certyfikat klienta, którego nigdy nie widziała, ponieważ to, czym jest skonfigurowana, jest zaufanym wystawcą, a certyfikat przychodzi podczas uścisku dłoni. Tak protokół ma działać i właśnie dlatego lista katalogu na serwerze jest złym inwentarzem. Wystawca wie, co utworzył, serwer wie, co się połączyło, a stan unieważnienia wie, co zostało wycofane. Inwentarz, który miesza te trzy zapisy, w końcu twierdzi coś, czego żaden z nich nie powiedział.
Brama ufa wystawcy, a nie liście plików
Walidacja porównuje przedstawiony certyfikat z kotwicą zaufania, więc tożsamość utworzona wczoraj przez tego samego wystawcę łączy się, nigdy nie istniejąc na dysku serwera. Nic nie musi być skopiowane, żeby tak się stało, i nikt nie musi tego zatwierdzać ręcznie. Własne zapisy serwera opisują więc przybycia, a nie populację tożsamości, które mogłyby przybyć.
Odwrotna luka jest równie niewygodna. Katalog może zawierać certyfikaty wygasłe, unieważnione oraz tożsamości wydane dla urządzeń, które nigdy nie zostały wdrożone. Liczenie plików odpowiada, ile plików jest, co jest pytaniem, którego nikt nie zadał. Zacznij zamiast tego od zapisów, które niosą znaczenie.
Cztery pytania, cztery różne rejestry
Każdy typ zapisu dobrze odpowiada na jedno pytanie, a źle na pozostałe, dlatego raport, który je łączy, wygląda na kompletny, choć jest błędny w konkretny sposób. Poniższa tabela porządkuje je według pytania, które rozstrzygają, a nie według systemu, który je wytwarza.
| Question you are answering | Where the answer lives | How quickly it changes | What it will never show |
|---|---|---|---|
| Was this identity ever created? | The issuer's issuance database | Only when something is issued | Whether the device still exists |
| Is a copy sitting on this host? | The paths you actually inspected | Whenever anyone copies files | Certificates that were never copied here |
| Has the issuer withdrawn it? | Published revocation state | When the issuer next publishes | Withdrawals that are not published yet |
| Is it connected right now? | The live session table | Continuously | Anything about past or future sessions |
Archiwum certyfikatów publicznych nie jest tajemnicą, ponieważ nie zawiera kluczy prywatnych, ale nie jest też do udostępniania. Podmioty i nazwy urządzeń ujawniają szczegóły operacyjne, a raport powinien pozostać u odbiorców, którzy go potrzebują. Klucze prywatne pozostają całkowicie poza inwentarzem, ponieważ inwentarz potrzebuje metadanych, a nie poświadczeń.
Wystawca i numer seryjny to jedyny stabilny klucz
Podmioty są poddawane recyklingowi, a nazwy plików są używane ponownie, więc nazwa, która w zeszłym roku wskazywała jedno urządzenie, może teraz wskazywać inne. Żadna z nich nie jest kluczem, a raport zbudowany na którejkolwiek z nich w końcu połączy dwie tożsamości w jedną linię.
Para wystawca i numer seryjny jednoznacznie identyfikuje certyfikat, a oba pola pochodzą z samego certyfikatu. Zapisz je wraz z podmiotem, datami ważności, źródłem, z którego pochodzi kopia, oraz odpowiedzialną osobą lub urządzeniem. Dodaj stan unieważnienia i wdrożenia jako osobne pola z własnymi czasami obserwacji, ponieważ certyfikat w swoim oknie ważności nie jest automatycznie autoryzowany. Te dwa fakty żyją w różnych systemach, a ich łączenie ukrywa przypadek, w którym tożsamość została wycofana, podczas gdy jej plik nadal wygląda na aktualny.
Czytaj po jednym certyfikacie
Symbol wieloznaczny rozciągający się na katalog nie jest interfejsem wsadowym i ukrywa, który plik dał które wyjście. Czytaj metadane certyfikat po certyfikacie, a stronę unieważnienia czytaj z jej własnego artefaktu. Dokumentacja OpenSSL x509 wymienia pola, które wypisują te opcje.
openssl x509 -in <cert>.pem -noout -issuer -serial -subject -dates -fingerprint -sha256
openssl crl -in <issuer>.crl -noout -text | head -n 40
W zarządzanym PKI Easy-RSA odpytuj bazę wydań przez przepływ pracy obsługiwany przez narzędzie zamiast zakładać układ katalogów, i trzymaj oryginały tylko do odczytu, dopóki inwentarz jest składany. Format rejestru jest wystarczająco regularny, aby policzyć ważne wpisy i wylistować wycofane bez otwierania bazy ręcznie.
grep -c '^V' pki/index.txt
grep '^R' pki/index.txt | cut -f4,5
Inwentarz, który przetrwa kolejne wystawienie
Jednorazowy zrzut katalogu starzeje się w chwili wystawienia następnego certyfikatu, więc buduj raport z przepływu wydań i pozwól mu się aktualizować jako części normalnej pracy. To czyni raport również odtwarzalnym, co ma znaczenie, gdy dwie osoby nie zgadzają się co do tego, co wydano.
Używaj wyniku do decyzji o odnowieniu i wycofaniu, a nie jako ćwiczenia z arkusza kalkulacyjnego. Usunięcie lokalnej kopii nie unieważnia zdalnych kopii, które już istnieją. Wycofaj tożsamość przez skonfigurowany przepływ unieważnienia i autoryzacji, a następnie zapisz wycofanie z jego datą. Tożsamość, która zniknęła z serwera, ale wystawca nadal jej ufa, nie została wycofana, i właśnie ta różnica dzieli dokładny inwentarz od takiego, który tylko uspokaja.