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 การนำไปใช้งานที่ไม่มีสิทธิ์นี้จะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอรับใบอนุญาต
พื้นผิว API สาธารณะ
หัวข้อที่มีชื่อว่า “พื้นผิว API สาธารณะ”| Symbol | Parameters | Default behavior | Returns | Throws or fails with | Notes |
|---|---|---|---|---|---|
CtValidationResult | — | Value object ที่ไม่เปลี่ยนแปลงซึ่งสรุปสถานะ SCT ของใบรับรอง | — | ไม่โยนข้อยกเว้น | final readonly พร็อพเพอร์ตีทั้งสี่ที่เลื่อนขั้นจากคอนสตรัคเตอร์เป็นแบบสาธารณะ |
CtValidationResult::__construct | bool $hasSctsExtension, int $totalScts, int $validScts, array<string> $logIds | เก็บค่าที่ส่งเข้ามาตามที่ให้ โดยไม่ตรวจสอบหรือปรับให้สอดคล้อง | อินสแตนซ์ CtValidationResult ใหม่ | ไม่ประกาศ @throws PHP จะยก TypeError เมื่อชนิดอาร์กิวเมนต์ไม่ตรงภายใต้ strict_types | พร็อพเพอร์ตีสาธารณะ readonly ที่เลื่อนขั้น |
CtValidationResult::meetsPolicy | int $minimumScts = 2 | เปรียบเทียบจำนวน SCT ที่ถูกต้องกับเกณฑ์: validScts >= $minimumScts | bool | ไม่โยนข้อยกเว้น | นับเฉพาะ SCT ที่ถูกต้อง ไม่ตรวจสอบความแตกต่างของ log หรือการมีอยู่ของ 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): boolพร็อพเพอร์ตีสาธารณะแบบ readonly
| Property | Type | Meaning |
|---|---|---|
$hasSctsExtension | bool | ใบรับรองมี SCT extension หรือไม่ |
$totalScts | int | จำนวน SCT ทั้งหมดที่พบใน extension |
$validScts | int | จำนวน SCT ที่มีลายมือชื่อถูกต้อง ตามที่กำหนดโดยขั้นตอนต้นทาง |
$logIds | array<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 ที่ถูกต้องมากกว่าหรือเท่ากับเกณฑ์ เกณฑ์เริ่มต้นคือ2meetsPolicy()ไม่ปรึกษา$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) ไม่ใช่ข้อยกเว้น ชนิดอาร์กิวเมนต์ที่ไม่ตรงจะยก PHPTypeErrorภายใต้strict_typesเช่นเดียวกับ API PHP ที่มีชนิดกำหนดใด ๆ
พฤติกรรมในโหมด FIPS
หัวข้อที่มีชื่อว่า “พฤติกรรมในโหมด FIPS”CtValidationResult ไม่ดำเนินการคำนวณเชิงวิทยาการเข้ารหัสลับใด ๆ มันไม่คำนวณ digest และไม่ตรวจสอบลายมือชื่อ การที่ลายมือชื่อ SCT ถูกนับว่าถูกต้องหรือไม่นั้นตัดสินโดยขั้นตอนต้นทาง โดยองค์ประกอบที่ดำเนินการตรวจสอบก่อนสร้างผลลัพธ์ โปรไฟล์นโยบายการเข้ารหัสลับ FIPS 140-3 ของ Enterprise ซึ่งจัดทำเป็นเอกสารพร้อมกับโมดูลความปลอดภัย จึงไม่เปลี่ยนแปลงพฤติกรรมของชนิดนี้
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”| Claim | Standard | Clause |
|---|---|---|
| SCT คือคำสัญญาของ log ที่จะรวมใบรับรองเข้าไว้ ฝ่ายที่พึ่งพาจะปฏิเสธใบรับรองที่ขาด SCT ที่ถูกต้อง | RFC 6962 | §3 |
| SCT พกพาเวอร์ชัน ตัวระบุ log ประทับเวลา extension และลายมือชื่อ log เหนือ entry | RFC 6962 | §3.2 |
ตัวระบุ log คือแฮช SHA-256 ของกุญแจสาธารณะ log เหนือ SubjectPublicKeyInfo ที่เข้ารหัส DER | RFC 6962 | §3.2 |
SCT แบบ embedded อยู่ใน extension ของใบรับรอง X.509v3 ที่ระบุด้วย OID 1.3.6.1.4.1.11129.2.4.2 | RFC 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พร้อมพร็อพเพอร์ตีที่เลื่อนขั้นและมีชนิดกำหนด ชนิดอาร์กิวเมนต์ที่ผิดจะยก PHPTypeErrorในผู้เรียก - คลาสนี้พกพา annotation
@sinceของแพ็กเกจเป็น1.0.0และอ้างอิง RFC 6962 และ RFC 9162 ในเอกสารประกอบซอร์ส - พารามิเตอร์
$logIdsจัดทำเป็นเอกสารเป็นarray<string>การวิเคราะห์แบบสถิตปฏิบัติต่อพร็อพเพอร์ตีนี้เป็นอาร์เรย์ของสตริง โปรดรักษารูปทรงนั้นเมื่อสร้างผลลัพธ์ - วางการตรวจสอบ CT ต้นทางและประตูกั้นเกณฑ์นี้ไว้ก่อนการสร้าง signer เพื่อไม่ให้ใบรับรองที่บันทึกลง log ไม่พอไปถึงการดำเนินการลงลายมือชื่อ หน้าความสามารถจัดทำเอกสารกระบวนงานและตัวอย่างประตูกั้นที่ใช้งานจริง
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- นโยบาย Certificate Transparency สำหรับใบรับรองการลงลายมือชื่อ — หน้าความสามารถ: กระบวนงาน การกำหนดค่า และตัวอย่างประตูกั้นนโยบายที่ใช้งานจริง
- ความปลอดภัย — NextPDF Enterprise — พื้นผิวความปลอดภัยของ Enterprise แบบรวม
- ลายมือชื่อ — การอ้างอิงเชิงลึก — ตัวผลิต PAdES B-LT และ B-LTA แบบระยะยาว
- ความปลอดภัย / การลงลายมือชื่อ (Core) — CMS signer ของ Core และสัญญากลยุทธ์การลงลายมือชื่อ
- Certificate Transparency · SCT — คำศัพท์ในอภิธานศัพท์
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้จัดทำเอกสารเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต