ข้ามไปยังเนื้อหา
getnextpdf.com

Enterprise รุ่น

Certificate Transparency — เอกสารอ้างอิงเชิงลึก

หน้านี้คือการอ้างอิงเชิงลึกสำหรับพื้นผิว Certificate Transparency (CT) ใน NextPDF Enterprise พื้นผิวนี้เป็น value object ที่ไม่เปลี่ยนแปลงเพียงตัวเดียวคือ NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult ซึ่งสรุปสถานะ Signed Certificate Timestamp (SCT) ของใบรับรองการลงลายมือชื่อ X.509 โดยพกพาแฟล็ก SCT-extension จำนวน SCT ทั้งหมดและจำนวนที่ถูกต้อง และตัวระบุ log ที่ออก มันเปิดเผยเมทอดนโยบายหนึ่งตัวคือ meetsPolicy() ซึ่งเป็นการตรวจสอบเกณฑ์ SCT ขั้นต่ำ ชนิดนี้แทนผลลัพธ์ มันไม่สกัด SCT ไม่ตรวจสอบลายมือชื่อ SCT และไม่ติดต่อ CT log สำหรับคู่มือระดับกระบวนงาน โปรดดู นโยบาย Certificate Transparency สำหรับใบรับรองการลงลายมือชื่อ

ความสามารถนี้มาพร้อมกับ NextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Enterprise การนำไปใช้งานที่ไม่มีสิทธิ์นี้จะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอรับใบอนุญาต

SymbolParametersDefault behaviorReturnsThrows or fails withNotes
CtValidationResultValue object ที่ไม่เปลี่ยนแปลงซึ่งสรุปสถานะ SCT ของใบรับรองไม่โยนข้อยกเว้นfinal readonly พร็อพเพอร์ตีทั้งสี่ที่เลื่อนขั้นจากคอนสตรัคเตอร์เป็นแบบสาธารณะ
CtValidationResult::__constructbool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIdsเก็บค่าที่ส่งเข้ามาตามที่ให้ โดยไม่ตรวจสอบหรือปรับให้สอดคล้องอินสแตนซ์ CtValidationResult ใหม่ไม่ประกาศ @throws PHP จะยก TypeError เมื่อชนิดอาร์กิวเมนต์ไม่ตรงภายใต้ strict_typesพร็อพเพอร์ตีสาธารณะ readonly ที่เลื่อนขั้น
CtValidationResult::meetsPolicyint $minimumScts = 2เปรียบเทียบจำนวน SCT ที่ถูกต้องกับเกณฑ์: validScts >= $minimumSctsboolไม่โยนข้อยกเว้นนับเฉพาะ SCT ที่ถูกต้อง ไม่ตรวจสอบความแตกต่างของ log หรือการมีอยู่ของ extension
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

พร็อพเพอร์ตีสาธารณะแบบ readonly

