Przejdź do głównej zawartości
getnextpdf.com

Enterprise edycja

Certificate Transparency — szczegółowa referencja

Ta strona to dokumentacja szczegółowa powierzchni Certificate Transparency (CT) w NextPDF Enterprise. Powierzchnia to jeden niezmienny obiekt wartości: NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult. Podsumowuje stan Signed Certificate Timestamp (SCT) certyfikatu podpisującego X.509. Niesie flagę rozszerzenia SCT, całkowitą i prawidłową liczbę SCT oraz identyfikatory logów wystawiających. Udostępnia jedną metodę polityki, meetsPolicy(), będącą sprawdzeniem progu minimalnej liczby SCT. Typ reprezentuje wynik; nie ekstrahuje SCT, nie weryfikuje podpisów SCT ani nie kontaktuje się z logami CT. Przewodnik na poziomie procesu znajdziesz w Polityka Certificate Transparency dla certyfikatów podpisujących.

Ta funkcja jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się wraz z kopertą licencyjną poziomu Enterprise. Wdrożenie bez tego uprawnienia nie ładuje klas tej funkcji. Porównaj edycje i uzyskaj licencję.

SymbolParametryZachowanie domyślneZwracaZgłasza lub kończy się niepowodzeniem zUwagi
CtValidationResultNiezmienny obiekt wartości podsumowujący stan SCT certyfikatuNie zgłaszafinal readonly; wszystkie cztery właściwości promowane w konstruktorze są publiczne
CtValidationResult::__constructbool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIdsZapisuje podane wartości bez walidacji ani uzgadnianiaNowa instancja CtValidationResultBrak zadeklarowanego @throws; PHP zgłasza TypeError przy niedopasowanych typach argumentów pod strict_typesPromowane publiczne właściwości readonly
CtValidationResult::meetsPolicyint $minimumScts = 2Porównuje liczbę prawidłowych SCT z progiem: validScts >= $minimumSctsboolNie zgłaszaLiczy tylko prawidłowe SCT; nie sprawdza odrębności logów ani obecności rozszerzenia
final readonly class CtValidationResult
public function __construct(
public bool $hasSctsExtension,
public int $totalScts,
public int $validScts,
public array $logIds,
) {}
public function meetsPolicy(int $minimumScts = 2): bool

Publiczne właściwości readonly

WłaściwośćTypZnaczenie
$hasSctsExtensionboolCzy certyfikat zawiera rozszerzenie SCT
$totalSctsintCałkowita liczba SCT znalezionych w rozszerzeniu
$validSctsintLiczba SCT z prawidłowymi podpisami, ustalona wcześniej w łańcuchu
$logIdsarray<string>Identyfikatory logów (skróty SHA-256) logów CT, które wystawiły SCT
  • CtValidationResult to wartość wyniku. Reprezentuje rezultat ekstrakcji i weryfikacji SCT, które wykonało środowisko wywołującego. Nie parsuje certyfikatów, nie weryfikuje podpisów SCT, nie odpytuje logów ani nie przesyła certyfikatów do logów.
  • Rozszerzeniem, o którym mowa, jest osadzone w certyfikacie rozszerzenie SCT X.509v3, identyfikowane przez OID 1.3.6.1.4.1.11129.2.4.2 — RFC 6962 §3.3. SCT niesie wersję, identyfikator logu, znacznik czasu, rozszerzenia oraz podpis logu nad wpisem — RFC 6962 §3.2.
  • Każdy wpis w $logIds to identyfikator logu zdefiniowany w RFC 6962 §3.2: skrót SHA-256 klucza publicznego logu obliczony nad jego zakodowanym w DER SubjectPublicKeyInfo. Typ zapisuje łańcuchy w podanej postaci i nie przelicza ich ani nie waliduje.
  • meetsPolicy() realizuje dokładnie jedno porównanie: liczba prawidłowych SCT jest większa lub równa progowi. Domyślny próg to 2.
  • meetsPolicy() nie sprawdza $hasSctsExtension. Polityka, która musi zawieść przy braku rozszerzenia, sprawdza tę właściwość osobno, przed sprawdzeniem progu lub równolegle z nim.
  • meetsPolicy() nie usuwa duplikatów z $logIds. Polityka wymagająca SCT z niezależnych logów sprawdza odrębność za pomocą samego $logIds.
  • Konstruktor zapisuje dane wejściowe dosłownie. Nie wykonuje sprawdzeń zakresu ani sprawdzeń spójności między polami.
  • Instancje są niezmienne (final readonly). Wszystkie odczyty oraz sprawdzenie progu są deterministyczne i wolne od skutków ubocznych.
  • Wartość progu to wybór polityki operatora; NextPDF nie narzuca żadnej liczby. Źródło pakietu adnotuje jeden punkt odniesienia w ekosystemie: polityka CT przeglądarki Chrome, stan na 2024, oczekuje co najmniej dwóch SCT z różnych logów dla certyfikatów o okresie ważności do 180 dni oraz trzech dla certyfikatów o dłuższym okresie ważności. Jest to polityka programu przeglądarki, a nie wymóg IETF.
  • Zamierzonym miejscem jest bramka przed podpisaniem: proces podpisywania odmawia skonstruowania podpisującego, gdy sprawdzenie zawiedzie. Uzasadnienie wynika z modelu zaufania CT: SCT jest obietnicą logu, że włączy certyfikat, a strony ufające odrzucają certyfikat, któremu brakuje prawidłowego SCT — RFC 6962 §3. CT w wersji 2.0 zachowuje ten sam model: log, który przyjmuje zgłoszenie, zwraca SCT, który zgłaszający waliduje przed poleganiem na nim — RFC 9162 §3.
  • Próg zerowy lub ujemny. meetsPolicy(0) zwraca true dla dowolnego nieujemnego $validScts. Metoda nie odrzuca tej wartości. Wybierz próg co najmniej 1.
  • Brak rozszerzenia, liczniki dodatnie. Gdy $hasSctsExtension ma wartość false, lecz $validScts spełnia próg, meetsPolicy() mimo to zwraca true. Bramka musi sprawdzić $hasSctsExtension jawnie, gdy brak musi oznaczać niepowodzenie; strona funkcji pokazuje ten wzorzec.
  • Zduplikowane identyfikatory logów. N prawidłowych SCT z jednego logu spełnia próg N. Sprawdzenie progu nie czyni żadnego założenia o niezależności. Polityki odrębności logów badają $logIds.
  • Niespójne liczniki. $validScts większe niż $totalScts albo licznik ujemny są zapisywane w podanej postaci. Nie jest zgłaszany żaden wyjątek. Za spójność danych wejściowych odpowiada wcześniejszy krok ekstrakcji.
  • Niezwalidowane łańcuchy identyfikatorów logów. Typ nie wymusza kształtu 32-bajtowego ani szesnastkowego na wpisach $logIds. Zniekształcone identyfikatory przechodzą bez zmian.
  • Brak ścieżki wyjątku. Żadna metoda tej powierzchni nie zgłasza wyjątku przy prawidłowych typach PHP. Trybem awarii sprawdzenia polityki jest odmowa (false), a nie wyjątek. Niedopasowane typy argumentów zgłaszają PHP TypeError pod strict_types, jak w każdym typowanym API PHP.

