Ga naar inhoud
getnextpdf.com

Enterprise editie

Certificate Transparency — Diepe referentie

Deze pagina is de diepgaande referentie voor het Certificate Transparency (CT)-oppervlak in NextPDF Enterprise. Het oppervlak is één onveranderlijk value object: NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult. Het vat de Signed Certificate Timestamp (SCT)-houding van een X.509-ondertekeningscertificaat samen. Het bevat de SCT-extensievlag, de totale en geldige SCT-aantallen, en de identifiers van de uitgevende logs. Het stelt één beleidsmethode beschikbaar, meetsPolicy(), wat een minimum-SCT-drempelcontrole is. Het type vertegenwoordigt een resultaat; het extraheert geen SCT’s, verifieert geen SCT-handtekeningen en neemt geen contact op met CT-logs. Voor de gids op workflowniveau, zie Certificate Transparency-beleid voor ondertekeningscertificaten.

Deze mogelijkheid wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en activeert met een licentie-envelop op Enterprise-niveau. Een deployment zonder die toekenning laadt de klassen van de mogelijkheid niet. Vergelijk edities en verkrijg een licentie.

SymboolParametersStandaardgedragRetourneertWerpt of faalt metOpmerkingen
CtValidationResultOnveranderlijk value object dat de SCT-houding van een certificaat samenvatWerpt nietfinal readonly; alle vier constructor-promoted eigenschappen zijn public
CtValidationResult::__constructbool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIdsSlaat de aangeleverde waarden op zoals ze zijn, zonder validatie of afstemmingNieuwe CtValidationResult-instantieGeen gedeclareerde @throws; PHP werpt TypeError bij niet-overeenkomende argumenttypen onder strict_typesPromoted public readonly eigenschappen
CtValidationResult::meetsPolicyint $minimumScts = 2Vergelijkt het aantal geldige SCT’s met de drempel: validScts >= $minimumSctsboolWerpt nietTelt alleen geldige SCT’s; het controleert geen log-onderscheidbaarheid of aanwezigheid van de extensie
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

Public readonly eigenschappen

EigenschapTypeBetekenis
$hasSctsExtensionboolOf het certificaat de SCT-extensie bevat
$totalSctsintTotaal aantal SCT’s dat in de extensie is gevonden
$validSctsintAantal SCT’s met geldige handtekeningen, zoals stroomopwaarts bepaald
$logIdsarray<string>Log-identifiers (SHA-256-hashes) van de CT-logs die de SCT’s hebben uitgegeven
  • CtValidationResult is een resultaatwaarde. Het vertegenwoordigt de uitkomst van SCT-extractie en -verificatie die de omgeving van de aanroeper heeft uitgevoerd. Het parseert geen certificaten, verifieert geen SCT-handtekeningen, bevraagt geen logs en dient geen certificaten in bij logs.
  • De extensie in kwestie is de embedded-SCT X.509v3-certificaatextensie, geïdentificeerd door OID 1.3.6.1.4.1.11129.2.4.2 — RFC 6962 §3.3. Een SCT bevat een versie, een log-identifier, een tijdstempel, extensies en de log-handtekening over het entry — RFC 6962 §3.2.
  • Elke vermelding in $logIds is een log-identifier zoals gedefinieerd door RFC 6962 §3.2: de SHA-256-hash van de publieke sleutel van het log over zijn DER-gecodeerde SubjectPublicKeyInfo. Het type slaat de strings op zoals aangeleverd en herberekent of valideert ze niet.
  • meetsPolicy() implementeert precies één vergelijking: het aantal geldige SCT’s is groter dan of gelijk aan de drempel. De standaarddrempel is 2.
  • meetsPolicy() raadpleegt $hasSctsExtension niet. Een beleid dat moet falen bij een ontbrekende extensie controleert de eigenschap afzonderlijk, vóór of naast de drempelcontrole.
  • meetsPolicy() ontdubbelt $logIds niet. Een beleid dat SCT’s van onafhankelijke logs vereist, controleert de onderscheidbaarheid via $logIds zelf.
  • De constructor slaat de invoer letterlijk op. Het voert geen bereikcontroles en geen kruisveld-consistentiecontroles uit.
  • Instanties zijn onveranderlijk (final readonly). Alle leesbewerkingen en de drempelcontrole zijn deterministisch en zonder neveneffecten.
  • De drempelwaarde is de beleidskeuze van de operator; NextPDF legt geen getal op. De pakketbron annoteert één referentiepunt uit het ecosysteem: het CT-beleid van Chrome verwacht, per 2024, ten minste twee SCT’s van verschillende logs voor certificaten met een levensduur tot 180 dagen, en drie voor langerlevende certificaten. Dat is een beleid van een browserprogramma, geen IETF-vereiste.
  • De beoogde plaatsing is een pre-signing-gate: een ondertekeningsworkflow weigert een signer te construeren wanneer de controle faalt. De motivatie volgt het CT-vertrouwensmodel: een SCT is de belofte van het log om het certificaat op te nemen, en vertrouwende partijen wijzen een certificaat af dat geen geldige SCT bevat — RFC 6962 §3. CT versie 2.0 behoudt hetzelfde model: een log dat een indiening accepteert, retourneert een SCT, die de indiener valideert voordat hij erop vertrouwt — RFC 9162 §3.
  • Nul of negatieve drempel. meetsPolicy(0) retourneert true voor elke niet-negatieve $validScts. De methode wijst de waarde niet af. Kies een drempel van ten minste 1.
  • Extensie afwezig, aantallen positief. Wanneer $hasSctsExtension false is maar $validScts de drempel haalt, retourneert meetsPolicy() toch true. De gate moet $hasSctsExtension expliciet controleren wanneer afwezigheid moet falen; de mogelijkheidspagina toont dit patroon.
  • Dubbele log-identifiers. N geldige SCT’s van één enkel log voldoen aan een drempel van N. De drempelcontrole doet geen onafhankelijkheidsclaim. Beleid voor log-onderscheidbaarheid inspecteert $logIds.
  • Inconsistente aantallen. Een $validScts groter dan $totalScts, of een negatief aantal, wordt opgeslagen zoals aangeleverd. Er wordt geen uitzondering geworpen. De stroomopwaartse extractiestap is verantwoordelijk voor de consistentie van de invoer.
  • Ongevalideerde log-identifier-strings. Het type dwingt geen 32-byte- of hexadecimale vorm af op vermeldingen in $logIds. Misvormde identifiers worden ongewijzigd doorgegeven.
  • Geen uitzonderingspad. Geen enkele methode op dit oppervlak werpt onder geldige PHP-typen. De foutmodus van de beleidscontrole is weigering (false), geen uitzondering. Niet-overeenkomende argumenttypen werpen een PHP TypeError onder strict_types, net als bij elke getypeerde PHP-API.