PropertyTypeMeaning
$hasSctsExtensionboolใบรับรองมี SCT extension หรือไม่
$totalSctsintจำนวน SCT ทั้งหมดที่พบใน extension
$validSctsintจำนวน SCT ที่มีลายมือชื่อถูกต้อง ตามที่กำหนดโดยขั้นตอนต้นทาง
$logIdsarray<string>ตัวระบุ log (แฮช SHA-256) ของ CT log ที่ออก SCT
  • CtValidationResult เป็นค่าผลลัพธ์ มันแทนผลของการสกัดและการตรวจสอบ SCT ที่สภาพแวดล้อมของผู้เรียกดำเนินการ มันไม่แจงใบรับรอง ไม่ตรวจสอบลายมือชื่อ SCT ไม่สอบถาม log และไม่ส่งใบรับรองไปยัง log
  • Extension ที่กล่าวถึงคือ extension ของใบรับรอง X.509v3 แบบ embedded-SCT ซึ่งระบุด้วย OID 1.3.6.1.4.1.11129.2.4.2 — RFC 6962 §3.3 หนึ่ง SCT พกพาเวอร์ชัน ตัวระบุ log ประทับเวลา extension และลายมือชื่อ log เหนือ entry นั้น — RFC 6962 §3.2
  • แต่ละรายการใน $logIds เป็นตัวระบุ log ตามที่นิยามโดย RFC 6962 §3.2: แฮช SHA-256 ของกุญแจสาธารณะ log เหนือ SubjectPublicKeyInfo ที่เข้ารหัส DER ชนิดนี้เก็บสตริงตามที่ส่งเข้ามาและไม่คำนวณใหม่หรือตรวจสอบ
  • meetsPolicy() ดำเนินการเปรียบเทียบเพียงอย่างเดียว: จำนวน SCT ที่ถูกต้องมากกว่าหรือเท่ากับเกณฑ์ เกณฑ์เริ่มต้นคือ 2
  • meetsPolicy() ไม่ปรึกษา $hasSctsExtension นโยบายที่ต้องล้มเหลวเมื่อไม่มี extension จะกำกับที่พร็อพเพอร์ตีดังกล่าวแยกต่างหาก ก่อนหรือควบคู่กับการตรวจสอบเกณฑ์
  • meetsPolicy() ไม่ขจัดรายการซ้ำใน $logIds นโยบายที่ต้องการ SCT จาก log อิสระจะตรวจสอบความแตกต่างผ่าน $logIds เอง
  • คอนสตรัคเตอร์เก็บอินพุตตามค่าเดิม มันไม่ตรวจสอบช่วงและไม่ตรวจสอบความสอดคล้องข้ามฟิลด์
  • อินสแตนซ์ไม่เปลี่ยนแปลง (final readonly) การอ่านทั้งหมดและการตรวจสอบเกณฑ์เป็นแบบกำหนดได้แน่นอนและไม่มีผลข้างเคียง
  • ค่าเกณฑ์เป็นทางเลือกเชิงนโยบายของผู้ปฏิบัติงาน NextPDF ไม่กำหนดตัวเลขใด ๆ ซอร์สของแพ็กเกจอธิบายจุดอ้างอิงหนึ่งในระบบนิเวศ: นโยบาย CT ของ Chrome ณ ปี 2024 คาดหวัง SCT อย่างน้อยสองรายการจาก log ต่างกันสำหรับใบรับรองที่มีอายุไม่เกิน 180 วัน และสามรายการสำหรับใบรับรองที่มีอายุยาวกว่านั้น นั่นเป็นนโยบายของโปรแกรมเบราว์เซอร์ ไม่ใช่ข้อกำหนดของ IETF
  • ตำแหน่งที่ตั้งใจไว้คือประตูกั้นก่อนการลงลายมือชื่อ: กระบวนงานลงลายมือชื่อปฏิเสธที่จะสร้าง signer เมื่อการตรวจสอบล้มเหลว เหตุผลเป็นไปตามแบบจำลองความเชื่อถือของ CT: SCT คือคำสัญญาของ log ที่จะรวมใบรับรองเข้าไว้ และฝ่ายที่พึ่งพาจะปฏิเสธใบรับรองที่ขาด SCT ที่ถูกต้อง — RFC 6962 §3 CT เวอร์ชัน 2.0 คงแบบจำลองเดิม: log ที่รับการส่งจะคืน SCT ซึ่งผู้ส่งตรวจสอบก่อนที่จะพึ่งพา — RFC 9162 §3
  • เกณฑ์เป็นศูนย์หรือค่าลบ meetsPolicy(0) คืน true สำหรับ $validScts ที่ไม่เป็นลบทุกค่า เมทอดไม่ปฏิเสธค่าดังกล่าว ควรเลือกเกณฑ์อย่างน้อย 1
  • Extension ไม่มี แต่จำนวนเป็นบวก เมื่อ $hasSctsExtension เป็น false แต่ $validScts ถึงเกณฑ์ meetsPolicy() ยังคงคืน true ประตูกั้นต้องตรวจสอบ $hasSctsExtension อย่างชัดแจ้งเมื่อการไม่มีต้องทำให้ล้มเหลว หน้าความสามารถแสดงรูปแบบนี้
  • ตัวระบุ log ซ้ำ SCT ที่ถูกต้อง N รายการจาก log เดียวสอดคล้องกับเกณฑ์ N การตรวจสอบเกณฑ์ไม่อ้างความเป็นอิสระ นโยบายความแตกต่างของ log จะตรวจสอบ $logIds
  • จำนวนไม่สอดคล้อง $validScts ที่มากกว่า $totalScts หรือจำนวนที่เป็นลบ จะถูกเก็บตามที่ส่งเข้ามา ไม่มีการยกข้อยกเว้น ขั้นตอนการสกัดต้นทางเป็นเจ้าของความสอดคล้องของอินพุต
  • สตริงตัวระบุ log ที่ไม่ผ่านการตรวจสอบ ชนิดนี้ไม่บังคับรูปทรง 32 ไบต์หรือเลขฐานสิบหกกับรายการใน $logIds ตัวระบุที่ผิดรูปจะผ่านไปโดยไม่เปลี่ยนแปลง
  • ไม่มีเส้นทางข้อยกเว้น ไม่มีเมทอดใดบนพื้นผิวนี้ที่โยนข้อยกเว้นภายใต้ชนิด PHP ที่ถูกต้อง โหมดความล้มเหลวของการตรวจสอบนโยบายคือการปฏิเสธ (false) ไม่ใช่ข้อยกเว้น ชนิดอาร์กิวเมนต์ที่ไม่ตรงจะยก PHP TypeError ภายใต้ strict_types เช่นเดียวกับ API PHP ที่มีชนิดกำหนดใด ๆ

