Enterprise édition
Certificate Transparency — Référence détaillée
En un coup d’œil
Section intitulée « En un coup d’œil »Cette page est la référence détaillée de la surface Certificate Transparency (CT) dans NextPDF Enterprise. Cette surface est un unique objet-valeur immuable : NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult. Il résume la posture Signed Certificate Timestamp (SCT) d’un certificat de signature X.509. Il porte le drapeau de l’extension SCT, le nombre total et le nombre valide de SCT, ainsi que les identifiants des logs émetteurs. Il expose une seule méthode de politique, meetsPolicy(), qui est un contrôle de seuil minimal de SCT. Le type représente un résultat ; il n’extrait pas les SCT, ne vérifie pas les signatures des SCT et ne contacte pas les logs CT. Pour le guide au niveau du workflow, voir Politique Certificate Transparency pour les certificats de signature.
Disponibilité et licence
Section intitulée « Disponibilité et licence »Cette capacité est livrée dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de palier Enterprise. Un déploiement sans ce droit d’accès ne charge pas les classes de la capacité. Compare les éditions et obtiens une licence.
Surface de l’API publique
Section intitulée « Surface de l’API publique »| Symbole | Paramètres | Comportement par défaut | Retourne | Lève ou échoue avec | Notes |
|---|---|---|---|---|---|
CtValidationResult | — | Objet-valeur immuable résumant la posture SCT d’un certificat | — | Ne lève pas | final readonly ; les quatre propriétés promues par le constructeur sont publiques |
CtValidationResult::__construct | bool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIds | Stocke les valeurs fournies telles quelles, sans validation ni réconciliation | Nouvelle instance CtValidationResult | Aucun @throws déclaré ; PHP lève TypeError sur des types d’arguments incompatibles sous strict_types | Propriétés publiques readonly promues |
CtValidationResult::meetsPolicy | int $minimumScts = 2 | Compare le nombre de SCT valides au seuil : validScts >= $minimumScts | bool | Ne lève pas | Compte uniquement les SCT valides ; ne vérifie ni la distinction des logs ni la présence de l’extension |
final readonly class CtValidationResultpublic function __construct( public bool $hasSctsExtension, public int $totalScts, public int $validScts, public array $logIds,) {}public function meetsPolicy(int $minimumScts = 2): boolPropriétés publiques readonly
| Propriété | Type | Signification |
|---|---|---|
$hasSctsExtension | bool | Indique si le certificat contient l’extension SCT |
$totalScts | int | Nombre total de SCT trouvés dans l’extension |
$validScts | int | Nombre de SCT à signature valide, tel que déterminé en amont |
$logIds | array<string> | Identifiants (hachages SHA-256) des logs CT qui ont émis les SCT |
Contrat de comportement
Section intitulée « Contrat de comportement »CtValidationResultest une valeur de résultat. Elle représente l’issue de l’extraction et de la vérification des SCT effectuées par l’environnement de l’appelant. Elle n’analyse pas les certificats, ne vérifie pas les signatures des SCT, n’interroge pas les logs et ne soumet pas de certificats aux logs.- L’extension en question est l’extension de certificat X.509v3 à SCT embarqués, identifiée par l’OID
1.3.6.1.4.1.11129.2.4.2— RFC 6962 §3.3. Un SCT porte une version, un identifiant de log, un horodatage, des extensions et la signature du log sur l’entrée — RFC 6962 §3.2. - Chaque entrée de
$logIdsest un identifiant de log au sens de la RFC 6962 §3.2 : le hachage SHA-256 de la clé publique du log sur sonSubjectPublicKeyInfoencodé en DER. Le type stocke les chaînes telles que fournies et ne les recalcule ni ne les valide. meetsPolicy()implémente exactement une comparaison : le nombre de SCT valides est supérieur ou égal au seuil. Le seuil par défaut est2.meetsPolicy()ne consulte pas$hasSctsExtension. Une politique qui doit échouer sur une extension absente contrôle la propriété séparément, avant ou parallèlement au contrôle de seuil.meetsPolicy()ne déduplique pas$logIds. Une politique qui exige des SCT provenant de logs indépendants vérifie la distinction via$logIdslui-même.- Le constructeur stocke les entrées telles quelles. Il n’effectue aucun contrôle de plage ni aucun contrôle de cohérence entre champs.
- Les instances sont immuables (
final readonly). Toutes les lectures et le contrôle de seuil sont déterministes et sans effet de bord. - La valeur du seuil relève du choix de politique de l’opérateur ; NextPDF n’impose aucun nombre. La source du package annote un point de référence de l’écosystème : la politique CT de Chrome, à la date de 2024, attend au moins deux SCT provenant de logs différents pour les certificats d’une durée de vie allant jusqu’à 180 jours, et trois pour les certificats à durée de vie plus longue. Il s’agit d’une politique de programme de navigateur, non d’une exigence de l’IETF.
- Le placement prévu est un contrôle avant signature : un workflow de signature refuse de construire un signataire lorsque le contrôle échoue. La justification suit le modèle de confiance CT : un SCT est la promesse du log d’incorporer le certificat, et les parties utilisatrices rejettent un certificat dépourvu de SCT valide — RFC 6962 §3. La version 2.0 de CT conserve le même modèle : un log qui accepte une soumission retourne un SCT, que le soumissionnaire valide avant de s’y fier — RFC 9162 §3.
Cas limites et modes de défaillance
Section intitulée « Cas limites et modes de défaillance »- Seuil nul ou négatif.
meetsPolicy(0)retournetruepour tout$validSctsnon négatif. La méthode ne rejette pas la valeur. Choisis un seuil d’au moins1. - Extension absente, compteurs positifs. Lorsque
$hasSctsExtensionvautfalsemais que$validSctsatteint le seuil,meetsPolicy()retourne quand mêmetrue. Le contrôle doit vérifier$hasSctsExtensionexplicitement lorsque l’absence doit échouer ; la page de capacité montre ce motif. - Identifiants de log en double. N SCT valides provenant d’un unique log satisfont un seuil de N. Le contrôle de seuil ne fait aucune affirmation d’indépendance. Les politiques de distinction des logs inspectent
$logIds. - Compteurs incohérents. Un
$validSctssupérieur à$totalScts, ou un compteur négatif, est stocké tel que fourni. Aucune exception n’est levée. L’étape d’extraction en amont porte la responsabilité de la cohérence des entrées. - Chaînes d’identifiant de log non validées. Le type n’impose ni forme de 32 octets ni forme hexadécimale sur les entrées de
$logIds. Les identifiants malformés passent inchangés. - Aucun chemin d’exception. Aucune méthode de cette surface ne lève d’exception sous des types PHP valides. Le mode de défaillance du contrôle de politique est le refus (
false), non une exception. Des types d’arguments incompatibles lèvent unTypeErrorPHP sousstrict_types, comme pour toute API PHP typée.
Comportement en mode FIPS
Section intitulée « Comportement en mode FIPS »CtValidationResult n’effectue aucun calcul cryptographique. Il ne calcule aucun condensé et ne vérifie aucune signature. Le fait qu’une signature SCT ait été comptée comme valide est décidé en amont, par le composant qui a effectué la vérification avant de construire le résultat. Le profil de politique cryptographique FIPS 140-3 d’Enterprise, documenté avec le module de sécurité, n’altère donc pas le comportement de ce type.
Conformité
Section intitulée « Conformité »| Affirmation | Standard | Clause |
|---|---|---|
| Un SCT est la promesse du log d’incorporer le certificat ; les parties utilisatrices rejettent un certificat dépourvu de SCT valide. | RFC 6962 | §3 |
| Un SCT porte une version, un identifiant de log, un horodatage, des extensions et la signature du log sur l’entrée. | RFC 6962 | §3.2 |
L’identifiant de log est le hachage SHA-256 de la clé publique du log sur son SubjectPublicKeyInfo encodé en DER. | RFC 6962 | §3.2 |
Les SCT embarqués voyagent dans une extension de certificat X.509v3 identifiée par l’OID 1.3.6.1.4.1.11129.2.4.2. | RFC 6962 | §3.3 |
| Dans la version 2.0 de CT, un log qui accepte une soumission retourne un SCT, que le soumissionnaire valide avant de s’y fier. | RFC 9162 | §3 |
Toutes les clauses sont paraphrasées ; NextPDF ne reproduit pas le texte normatif. NextPDF ne formule aucune affirmation de conformité ni de certification Certificate Transparency. NextPDF Enterprise n’est ni un log CT, ni un auditeur, ni un moniteur. Il ne soumet pas de certificats aux logs et n’affirme pas d’issue de vérification CT. Le type représente des compteurs et des identifiants produits par l’environnement de l’appelant, et il évalue un seuil choisi par l’appelant. Les programmes CT des navigateurs, tel celui de Chrome, sont des politiques d’écosystème plutôt que des exigences normatives de l’IETF ; sélectionner et satisfaire une telle politique relève de la responsabilité de l’opérateur.
Notes de développement
Section intitulée « Notes de développement »- L’objet-valeur n’a aucune dépendance et aucune E/S. Construis les instances directement dans les tests unitaires.
- Tests aux limites recommandés : nombre valide exactement au seuil, un en dessous du seuil, extension absente avec des compteurs au seuil, et identifiants de log en double face à une politique de distinction.
- La classe est déclarée sous
strict_types=1avec des propriétés promues typées. Des types d’arguments erronés lèvent unTypeErrorPHP chez l’appelant. - La classe porte une annotation de package
@sincede1.0.0et référence les RFC 6962 et RFC 9162 dans sa documentation source. - Le paramètre
$logIdsest documenté commearray<string>; l’analyse statique traite la propriété comme un tableau de chaînes. Préserve cette forme lors de la construction des résultats. - Place ta vérification CT en amont et ce contrôle de seuil avant la construction du signataire, afin qu’un certificat insuffisamment journalisé n’atteigne jamais une opération de signature. La page de capacité documente le workflow et un exemple de contrôle abouti.
Voir aussi
Section intitulée « Voir aussi »- Politique Certificate Transparency pour les certificats de signature — la page de capacité : workflow, configuration et un contrôle de politique abouti.
- Sécurité — NextPDF Enterprise — la surface de sécurité Enterprise combinée.
- Signature — Référence détaillée — le producteur long terme PAdES B-LT et B-LTA.
- Sécurité / Signature (Core) — le signataire CMS Core et le contrat de stratégie de signature.
- Certificate Transparency · SCT — termes du glossaire.
Frontière de publication
Section intitulée « Frontière de publication »Cette page documente uniquement le comportement observable de l’extérieur et la surface de l’API publique prise en charge. Les chemins de namespace internes, les classes utilitaires, les tables de mécanismes, les noms de fichiers de runbook et les préfixes de tickets sont hors périmètre.