CtValidationResult voert geen cryptografische berekening uit. Het berekent geen digest en verifieert geen handtekening. Of een SCT-handtekening als geldig werd geteld, wordt stroomopwaarts beslist, door het component dat de verificatie uitvoerde voordat het resultaat werd geconstrueerd. Het Enterprise FIPS 140-3 crypto-beleidsprofiel, gedocumenteerd bij de security-module, wijzigt daarom het gedrag van dit type niet.

ClaimStandaardClausule
Een SCT is de belofte van het log om het certificaat op te nemen; vertrouwende partijen wijzen een certificaat zonder geldige SCT af.RFC 6962§3
Een SCT bevat een versie, een log-identifier, een tijdstempel, extensies en de log-handtekening over het entry.RFC 6962§3.2
De log-identifier is de SHA-256-hash van de publieke sleutel van het log over zijn DER-gecodeerde SubjectPublicKeyInfo.RFC 6962§3.2
Embedded SCT’s zitten in een X.509v3-certificaatextensie geïdentificeerd door OID 1.3.6.1.4.1.11129.2.4.2.RFC 6962§3.3
In CT versie 2.0 retourneert een log dat een indiening accepteert een SCT, die de indiener valideert voordat hij erop vertrouwt.RFC 9162§3

Alle clausules zijn geparafraseerd; NextPDF reproduceert geen normatieve tekst. NextPDF doet geen enkele Certificate Transparency-conformiteits- of certificeringsclaim. NextPDF Enterprise is geen CT-log, auditor of monitor. Het dient geen certificaten in bij logs en het beweert geen uitkomst van CT-verificatie. Het type vertegenwoordigt aantallen en identifiers die de omgeving van de aanroeper heeft geproduceerd, en het evalueert een door de aanroeper gekozen drempel. Browser-CT-programma’s, zoals dat van Chrome, zijn ecosysteembeleid en geen IETF-normatieve vereisten; het selecteren en voldoen aan een dergelijk beleid is de verantwoordelijkheid van de operator.

  • Het value object heeft geen afhankelijkheden en geen I/O. Construeer instanties rechtstreeks in unit-tests.
  • Aanbevolen grenstests: geldig aantal precies op de drempel, één eronder, extensie afwezig met aantallen op de drempel, en dubbele log-identifiers tegen een onderscheidbaarheidsbeleid.
  • De klasse is gedeclareerd onder strict_types=1 met getypeerde promoted eigenschappen. Verkeerde argumenttypen werpen een PHP TypeError bij de aanroeper.
  • De klasse draagt een pakket-@since-annotatie van 1.0.0 en verwijst naar RFC 6962 en RFC 9162 in de brondocumentatie.
  • De $logIds-parameter is gedocumenteerd als array<string>; statische analyse behandelt de eigenschap als een array van strings. Behoud die vorm bij het construeren van resultaten.
  • Plaats je stroomopwaartse CT-verificatie en deze drempel-gate vóór de constructie van de signer, zodat een onvoldoende gelogd certificaat nooit een ondertekeningsoperatie bereikt. De mogelijkheidspagina documenteert de workflow en een uitgewerkt gate-voorbeeld.

Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, hulpklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.