CtValidationResult nie wykonuje żadnych obliczeń kryptograficznych. Nie oblicza żadnego skrótu i nie weryfikuje żadnego podpisu. To, czy podpis SCT został policzony jako prawidłowy, jest rozstrzygane wcześniej w łańcuchu, przez komponent, który wykonał weryfikację przed skonstruowaniem wyniku. Profil polityki kryptograficznej FIPS 140-3 dla Enterprise, udokumentowany przy module bezpieczeństwa, nie zmienia zatem zachowania tego typu.

TwierdzenieStandardKlauzula
SCT jest obietnicą logu, że włączy certyfikat; strony ufające odrzucają certyfikat, któremu brakuje prawidłowego SCT.RFC 6962§3
SCT niesie wersję, identyfikator logu, znacznik czasu, rozszerzenia oraz podpis logu nad wpisem.RFC 6962§3.2
Identyfikator logu to skrót SHA-256 klucza publicznego logu nad jego zakodowanym w DER SubjectPublicKeyInfo.RFC 6962§3.2
Osadzone SCT są przenoszone w rozszerzeniu certyfikatu X.509v3 identyfikowanym przez OID 1.3.6.1.4.1.11129.2.4.2.RFC 6962§3.3
W CT w wersji 2.0 log, który przyjmuje zgłoszenie, zwraca SCT, który zgłaszający waliduje przed poleganiem na nim.RFC 9162§3

Wszystkie klauzule są parafrazowane; NextPDF nie odtwarza tekstu normatywnego. NextPDF nie składa żadnego twierdzenia o zgodności ani certyfikacji Certificate Transparency. NextPDF Enterprise nie jest logiem CT, audytorem ani monitorem. Nie przesyła certyfikatów do logów i nie stwierdza wyniku weryfikacji CT. Typ reprezentuje liczniki i identyfikatory wytworzone przez środowisko wywołującego oraz ocenia próg wybrany przez wywołującego. Programy CT przeglądarek, takie jak program Chrome, są politykami ekosystemu, a nie normatywnymi wymogami IETF; wybór i spełnienie takiej polityki należy do odpowiedzialności operatora.

  • Obiekt wartości nie ma zależności ani operacji we/wy. Konstruuj instancje bezpośrednio w testach jednostkowych.
  • Zalecane testy brzegowe: prawidłowy licznik dokładnie na progu, jeden poniżej progu, brak rozszerzenia przy licznikach na progu oraz zduplikowane identyfikatory logów wobec polityki odrębności.
  • Klasa jest zadeklarowana pod strict_types=1 z typowanymi właściwościami promowanymi. Błędne typy argumentów zgłaszają PHP TypeError u wywołującego.
  • Klasa niesie adnotację pakietu @since o wartości 1.0.0 i odwołuje się do RFC 6962 oraz RFC 9162 w swojej dokumentacji źródłowej.
  • Parametr $logIds jest udokumentowany jako array<string>; analiza statyczna traktuje tę właściwość jako tablicę łańcuchów. Zachowaj ten kształt podczas konstruowania wyników.
  • Umieść swoją wcześniejszą weryfikację CT oraz tę bramkę progu przed konstrukcją podpisującego, aby certyfikat z niedostatecznym zalogowaniem nigdy nie dotarł do operacji podpisywania. Strona funkcji dokumentuje proces oraz opracowany przykład bramki.

Ta strona dokumentuje wyłącznie zachowanie obserwowalne z zewnątrz oraz wspieraną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.