Lewati ke konten
getnextpdf.com

Enterprise edisi

Certificate Transparency — Referensi Mendalam

Halaman ini adalah referensi mendalam untuk permukaan Certificate Transparency (CT) di NextPDF Enterprise. Permukaan ini berupa satu value object yang immutable: NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult. Ia merangkum posture Signed Certificate Timestamp (SCT) dari sebuah sertifikat penandatanganan X.509. Ia membawa flag ekstensi SCT, jumlah SCT total dan yang valid, serta identifier log penerbit. Ia mengekspos satu metode policy, meetsPolicy(), yang merupakan pemeriksaan ambang batas minimum-SCT. Tipe ini merepresentasikan sebuah hasil; ia tidak mengekstrak SCT, tidak memverifikasi tanda tangan SCT, dan tidak menghubungi CT log. Untuk panduan di level workflow, lihat Kebijakan Certificate Transparency untuk sertifikat penandatanganan.

Kapabilitas ini hadir di NextPDF Enterprise (nextpdf/enterprise) dan aktif dengan envelope lisensi tier Enterprise. Deployment tanpa entitlement tersebut tidak memuat class-class kapabilitas ini. Bandingkan edisi dan dapatkan lisensi.

SimbolParameterPerilaku defaultMengembalikanMelempar atau gagal denganCatatan
CtValidationResultValue object immutable yang merangkum posture SCT sebuah sertifikatTidak melemparfinal readonly; keempat properti yang dipromosikan lewat konstruktor bersifat public
CtValidationResult::__constructbool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIdsMenyimpan nilai yang diberikan apa adanya, tanpa validasi atau rekonsiliasiInstance CtValidationResult baruTidak ada @throws yang dideklarasikan; PHP memunculkan TypeError pada tipe argumen yang tidak cocok di bawah strict_typesProperti public readonly yang dipromosikan
CtValidationResult::meetsPolicyint $minimumScts = 2Membandingkan jumlah SCT valid terhadap ambang batas: validScts >= $minimumSctsboolTidak melemparHanya menghitung SCT valid; ia tidak memeriksa kekhasan log maupun keberadaan ekstensi
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

Properti public readonly

PropertiTipeMakna
$hasSctsExtensionboolApakah sertifikat memuat ekstensi SCT
$totalSctsintJumlah total SCT yang ditemukan dalam ekstensi
$validSctsintJumlah SCT dengan tanda tangan valid, sebagaimana ditentukan di sisi upstream
$logIdsarray<string>Identifier log (hash SHA-256) dari CT log yang menerbitkan SCT
  • CtValidationResult adalah sebuah nilai hasil. Ia merepresentasikan hasil ekstraksi dan verifikasi SCT yang dilakukan oleh lingkungan pemanggil. Ia tidak mem-parse sertifikat, tidak memverifikasi tanda tangan SCT, tidak melakukan query ke log, dan tidak mengirimkan sertifikat ke log.
  • Ekstensi yang dimaksud adalah ekstensi sertifikat X.509v3 embedded-SCT, diidentifikasi oleh OID 1.3.6.1.4.1.11129.2.4.2 — RFC 6962 §3.3. Sebuah SCT membawa sebuah versi, sebuah identifier log, sebuah timestamp, ekstensi, dan tanda tangan log atas entry tersebut — RFC 6962 §3.2.
  • Setiap entry dalam $logIds adalah identifier log sebagaimana didefinisikan oleh RFC 6962 §3.2: hash SHA-256 dari kunci publik log atas SubjectPublicKeyInfo yang ter-encode DER. Tipe ini menyimpan string apa adanya sebagaimana diberikan dan tidak menghitung ulang maupun memvalidasinya.
  • meetsPolicy() mengimplementasikan tepat satu perbandingan: jumlah SCT valid lebih besar dari atau sama dengan ambang batas. Ambang batas default adalah 2.
  • meetsPolicy() tidak berkonsultasi dengan $hasSctsExtension. Sebuah policy yang harus gagal saat ekstensi tidak ada memeriksa properti tersebut secara terpisah, sebelum atau bersamaan dengan pemeriksaan ambang batas.
  • meetsPolicy() tidak melakukan deduplikasi $logIds. Sebuah policy yang mensyaratkan SCT dari log-log independen memeriksa kekhasan melalui $logIds itu sendiri.
  • Konstruktor menyimpan input secara verbatim. Ia tidak melakukan pemeriksaan rentang maupun pemeriksaan konsistensi antar-field.
  • Instance bersifat immutable (final readonly). Semua pembacaan dan pemeriksaan ambang batas bersifat deterministik dan bebas efek samping.
  • Nilai ambang batas adalah pilihan policy operator; NextPDF tidak menetapkan angka. Sumber package mencatat satu titik referensi ekosistem: kebijakan CT Chrome, per 2024, mengharapkan setidaknya dua SCT dari log yang berbeda untuk sertifikat dengan masa berlaku hingga 180 hari, dan tiga untuk sertifikat berumur lebih panjang. Itu adalah kebijakan program browser, bukan persyaratan IETF.
  • Penempatan yang dimaksudkan adalah sebagai gerbang pra-penandatanganan: sebuah workflow penandatanganan menolak membangun signer ketika pemeriksaan gagal. Rasionalnya mengikuti model kepercayaan CT: sebuah SCT adalah janji log untuk memasukkan sertifikat, dan relying party menolak sertifikat yang tidak memiliki SCT valid — RFC 6962 §3. CT versi 2.0 mempertahankan model yang sama: sebuah log yang menerima submission mengembalikan sebuah SCT, yang divalidasi oleh submitter sebelum mengandalkannya — RFC 9162 §3.
  • Ambang batas nol atau negatif. meetsPolicy(0) mengembalikan true untuk $validScts non-negatif berapa pun. Metode ini tidak menolak nilai tersebut. Pilih ambang batas setidaknya 1.
  • Ekstensi tidak ada, jumlah positif. Ketika $hasSctsExtension bernilai false tetapi $validScts memenuhi ambang batas, meetsPolicy() tetap mengembalikan true. Gerbang harus memeriksa $hasSctsExtension secara eksplisit ketika ketiadaannya harus menyebabkan kegagalan; halaman kapabilitas menunjukkan pola ini.
  • Identifier log duplikat. N SCT valid dari sebuah log tunggal memenuhi ambang batas N. Pemeriksaan ambang batas tidak membuat klaim independensi apa pun. Policy kekhasan log memeriksa $logIds.
  • Jumlah yang tidak konsisten. Sebuah $validScts yang lebih besar dari $totalScts, atau jumlah negatif, disimpan sebagaimana diberikan. Tidak ada exception yang dimunculkan. Langkah ekstraksi upstream memiliki tanggung jawab atas konsistensi input.
  • String identifier log yang tidak divalidasi. Tipe ini tidak menerapkan bentuk 32-byte atau heksadesimal pada entry $logIds. Identifier yang malformed diteruskan tanpa perubahan.
  • Tidak ada jalur exception. Tidak ada metode pada permukaan ini yang melempar di bawah tipe PHP yang valid. Mode kegagalan dari pemeriksaan policy adalah penolakan (false), bukan sebuah exception. Tipe argumen yang tidak cocok memunculkan TypeError PHP di bawah strict_types, sebagaimana pada API PHP bertipe mana pun.