CtValidationResult ไม่ดำเนินการคำนวณเชิงวิทยาการเข้ารหัสลับใด ๆ มันไม่คำนวณ digest และไม่ตรวจสอบลายมือชื่อ การที่ลายมือชื่อ SCT ถูกนับว่าถูกต้องหรือไม่นั้นตัดสินโดยขั้นตอนต้นทาง โดยองค์ประกอบที่ดำเนินการตรวจสอบก่อนสร้างผลลัพธ์ โปรไฟล์นโยบายการเข้ารหัสลับ FIPS 140-3 ของ Enterprise ซึ่งจัดทำเป็นเอกสารพร้อมกับโมดูลความปลอดภัย จึงไม่เปลี่ยนแปลงพฤติกรรมของชนิดนี้

ClaimStandardClause
SCT คือคำสัญญาของ log ที่จะรวมใบรับรองเข้าไว้ ฝ่ายที่พึ่งพาจะปฏิเสธใบรับรองที่ขาด SCT ที่ถูกต้องRFC 6962§3
SCT พกพาเวอร์ชัน ตัวระบุ log ประทับเวลา extension และลายมือชื่อ log เหนือ entryRFC 6962§3.2
ตัวระบุ log คือแฮช SHA-256 ของกุญแจสาธารณะ log เหนือ SubjectPublicKeyInfo ที่เข้ารหัส DERRFC 6962§3.2
SCT แบบ embedded อยู่ใน extension ของใบรับรอง X.509v3 ที่ระบุด้วย OID 1.3.6.1.4.1.11129.2.4.2RFC 6962§3.3
ใน CT เวอร์ชัน 2.0 log ที่รับการส่งจะคืน SCT ซึ่งผู้ส่งตรวจสอบก่อนที่จะพึ่งพาRFC 9162§3

ข้อความทุกวรรคเป็นการถอดความ NextPDF ไม่ผลิตซ้ำข้อความบรรทัดฐาน NextPDF ไม่อ้างความสอดคล้องหรือการรับรอง Certificate Transparency ใด ๆ NextPDF Enterprise ไม่ใช่ CT log ผู้ตรวจสอบ หรือผู้เฝ้าติดตาม มันไม่ส่งใบรับรองไปยัง log และไม่ยืนยันผลการตรวจสอบ CT ชนิดนี้แทนจำนวนและตัวระบุที่สภาพแวดล้อมของผู้เรียกสร้างขึ้น และประเมินเกณฑ์ที่ผู้เรียกเลือก โปรแกรม CT ของเบราว์เซอร์ เช่นของ Chrome เป็นนโยบายของระบบนิเวศมากกว่าข้อกำหนดบรรทัดฐานของ IETF การเลือกและปฏิบัติตามนโยบายดังกล่าวเป็นความรับผิดชอบของผู้ปฏิบัติงาน

  • Value object นี้ไม่มี dependency และไม่มี I/O สร้างอินสแตนซ์โดยตรงในการทดสอบหน่วย
  • การทดสอบขอบที่แนะนำ: จำนวนที่ถูกต้องพอดีกับเกณฑ์ ต่ำกว่าเกณฑ์หนึ่ง extension ไม่มีโดยที่จำนวนอยู่ที่เกณฑ์ และตัวระบุ log ซ้ำเทียบกับนโยบายความแตกต่าง
  • คลาสนี้ประกาศภายใต้ strict_types=1 พร้อมพร็อพเพอร์ตีที่เลื่อนขั้นและมีชนิดกำหนด ชนิดอาร์กิวเมนต์ที่ผิดจะยก PHP TypeError ในผู้เรียก
  • คลาสนี้พกพา annotation @since ของแพ็กเกจเป็น 1.0.0 และอ้างอิง RFC 6962 และ RFC 9162 ในเอกสารประกอบซอร์ส
  • พารามิเตอร์ $logIds จัดทำเป็นเอกสารเป็น array<string> การวิเคราะห์แบบสถิตปฏิบัติต่อพร็อพเพอร์ตีนี้เป็นอาร์เรย์ของสตริง โปรดรักษารูปทรงนั้นเมื่อสร้างผลลัพธ์
  • วางการตรวจสอบ CT ต้นทางและประตูกั้นเกณฑ์นี้ไว้ก่อนการสร้าง signer เพื่อไม่ให้ใบรับรองที่บันทึกลง log ไม่พอไปถึงการดำเนินการลงลายมือชื่อ หน้าความสามารถจัดทำเอกสารกระบวนงานและตัวอย่างประตูกั้นที่ใช้งานจริง

หน้านี้จัดทำเอกสารเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต