Enterprise edycja
Certificate Transparency — szczegółowa referencja
W skrócie
Dział zatytułowany „W skrócie”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.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”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ę.
Publiczna powierzchnia API
Dział zatytułowany „Publiczna powierzchnia API”| Symbol | Parametry | Zachowanie domyślne | Zwraca | Zgłasza lub kończy się niepowodzeniem z | Uwagi |
|---|---|---|---|---|---|
CtValidationResult | — | Niezmienny obiekt wartości podsumowujący stan SCT certyfikatu | — | Nie zgłasza | final readonly; wszystkie cztery właściwości promowane w konstruktorze są publiczne |
CtValidationResult::__construct | bool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIds | Zapisuje podane wartości bez walidacji ani uzgadniania | Nowa instancja CtValidationResult | Brak zadeklarowanego @throws; PHP zgłasza TypeError przy niedopasowanych typach argumentów pod strict_types | Promowane publiczne właściwości readonly |
CtValidationResult::meetsPolicy | int $minimumScts = 2 | Porównuje liczbę prawidłowych SCT z progiem: validScts >= $minimumScts | bool | Nie zgłasza | Liczy tylko prawidłowe SCT; nie sprawdza odrębności logów ani obecności rozszerzenia |
final readonly class CtValidationResultpublic function __construct( public bool $hasSctsExtension, public int $totalScts, public int $validScts, public array $logIds,) {}public function meetsPolicy(int $minimumScts = 2): boolPubliczne właściwości readonly
| Właściwość | Typ | Znaczenie |
|---|---|---|
$hasSctsExtension | bool | Czy certyfikat zawiera rozszerzenie SCT |
$totalScts | int | Całkowita liczba SCT znalezionych w rozszerzeniu |
$validScts | int | Liczba SCT z prawidłowymi podpisami, ustalona wcześniej w łańcuchu |
$logIds | array<string> | Identyfikatory logów (skróty SHA-256) logów CT, które wystawiły SCT |
Kontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”CtValidationResultto 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
$logIdsto identyfikator logu zdefiniowany w RFC 6962 §3.2: skrót SHA-256 klucza publicznego logu obliczony nad jego zakodowanym w DERSubjectPublicKeyInfo. 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 to2.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.
Przypadki brzegowe i tryby awarii
Dział zatytułowany „Przypadki brzegowe i tryby awarii”- Próg zerowy lub ujemny.
meetsPolicy(0)zwracatruedla dowolnego nieujemnego$validScts. Metoda nie odrzuca tej wartości. Wybierz próg co najmniej1. - Brak rozszerzenia, liczniki dodatnie. Gdy
$hasSctsExtensionma wartośćfalse, lecz$validSctsspełnia próg,meetsPolicy()mimo to zwracatrue. Bramka musi sprawdzić$hasSctsExtensionjawnie, 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.
$validSctswiększe niż$totalSctsalbo 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ą PHPTypeErrorpodstrict_types, jak w każdym typowanym API PHP.
Zachowanie w trybie FIPS
Dział zatytułowany „Zachowanie w trybie FIPS”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.
Zgodność
Dział zatytułowany „Zgodność”| Twierdzenie | Standard | Klauzula |
|---|---|---|
| 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.
Uwagi programistyczne
Dział zatytułowany „Uwagi programistyczne”- 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=1z typowanymi właściwościami promowanymi. Błędne typy argumentów zgłaszają PHPTypeErroru wywołującego. - Klasa niesie adnotację pakietu
@sinceo wartości1.0.0i odwołuje się do RFC 6962 oraz RFC 9162 w swojej dokumentacji źródłowej. - Parametr
$logIdsjest udokumentowany jakoarray<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.
Zobacz także
Dział zatytułowany „Zobacz także”- Polityka Certificate Transparency dla certyfikatów podpisujących — strona funkcji: proces, konfiguracja i opracowana bramka polityki.
- Bezpieczeństwo — NextPDF Enterprise — połączona powierzchnia bezpieczeństwa Enterprise.
- Podpis — dokumentacja szczegółowa — producent długoterminowy PAdES B-LT i B-LTA.
- Bezpieczeństwo / Podpisywanie (Core) — podpisujący CMS w Core oraz kontrakt strategii podpisywania.
- Certificate Transparency · SCT — terminy słownikowe.
Granica publikacji
Dział zatytułowany „Granica publikacji”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.