CtValidationResult tidak melakukan komputasi kriptografis apa pun. Ia tidak menghitung digest dan tidak memverifikasi tanda tangan. Apakah tanda tangan SCT dihitung sebagai valid diputuskan di sisi upstream, oleh komponen yang melakukan verifikasi sebelum membangun hasil. Profil crypto-policy FIPS 140-3 Enterprise, yang didokumentasikan bersama modul security, karena itu tidak mengubah perilaku tipe ini.

KlaimStandarKlausa
Sebuah SCT adalah janji log untuk memasukkan sertifikat; relying party menolak sertifikat yang tidak memiliki SCT valid.RFC 6962§3
Sebuah SCT membawa sebuah versi, sebuah identifier log, sebuah timestamp, ekstensi, dan tanda tangan log atas entry tersebut.RFC 6962§3.2
Identifier log adalah hash SHA-256 dari kunci publik log atas SubjectPublicKeyInfo yang ter-encode DER.RFC 6962§3.2
SCT embedded menumpang pada ekstensi sertifikat X.509v3 yang diidentifikasi oleh OID 1.3.6.1.4.1.11129.2.4.2.RFC 6962§3.3
Pada CT versi 2.0, sebuah log yang menerima submission mengembalikan sebuah SCT, yang divalidasi oleh submitter sebelum mengandalkannya.RFC 9162§3

Seluruh klausa diparafrasekan; NextPDF tidak mereproduksi teks normatif. NextPDF tidak membuat klaim konformansi atau sertifikasi Certificate Transparency apa pun. NextPDF Enterprise bukan sebuah CT log, bukan auditor, dan bukan monitor. Ia tidak mengirimkan sertifikat ke log dan ia tidak menyatakan suatu hasil verifikasi CT. Tipe ini merepresentasikan jumlah dan identifier yang dihasilkan oleh lingkungan pemanggil, dan ia mengevaluasi ambang batas yang dipilih pemanggil. Program CT browser, seperti milik Chrome, adalah kebijakan ekosistem alih-alih persyaratan normatif IETF; memilih dan memenuhi kebijakan semacam itu adalah tanggung jawab operator.

  • Value object ini tidak memiliki dependensi dan tidak melakukan I/O. Bangun instance secara langsung dalam unit test.
  • Test batas yang direkomendasikan: jumlah valid tepat di ambang batas, satu di bawah ambang batas, ekstensi tidak ada dengan jumlah di ambang batas, dan identifier log duplikat terhadap sebuah policy kekhasan.
  • Class ini dideklarasikan di bawah strict_types=1 dengan properti dipromosikan yang bertipe. Tipe argumen yang salah memunculkan TypeError PHP di sisi pemanggil.
  • Class ini membawa anotasi package @since bernilai 1.0.0 dan merujuk RFC 6962 serta RFC 9162 dalam dokumentasi sumbernya.
  • Parameter $logIds didokumentasikan sebagai array<string>; analisis statis memperlakukan properti tersebut sebagai array of string. Pertahankan bentuk itu saat membangun hasil.
  • Tempatkan verifikasi CT upstream Anda dan gerbang ambang batas ini sebelum konstruksi signer, sehingga sertifikat yang under-logged tidak pernah mencapai operasi penandatanganan. Halaman kapabilitas mendokumentasikan workflow dan contoh gerbang yang dikerjakan.

Halaman ini mendokumentasikan hanya perilaku yang dapat diamati secara eksternal dan permukaan API publik yang didukung. Path namespace internal, class helper, tabel mekanisme, nama file runbook, dan prefix tiket berada di luar cakupan.