Enterprise รุ่น
การผูกความเชื่อถือ ASiC
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”คอนเทนเนอร์ ASiC รวมไฟล์ที่ลงนามแล้วเข้ากับลายเซ็นที่ปกป้องไฟล์เหล่านั้น คำถามที่ยากไม่ใช่ “ลายเซ็นคำนวณได้หรือไม่” แต่เป็น “ใครยืนอยู่เบื้องหลังผู้ลงนาม” NextPDF\Enterprise\Security\Asic\AsicTrustBinder ตอบคำถามนั้นได้อย่างตรงจุด คุณส่งใบรับรองการลงนามจากลายเซ็นคอนเทนเนอร์ trusted list และเวลาตรวจสอบให้กับมัน แล้วมันจะตอบกลับด้วย AsicTrustBindingResult: คำตัดสินว่าเชื่อถือได้/ไม่เชื่อถือได้ เวอร์ชันของ anchor bundle ที่ใช้ตัดสิน และเหตุผลที่อ่านได้ด้วยเครื่อง ทุกการปฏิเสธจะระบุสาเหตุของมัน ดังนั้นหลักฐานการตรวจสอบจึงเกิดขึ้นเอง
มีขอบเขตหนึ่งที่ตั้งใจกำหนดไว้และควรระบุให้ชัดเจนตั้งแต่ต้น API นี้ไม่แยกวิเคราะห์คอนเทนเนอร์ ASiC เครื่องมือของคุณเป็นผู้เปิดคอนเทนเนอร์และแยกใบรับรองการลงนามออกมา ส่วน NextPDF เป็นเจ้าของการตัดสินใจเรื่องความเชื่อถือ
ความพร้อมใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและการอนุญาต”ความสามารถนี้มาพร้อมกับ NextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งานด้วย license envelope ระดับ Enterprise การติดตั้งที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและรับ license
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/enterpriseการเปิดใช้งานต้องใช้ license envelope ระดับ Enterprise ของคุณ ดู การติดตั้งและการยืนยันตัวตน คลาสในหน้านี้อยู่ภายใต้ NextPDF\Enterprise\Security\Asic และ NextPDF\Enterprise\Security\Tsl
ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”ASiC (Associated Signature Containers, ETSI EN 319 162-1) บรรจุไฟล์ข้อมูลและลายเซ็นไว้ในอาร์ไคฟ์เดียว คอนเทนเนอร์ ASiC แบบ baseline ฝังเฉพาะลายเซ็น baseline แบบ CAdES หรือ XAdES เท่านั้น ลายเซ็น CAdES baseline พกใบรับรองการลงนามของมันไว้ภายใน SignedData.certificates ดังนั้นผู้ตรวจสอบจึงคาดหมายว่าจะแยกใบรับรองนั้นออกมาจากลายเซ็นของคอนเทนเนอร์เมื่อลายเซ็นมีรูปแบบถูกต้องและเครื่องมือคอนเทนเนอร์รองรับ ใบรับรองที่แยกออกมานั้นคืออินพุตของ API นี้
แหล่งความเชื่อถือคือ trusted list (TSL) ตาม ETSI TS 119 612: เอกสาร XML ที่ลงนามแล้วซึ่งแจกแจงผู้ให้บริการ trust service และใบรับรองบริการของพวกเขา NextPDF\Enterprise\Security\Tsl\TslTrustAnchorProvider แปลง TslDocument ที่แยกวิเคราะห์แล้วให้เป็น anchor bundle มีเพียงบริการที่อยู่ในสถานะ granted และเป็นประเภทบริการ CA/QC เท่านั้นที่จะเป็นเมล็ดพันธุ์ให้กับชุด anchor bundle จะพกสตริงเวอร์ชันที่ได้มาจากหมายเลขลำดับ TSL และดินแดน พร้อมกับ SHA-256 integrity digest
มีเกตแบบ fail-closed สองตัวที่ทำงานก่อนการเปรียบเทียบ anchor ใดๆ:
- ความสดของ TSL trusted list ที่ช่วงเวลา
NextUpdateผ่านไปแล้วต้องถูกทิ้งในฐานะที่หมดอายุAsicTrustBinder::verify()ยืนยันความสด ณ เวลาตรวจสอบที่ให้มาก่อนที่จะได้มาซึ่ง anchor แม้เพียงตัวเดียว รายการที่ค้างเก่า หรือค่าNextUpdateที่ไม่มีตัวกำหนด UTC อย่างชัดเจน จะโยนTslParseException - ช่วงอายุใช้งานของผู้ลงนาม การตรวจสอบเส้นทางตาม RFC 5280 กำหนดให้ช่วงอายุใช้งานของใบรับรองต้องครอบคลุมเวลาตรวจสอบ ลายเซ็นที่สมบูรณ์ในเชิงการเข้ารหัสแต่ใบรับรองหมดอายุ หรือยังไม่ถึงกำหนดใช้งาน ณ เวลานั้น จะถูกปฏิเสธด้วย reason code ที่แม่นยำ
หลังจากนั้นเท่านั้น binder จึงทดสอบใบรับรองการลงนามกับ anchor แต่ละตัว การจับคู่ที่ตรงกันให้ผล trusted: true พร้อมเหตุผล anchor_signature_match การไม่มีการจับคู่ที่ตรงกันให้ผล trusted: false พร้อมเหตุผล no_anchor_chain
ทำไมจึงทำงานเช่นนี้
หัวข้อที่มีชื่อว่า “ทำไมจึงทำงานเช่นนี้”การตัดสินใจออกแบบที่รับน้ำหนักหลักคือการแยกอย่างเข้มงวดระหว่างกลไกของคอนเทนเนอร์กับการตัดสินเรื่องความเชื่อถือ โดยบังคับให้การตัดสินเรื่องความเชื่อถือระบุเรื่องเวลาอย่างชัดเจน รูปแบบคอนเทนเนอร์มีความหลากหลาย (ASiC-S, ASiC-E, เพย์โหลด CAdES หรือ XAdES) แต่คำถามเรื่องความเชื่อถือคือแก่นที่ไม่แปรเปลี่ยนเพียงหนึ่งเดียว: ใบรับรองนี้เชื่อมโยงไปยัง anchor จาก trusted list ที่สด ณ ช่วงเวลาที่ระบุไว้หรือไม่ การทำให้แก่นนั้นปลอดจากการแยกวิเคราะห์ ZIP และ XML ทำให้มันเล็กพอที่จะทดสอบได้อย่างครบถ้วนและ fail closed ที่ทุกเกต เหตุผลเดียวกันนี้ห้ามการตั้งค่าเริ่มต้น now แบบเงียบๆ: เวลาตรวจสอบเปลี่ยนคำตัดสิน ดังนั้นผู้เรียกจึงต้องเป็นเจ้าของมัน ความสดถูกยืนยันภายในเส้นทางการได้มาซึ่ง anchor เอง ไม่ใช่ในตัวช่วยที่เป็นทางเลือก ดังนั้นจึงไม่มีเส้นทางของผู้ผลิตใดที่จะข้ามมันได้
พื้นฐานการออกแบบ: ลายเซ็นดิจิทัลพิสูจน์ได้อย่างไรว่าใครเป็นผู้ลงนาม
พื้นผิว API
หัวข้อที่มีชื่อว่า “พื้นผิว API”AsicTrustBinder
หัวข้อที่มีชื่อว่า “AsicTrustBinder”การสร้างรับ anchor provider ที่เปลี่ยน trusted list ให้เป็น anchor bundle
public function __construct( private readonly TslTrustAnchorProvider $anchorProvider,) {}จุดเข้าใช้งานหลักตรวจสอบใบรับรองผู้ลงนามกับ trusted list:
public function verify( string $signerCertPem, TslDocument $tsl, DateTimeInterface $validationTime,): AsicTrustBindingResult$signerCertPem— สตริง PEM ที่ไม่ว่าง: ใบรับรองการลงนามจากลายเซ็น ASiC$tsl— trusted list ที่แยกวิเคราะห์และยืนยันตัวตนแล้ว$validationTime— ช่วงเวลาที่ช่วงอายุใช้งานของใบรับรองผู้ลงนามต้องครอบคลุม ไม่มีค่าเริ่มต้น
โยนหรือล้มเหลวด้วย: NextPDF\Enterprise\Security\Tsl\TslParseException เมื่อ TSL ค้างเก่า (NextUpdate ผ่านไปแล้ว) เมื่อ NextUpdate ไม่ใช่ค่า UTC แบบ canonical หรือเมื่อรายการไม่มีบริการ CA/QC ที่ยังใช้งานอยู่ ผู้ลงนามที่ไม่เชื่อถือจะไม่โยนข้อยกเว้น แต่จะคืนผลลัพธ์ด้วย trusted: false และ reason code
สำหรับงานแบบ batch ให้ตรวจสอบกับ bundle ที่สร้างไว้ล่วงหน้า:
public function verifyAgainstBundle( string $signerCertPem, EnterpriseCaTrustAnchorBundle $bundle, DateTimeInterface $validationTime,): AsicTrustBindingResultโยนหรือล้มเหลวด้วย: ไม่มีข้อยกเว้นของตัวเอง ทุกผลลัพธ์เป็น AsicTrustBindingResult รับ bundle มาจาก TslTrustAnchorProvider::buildBundle() — อย่าสร้างมันขึ้นเองด้วยมือ
TslTrustAnchorProvider
หัวข้อที่มีชื่อว่า “TslTrustAnchorProvider”public function buildBundle(TslDocument $tsl, DateTimeImmutable $now): EnterpriseCaTrustAnchorBundleโยนหรือล้มเหลวด้วย: TslParseException หาก TSL ค้างเก่า หาก NextUpdate ไม่ใช่ค่า UTC แบบ canonical หรือหากไม่มีบริการ CA/QC ที่ยังใช้งานอยู่
AsicTrustBindingResult
หัวข้อที่มีชื่อว่า “AsicTrustBindingResult”public function __construct( public bool $trusted, public string $anchorBundleVersion, public array $reasons,) {}$reasons เป็น list<non-empty-string> ของรหัสที่อ่านได้ด้วยเครื่อง $anchorBundleVersion บันทึกชุด anchor ที่ใช้ ในรูปแบบ tsl-<territory>-seq<N> (เช่น tsl-eu-seq42)
| รหัสเหตุผล | ความหมาย |
|---|---|
anchor_signature_match | ใบรับรองผู้ลงนามตรวจสอบผ่านกับ anchor ที่ได้จาก TSL เชื่อถือได้ |
no_anchor_chain | ไม่มี anchor ใน bundle ที่ตรวจสอบใบรับรองผู้ลงนามผ่าน ไม่เชื่อถือ |
signer_cert_expired | เวลาตรวจสอบอยู่หลัง notAfter ของใบรับรอง ไม่เชื่อถือ |
signer_cert_not_yet_valid | เวลาตรวจสอบอยู่ก่อน notBefore ของใบรับรอง ไม่เชื่อถือ |
cannot_parse_signer_cert | PEM ที่ให้มาไม่สามารถแยกวิเคราะห์เป็นใบรับรอง X.509 ได้ ไม่เชื่อถือ |
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”เครื่องมือคอนเทนเนอร์ของคุณได้แยกใบรับรองการลงนามออกมาแล้ว ผูกมันเข้ากับ trusted list ของรัฐสมาชิกที่คุณดึงมาและยืนยันตัวตนแล้ว (ดู Trusted lists)
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Security\Asic\AsicTrustBinder;use NextPDF\Enterprise\Security\Tsl\TslParseException;use NextPDF\Enterprise\Security\Tsl\TslTrustAnchorProvider;use NextPDF\Enterprise\Security\Tsl\TslXmlParser;
// Extracted by YOUR tooling from META-INF/signature.p7s or signatures.xml.$signerCertPem = (string) file_get_contents(__DIR__ . '/asic-signer.pem');
// A trusted list you have already fetched and authenticated.$tslXml = (string) file_get_contents(__DIR__ . '/member-state-tsl.xml');
$binder = new AsicTrustBinder(new TslTrustAnchorProvider());
try { $tsl = (new TslXmlParser())->parse($tslXml);
$result = $binder->verify( signerCertPem: $signerCertPem, tsl: $tsl, validationTime: new DateTimeImmutable('2026-07-03T12:00:00Z'), );} catch (TslParseException $e) { // Fail closed: stale TSL, malformed NextUpdate, or no active CA/QC services. fwrite(STDERR, 'Trusted list rejected: ' . $e->getMessage() . PHP_EOL); exit(1);}
echo $result->trusted ? "TRUSTED\n" : "NOT TRUSTED\n";echo 'Anchors: ' . $result->anchorBundleVersion . "\n";echo 'Reasons: ' . implode(', ', $result->reasons) . "\n";ผลลัพธ์ที่คาดหวังสำหรับผู้ลงนามที่ออกโดยบริการ CA/QC ที่อยู่ในรายการ:
TRUSTEDAnchors: tsl-eu-seq42Reasons: anchor_signature_matchตัวอย่างโค้ด — การใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — การใช้งานจริง”ได้มาซึ่ง anchor bundle หนึ่งครั้งต่อ trusted list หนึ่งรายการ จากนั้นตรวจสอบผู้ลงนามคอนเทนเนอร์จำนวนมากกับมัน TSL ที่ค้างเก่าหรือใช้งานไม่ได้เพียงหนึ่งรายการจะทำให้ทั้ง batch ล้มเหลวแบบ fail closed ส่วนปัญหาของผู้ลงนามแต่ละรายจะปรากฏเป็นรายคอนเทนเนอร์
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Security\Asic\AsicTrustBinder;use NextPDF\Enterprise\Security\Asic\AsicTrustBindingResult;use NextPDF\Enterprise\Security\Tsl\TslDocument;use NextPDF\Enterprise\Security\Tsl\TslParseException;use NextPDF\Enterprise\Security\Tsl\TslTrustAnchorProvider;use NextPDF\Enterprise\Security\Tsl\TslXmlParser;
/** * @param array<string, non-empty-string> $signerPemsByContainer PEM per container path. * @return array<string, AsicTrustBindingResult> * @throws TslParseException When no anchor set can be derived from the TSL. */function bindBatch( TslDocument $tsl, array $signerPemsByContainer, DateTimeImmutable $validationTime,): array { $provider = new TslTrustAnchorProvider();
// Derive the anchor set ONCE; a throw here means the trusted list itself // is unusable at this validation time. $bundle = $provider->buildBundle($tsl, $validationTime);
$binder = new AsicTrustBinder($provider);
$results = []; foreach ($signerPemsByContainer as $container => $signerPem) { $results[$container] = $binder->verifyAgainstBundle( signerCertPem: $signerPem, bundle: $bundle, validationTime: $validationTime, ); }
return $results;}
$tsl = (new TslXmlParser())->parse( (string) file_get_contents(__DIR__ . '/member-state-tsl.xml'),);
$signerPems = [ 'invoice-2026-06.asice' => (string) file_get_contents(__DIR__ . '/signer-a.pem'), 'tender-2019.asice' => (string) file_get_contents(__DIR__ . '/signer-b.pem'),];
try { $results = bindBatch( tsl: $tsl, signerPemsByContainer: $signerPems, validationTime: new DateTimeImmutable('now', new DateTimeZone('UTC')), );} catch (TslParseException $e) { // Fail closed for the WHOLE batch: no trustworthy anchor set exists. fwrite(STDERR, 'Anchor derivation failed: ' . $e->getMessage() . PHP_EOL); exit(1);}
foreach ($results as $container => $result) { printf( "%s => %s (%s; anchors %s)\n", $container, $result->trusted ? 'trusted' : 'rejected', implode(',', $result->reasons), $result->anchorBundleVersion, );}ผลลัพธ์ที่คาดหวังเมื่อใบรับรองผู้ลงนามหนึ่งรายหมดอายุ:
invoice-2026-06.asice => trusted (anchor_signature_match; anchors tsl-eu-seq42)tender-2019.asice => rejected (signer_cert_expired; anchors tsl-eu-seq42)กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- เวลาตรวจสอบเป็นข้อบังคับและเป็นตัวชี้ขาด ไม่มีค่าเริ่มต้น
nowแบบเงียบๆ ลายเซ็นที่ตรวจสอบผ่านในปี 2019 จะรายงานsigner_cert_expiredเมื่อคุณตรวจสอบ ณ ช่วงเวลาปี 2026 ที่เลยnotAfterไปแล้ว สำหรับเอกสารในอดีต ให้ส่งเวลาที่หลักฐานของคุณรองรับ (เช่น เวลา proof-of-existence) ไม่ใช่เวลาตามนาฬิกาปัจจุบัน - TSL ที่ค้างเก่าจะโยนข้อยกเว้น ไม่ใช่คำตัดสินว่า “ไม่เชื่อถือ”
TslParseExceptionจากverify()หรือbuildBundle()หมายความว่า แหล่ง ความเชื่อถือใช้งานไม่ได้ ให้ถือว่าเป็นความล้มเหลวเชิงปฏิบัติการ: รีเฟรชรายการ อย่าบันทึกว่าเป็นการปฏิเสธผู้ลงนาม - Anchor ถูกทดสอบในฐานะผู้ออกโดยตรง anchor แต่ละตัวถูกลองใช้เป็นใบรับรองที่ลงนามใบรับรองผู้ลงนาม TSL ของรัฐสมาชิก EU แสดงรายการใบรับรองบริการ CA/QC ที่เป็นผู้ออก ดังนั้นใบรับรองที่ผ่านการรับรองระดับ end-entity มักจะจับคู่ได้โดยตรง ผู้ลงนามที่ออกโดย CA ตัวกลางซึ่งตัวมันเองไม่ได้เป็นบริการ CA/QC ที่ใช้งานอยู่ในรายการจะให้ผล
no_anchor_chain - การได้มาซึ่ง anchor กรองอย่างเข้มงวด บริการที่ถูกถอน หรือเป็นประเภทอื่นใดนอกจาก CA/QC จะไม่มีวันกลายเป็น anchor รายการที่มีชุด CA/QC ที่ใช้งานอยู่เป็นค่าว่างจะโยนข้อยกเว้น แทนที่จะสร้าง bundle ที่ว่างเปล่า
NextUpdateต้องเป็น UTC แบบ canonical ค่าที่ไม่มีตัวกำหนดZหรือ numeric offset อย่างชัดเจนจะถูกปฏิเสธแบบ fail-closed ไม่มีการตีความใหม่ในเขตเวลาท้องถิ่นของเซิร์ฟเวอร์- อินพุตที่ผิดรูปแบบลดระดับอย่างแม่นยำ PEM ที่แยกวิเคราะห์ไม่ได้จะคืน
cannot_parse_signer_certใบรับรองที่ยังไม่ถึงกำหนดใช้งานถูกแยกแยะออกจากใบรับรองที่หมดอายุ - บันทึก
anchorBundleVersionมันระบุชุด anchor ที่แน่นอน (tsl-<territory>-seq<N>) เบื้องหลังแต่ละคำตัดสิน ซึ่งเป็นสิ่งที่ผู้ตรวจสอบจะถามหา
หมายเหตุด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “หมายเหตุด้านความปลอดภัย”- fail-closed โดยการออกแบบ ความสดถูกยืนยันก่อนที่จะได้มาซึ่ง anchor ใดๆ เกตความถูกต้องของผู้ลงนามทำงานก่อนการเปรียบเทียบ anchor ใดๆ วัสดุความเชื่อถือที่ใช้งานไม่ได้จะโยนข้อยกเว้น ผู้ลงนามที่น่าสงสัยจะถูกปฏิเสธพร้อมเหตุผล ไม่มีเส้นทางใดที่ลดระดับไปสู่การผ่านแบบเงียบๆ
- การผูกความเชื่อถือเป็นเพียงชั้นเดียว ไม่ใช่การตรวจสอบทั้งหมด API นี้ไม่ตรวจสอบค่าลายเซ็น CAdES เหนือเนื้อหาคอนเทนเนอร์ ไม่ตรวจสอบการเพิกถอน (ไม่มีการค้นหา CRL หรือ OCSP) และไม่ยืนยันตัวเอกสาร TSL เอง ให้ยืนยันตัวตนของรายการผ่านไปป์ไลน์ trusted-list ก่อน (ดู Trusted lists) ตรวจสอบลายเซ็นในเชิงการเข้ารหัสด้วยเครื่องมือลายเซ็นของคุณ และเพิ่มการตรวจสอบการเพิกถอนตามนโยบายของคุณ
- เลือกเวลาตรวจสอบอย่างรอบคอบ คำตัดสินเป็นฟังก์ชันของเวลาที่คุณส่งเข้ามา ให้ได้มันมาจากหลักฐานที่น่าเชื่อถือ (qualified timestamp หรือบันทึกจดหมายเหตุ) ไม่ใช่จากนาฬิกาที่ผู้โจมตีสามารถแทรกแซงได้
- ผลลัพธ์หลักฐานเป็นแบบกำหนดได้แน่นอน
trusted,anchorBundleVersion, และreasonsเป็นค่าที่เสถียรและอ่านได้ด้วยเครื่อง เหมาะสำหรับ audit log ที่ลงนามแล้ว
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”AsicTrustBinder รองรับเวิร์กโฟลว์ที่สอดคล้องกับ ETSI EN 319 162-1 (คอนเทนเนอร์ ASiC baseline), ETSI EN 319 122-1 (ลายเซ็น CAdES baseline), และ ETSI TS 119 612 (trusted list) และใช้เกตช่วงอายุใช้งานตาม RFC 5280 ณ เวลาตรวจสอบที่ให้มา
การรองรับไม่ใช่ความสอดคล้อง และความสอดคล้องไม่ใช่การรับรอง NextPDF ดำเนินการตรวจสอบตามที่หน้านี้อธิบายไว้ แต่ยังไม่ได้รับการรับรองต่อมาตรฐานเหล่านี้จากหน่วยงานใด และการใช้ API นี้ไม่ได้ทำให้ผลลัพธ์ของคุณ “qualified” หรือมีผลทางกฎหมายภายใต้ eIDAS หรือระบอบอื่นใดด้วยตัวมันเอง NextPDF ไม่ถือครองการรับรองใดและไม่มอบการรับรองใด ส่วนกระบวนการตรวจสอบที่สมบูรณ์จะเป็นไปตามข้อกำหนดทางกฎหมายหรือการจัดซื้อที่กำหนดหรือไม่นั้น เป็นการวินิจฉัยของผู้ประเมินของคุณ
พฤติกรรมในโหมด FIPS
หัวข้อที่มีชื่อว่า “พฤติกรรมในโหมด FIPS”การผูกความเชื่อถือดำเนินการตรวจสอบลายเซ็นใบรับรอง X.509 ภายในกระบวนการ ไม่ได้ถูกส่งผ่าน FIPS-mode runtime guard ของ Enterprise และการเปิดใช้งานโหมด FIPS ไม่เปลี่ยนพฤติกรรมของมัน มันไม่ใช่บริการเข้ารหัสที่ผ่านการตรวจรับรอง FIPS และไม่มีการอ้างการรับรอง FIPS 140 ใดๆ การติดตั้งที่มีภาระผูกพัน FIPS ควรกำหนดขอบเขตการใช้ API นี้ให้เหมาะสม และดู นโยบายการเข้ารหัส FIPS 140-2/3
สัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”verify()ได้มาซึ่ง anchor จาก TSL ที่สด ณ เวลาตรวจสอบที่ให้มาเท่านั้น รายการที่ค้างเก่าหรือผิดรูปแบบจะโยนTslParseExceptionก่อนที่ anchor ใดจะมีอยู่- Anchor ได้มาจากบริการ TSL ที่อยู่ในสถานะ granted ซึ่งมีประเภทบริการ CA/QC เท่านั้น ชุดที่ใช้งานอยู่ซึ่งว่างเปล่าจะโยนข้อยกเว้น
- ช่วงอายุใช้งานของใบรับรองผู้ลงนามต้องครอบคลุมเวลาตรวจสอบ การละเมิดจะคืน
signer_cert_expiredหรือsigner_cert_not_yet_valid - ทุกผลลัพธ์เป็น
AsicTrustBindingResultที่พกtrusted,anchorBundleVersion, และ reason code อย่างน้อยหนึ่งรหัส ไม่มีคำตัดสินที่ปราศจากเหตุผล - ผู้ลงนามที่ไม่เชื่อถือจะถูกคืนกลับ ไม่มีการโยน วัสดุความเชื่อถือที่ใช้งานไม่ได้จะถูกโยน ไม่มีการคืนกลับเป็นคำตัดสิน
- การแยกวิเคราะห์คอนเทนเนอร์ไม่เคยเกิดขึ้นภายใน API นี้ อินพุตคือ PEM ที่แยกออกมา trusted list และเวลาตรวจสอบ
ทางเลือกสำรองของ Core
หัวข้อที่มีชื่อว่า “ทางเลือกสำรองของ Core”NextPDF Core ตรวจสอบลายเซ็น PDF (CMS/PAdES) กับ trust anchors ที่คุณปักหมุดอย่างชัดเจนผ่านสัญญา CaTrustAnchorBundle ของมัน — ดู Core security Core ไม่มีการนำเข้า trusted list (TSL) และไม่มีการผูกความเชื่อถือเฉพาะสำหรับ ASiC ด้วย Core เพียงอย่างเดียว คุณสามารถดูแลชุด anchor ของคุณเองสำหรับการตรวจสอบลายเซ็น PDF ได้ ส่วนการได้มาซึ่ง anchor จาก trusted list ตาม ETSI TS 119 612 และการผูกผู้ลงนามคอนเทนเนอร์ ASiC เข้ากับมันนั้นต้องใช้ NextPDF Enterprise
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้จัดทำเอกสารเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว public API ที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- Trusted lists — ดึง ยืนยันตัวตน และแยกวิเคราะห์ TSL ที่ป้อนให้กับ anchor provider
- การตรวจสอบลายเซ็น — พื้นผิวการตรวจสอบของ Enterprise สำหรับลายเซ็น PDF
- นโยบายการเข้ารหัส FIPS 140-2/3 — ท่าทีโหมด FIPS ของ Enterprise
- ลายเซ็นดิจิทัลพิสูจน์ได้อย่างไรว่าใครเป็นผู้ลงนาม — พื้นฐานจากหลักการเบื้องต้น
- การตรวจสอบระยะยาว — เหตุใดเวลาตรวจสอบและหลักฐานที่เก็บรักษาไว้จึงสำคัญ