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

Enterprise รุ่น

นโยบาย Certificate Transparency สำหรับใบรับรองการลงนาม

NextPDF Enterprise ให้เวิร์กโฟลว์การลงนามคำนึงถึงจุดยืน Certificate Transparency (CT) ของใบรับรองการลงนามก่อนลงนาม CT คือระบบนิเวศของ public-log ที่บันทึกใบรับรองไว้เพื่อให้ตรวจพบการออกใบรับรองผิดพลาดได้ ใบรับรองที่ถูกบันทึกใน CT พกพา Signed Certificate Timestamp (SCT) หนึ่งรายการหรือมากกว่า NextPDF Enterprise แสดงจุดยืน CT ของใบรับรองเป็นค่าผลลัพธ์ — ว่ามีส่วนขยาย SCT หรือไม่ มี SCT อยู่และถูกต้องกี่รายการ และ log ใดเป็นผู้ออก — และเสนอการตรวจสอบเกณฑ์ minimum-SCT หน้านี้อยู่ในระดับพฤติกรรม ระบุว่าผลลัพธ์พกพาอะไร การตรวจสอบเกณฑ์ทำงานอย่างไร และ NextPDF ตัดสินและไม่ตัดสินอะไร

NextPDF Enterprise แสดงและตรวจสอบเกณฑ์ของผล CT ไม่ใช่ CT log ผู้ตรวจสอบ log หรือตัวเฝ้าระวัง ขอบเขตนี้ระบุไว้ภายใต้ ความปลอดภัยและการปฏิบัติตามข้อกำหนด

ข้อกำหนดเบื้องต้นระบุไว้ใน front matter และทำซ้ำไว้ภายใต้ ข้อกำหนดเบื้องต้น

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

ใบรับรองที่ถูกบันทึกใน CT พกพา SCT SCT พกพาเวอร์ชัน ตัวระบุ log การประทับเวลา และลายเซ็นของ log เหนือรายการใบรับรอง ตาม RFC 6962 §3.1 log คืนค่า SCT เป็นคำสัญญาที่จะรวมใบรับรองเข้าสู่ log แบบต่อท้ายเท่านั้นของตน และฝ่ายที่อ้างอิงปฏิเสธใบรับรองที่ขาด SCT ที่ถูกต้อง ตาม RFC 6962 §3 Certificate Transparency เวอร์ชัน 2.0 คงโมเดลเดิม กล่าวคือ log คืนค่า SCT เมื่อส่ง ซึ่งผู้ส่งตรวจสอบก่อนอ้างอิง ตาม RFC 9162 §3

NextPDF Enterprise แสดงจุดยืน CT ของใบรับรองเป็นค่าผลลัพธ์ที่พกพา:

  • ว่าใบรับรองมีส่วนขยาย SCT หรือไม่
  • จำนวน SCT ทั้งหมดที่พบ
  • จำนวน SCT ที่ลายเซ็นถูกต้อง
  • ตัวระบุ log — แฮช SHA-256 — ของ log ที่ออก SCT

ผลลัพธ์เปิดเผยการตรวจสอบเกณฑ์ minimum-SCT โดยรายงานว่าจำนวน SCT ที่ถูกต้องถึงหรือเกินค่าต่ำสุดที่กำหนดหรือไม่ คุณตั้งค่าต่ำสุดให้ตรงกับนโยบายของคุณ นโยบายทั่วไปคาดหวัง SCT อย่างน้อยสองรายการจาก log ที่แตกต่างกันสำหรับใบรับรองอายุสั้น และมากกว่านั้นสำหรับใบรับรองอายุยาว ค่าเกณฑ์เป็นของคุณที่จะเลือก

ใช้การตรวจสอบเกณฑ์เป็นเกตในเวิร์กโฟลว์การลงนาม กล่าวคือ กำหนดให้ใช้ใบรับรองที่ถูกบันทึกใน CT (จำนวน SCT ที่ถูกต้องเพียงพอ) ก่อนคุณลงนาม และปฏิเสธในกรณีอื่น

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

ภูมิหลังการออกแบบ: การตรวจสอบลายเซ็นอย่างถูกต้อง

  1. ติดตั้ง NextPDF Core และแพ็กเกจ Enterprise และถือสิทธิ์ใช้งาน Enterprise ที่ใช้งานอยู่
  2. มีใบรับรองการลงนามที่คุณต้องการบังคับใช้จุดยืน CT พร้อมข้อมูล SCT ที่สภาพแวดล้อมของคุณดึงออกมาจากใบรับรองนั้น
  3. ตัดสินใจเลือกเกณฑ์ minimum-SCT ที่นโยบายของคุณกำหนด
  • เกณฑ์ minimum SCT — จำนวน SCT ที่ถูกต้องที่ใบรับรองต้องพกพาเพื่อผ่านนโยบายของคุณ ส่งเข้าการตรวจสอบเกณฑ์
  • การวางตำแหน่งนโยบาย — ตัดสินใจว่าเกตจะรันที่ใดในเวิร์กโฟลว์การลงนามของคุณ กล่าวคือ ก่อนสร้างตัวลงนาม เพื่อให้ใบรับรองที่ถูกบันทึกไม่เพียงพอไม่เคยไปถึงการดำเนินการลงนาม
  1. รับผล CT ของใบรับรองการลงนามของคุณ ซึ่งพกพาแฟล็กส่วนขยาย SCT จำนวน SCT ทั้งหมดและที่ถูกต้อง และตัวระบุ log
  2. ตัดสินใจเลือกเกณฑ์ minimum-SCT สำหรับนโยบายของคุณ
  3. รันการตรวจสอบเกณฑ์ ถือว่าการผ่านคือ “นโยบาย CT เป็นที่พอใจ” และการไม่ผ่านคือ “ปฏิเสธการลงนามด้วยใบรับรองนี้”
  4. ใส่เกตเวิร์กโฟลว์การลงนามบนผลก่อนสร้างตัวลงนาม
examples/enterprise/ct-policy-gate.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult;
use Psr\Log\LoggerInterface;
final readonly class CtSigningPolicy
{
/**
* @param int<1, max> $minimumScts The minimum count of valid SCTs your policy requires.
*/
public function __construct(
private int $minimumScts,
private LoggerInterface $logger,
) {}
/**
* Decide whether a certificate's CT posture satisfies the policy.
*
* The gate runs before the signer is constructed, so an under-logged
* certificate never reaches a signing operation. A missing SCT extension
* is treated as a policy failure, not an exception.
*
* @param CtValidationResult $result The CT posture of the signing certificate.
*
* @return bool True when the certificate meets the minimum-SCT threshold.
*/
public function isAcceptable(CtValidationResult $result): bool
{
if (! $result->hasSctsExtension) {
$this->logger->warning('Signing certificate carries no SCT extension; CT policy not met.');
return false;
}
$acceptable = $result->meetsPolicy($this->minimumScts);
if (! $acceptable) {
$this->logger->warning('Signing certificate has too few valid SCTs for the CT policy.', [
'validScts' => $result->validScts,
'minimumScts' => $this->minimumScts,
]);
}
return $acceptable;
}
}
  1. สร้างผลที่มีส่วนขยาย SCT อยู่และจำนวน SCT ที่ถูกต้องอยู่ที่เกณฑ์ของคุณ และยืนยันว่าการตรวจสอบเกณฑ์ผ่าน
  2. สร้างผลที่ต่ำกว่าเกณฑ์ของคุณหนึ่งรายการและยืนยันว่าการตรวจสอบไม่ผ่าน
  3. สร้างผลที่ไม่มีส่วนขยาย SCT และยืนยันว่าเกตปฏิเสธโดยไม่คำนึงถึงจำนวน
  4. ยืนยันว่าเวิร์กโฟลว์การลงนามของคุณไม่สร้างตัวลงนามเมื่อเกตปฏิเสธ
  • NextPDF แสดงและตรวจสอบเกณฑ์ ไม่ได้ดำเนินการ log NextPDF Enterprise แสดงจุดยืน CT และการตรวจสอบ minimum-SCT มันไม่ใช่ CT log ผู้ตรวจสอบ หรือตัวเฝ้าระวัง และไม่ส่งใบรับรองไปยัง log
  • เกณฑ์เป็นนโยบายของคุณ ค่า minimum-SCT เป็นของคุณที่จะตั้ง NextPDF ไม่กำหนดตัวเลข การไม่มีส่วนขยาย SCT เป็นความล้มเหลวของนโยบายที่ชัดเจน
  • ใส่เกตก่อนคุณลงนาม รันการตรวจสอบก่อนสร้างตัวลงนาม เพื่อให้ใบรับรองที่ถูกบันทึกไม่เพียงพอไม่เคยไปถึงการดำเนินการลงนาม
  • ความหมายของ SCT เป็นไปตามมาตรฐาน SCT คือคำสัญญาของ log ที่ฝ่ายที่อ้างอิงคาดหวังว่าจะมีอยู่และถูกต้อง (RFC 6962 §3 โครงสร้าง §3.1 CT v2 RFC 9162 §3)

หน้านี้เกี่ยวข้องกับความเชื่อถือของใบรับรอง แหล่งอ้างอิงเชิงบรรทัดฐานทุกแหล่งถูกถอดความ ไม่มีการนำข้อความเชิงบรรทัดฐานมาแสดงซ้ำ

  • ไม่มีส่วนขยาย SCT ถือว่าผลที่ไม่มีส่วนขยาย SCT เป็นความล้มเหลวของนโยบาย ปฏิเสธการลงนาม
  • SCT ที่ถูกต้องน้อยเกินไป จำนวน SCT ที่ถูกต้องต่ำกว่าเกณฑ์ของคุณจะทำให้การตรวจสอบไม่ผ่าน ปฏิเสธการลงนาม
  • การวางตำแหน่งนโยบาย รันเกตก่อนสร้างตัวลงนาม การตรวจสอบที่ล่าช้าซึ่งรันหลังการลงนามไม่ปกป้องเอกสารที่ผลิตขึ้น

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