การกำหนดค่า TSA
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”NextPDF จะติดต่อ Time Stamp Authority (TSA) ก็ต่อเมื่อคุณลงนามที่ระดับ PAdES B-T ขึ้นไปเท่านั้น ที่ระดับ B-B ไม่มีการประทับเวลาและไม่มีการเรียกผ่านเครือข่าย ดังนั้นหน้านี้ จึงไม่ใช้กับลายเซ็น B-B
เพื่อให้ B-T ทำงานได้ทันทีตั้งแต่แรก NextPDF จึงมาพร้อมกับ TSA เริ่มต้นที่มีมาให้ในตัว ค่าเริ่มต้นนี้เป็นเพียงความสะดวก: มันช่วยให้ลายเซ็นที่ประทับเวลาสำเร็จได้โดยไม่ต้องตั้งค่า เพิ่มเติม มันไม่ใช่ publicly-trusted และ ไม่ใช่ ที่ผ่านการรับรองตามมาตรฐาน eIDAS ดังนั้นจึงไม่เหมาะสมสำหรับการใช้งานจริงหรือเพื่อความสอดคล้องโดยไม่ได้เลือกอย่างจงใจ หน้านี้จะอธิบายอย่างชัดเจนว่าค่าเริ่มต้นคืออะไร, วิธีชี้ NextPDF ไปยัง TSA ของคุณเอง, วิธีปิดการประทับเวลา และเส้นทางอัปเกรดสองทาง
คุณสมบัติสามอย่างนี้เป็นอิสระต่อกันและต้องไม่นำมาปะปนกัน:
- self-hosted — ใครเป็นผู้ดำเนินการเซิร์ฟเวอร์และใบรับรองของมันเชื่อมโยงไปยัง root ใด;
- publicly-trusted — ระบบนิเวศการตรวจสอบที่ relying party ของคุณใช้ (trust store หรือ trust list ของพวกเขา) เชื่อถือ root นั้นอยู่แล้วโดยไม่ต้องตั้งค่าด้วยมือ แทนที่จะต้องติดตั้ง private root ด้วยตนเองหรือไม่ เรื่องนี้เกี่ยวกับ trust anchor ของ relying party ไม่ใช่โปรแกรมใดโปรแกรมหนึ่งเช่น Web PKI;
- eIDAS-qualified — การประทับเวลานั้นมีผลทางกฎหมายแบบ qualified ในสหภาพยุโรปหรือไม่
ค่าเริ่มต้นที่มาให้นั้นเป็นเพียง self-hosted เท่านั้น TSA แบบ publicly-trusted จะเพิ่มคุณสมบัติ ที่สอง TSA ที่ผ่านการรับรองตามมาตรฐาน eIDAS จะมีสถานะทางกฎหมายแบบ qualified เพิ่มเข้ามาด้วย ซึ่งตรวจสอบผ่าน EU Trusted Lists และอาจดำเนินการโดย QTSP ที่เป็นบุคคลภายนอกได้ คุณสมบัติทั้งสามเป็นอิสระต่อกัน — อย่างหนึ่งไม่ได้หมายความถึงอีกอย่างหนึ่ง
TSA เริ่มต้นที่มีมาให้ในตัว
หัวข้อที่มีชื่อว่า “TSA เริ่มต้นที่มีมาให้ในตัว”endpoint เริ่มต้นคือ https://timestamp.pateon.com.tw ซึ่งเป็นเซิร์ฟเวอร์ประทับเวลา RFC 3161
ของ NextPDF เอง มันเป็นแบบ self-hosted: ใบรับรองของหน่วยประทับเวลาเชื่อมโยงไปยัง
private PATEON root ไม่ใช่ไปยังโปรแกรมความเชื่อถือสาธารณะ ดังนั้น relying party จึง
ไม่สามารถตรวจสอบการประทับเวลาที่ออกโดยค่าเริ่มต้นได้ เว้นแต่จะได้ติดตั้งและเชื่อถือ
PATEON root นั้นผ่านช่องทางอื่น
เนื่องจากโทเคน RFC 3161 ไม่มีหลักฐานภายนอกว่าเวลาที่ยืนยันนั้นถูกต้อง ความเชื่อถือใน การประทับเวลาเช่นนั้นจึงขึ้นอยู่กับการเชื่อถือ TSA ที่ออกโทเคนทั้งสิ้น (ISO/IEC 18014-2 §7.3) สำหรับค่าเริ่มต้นที่มาให้นั้น trust anchor เป็นแบบ private ซึ่งเป็นเหตุผลที่ค่าเริ่มต้นนี้เป็น ค่าเริ่มต้นสำหรับความสะดวกและการพัฒนา ไม่ใช่ ค่าที่อยู่ในระดับที่สอดคล้องตามข้อกำหนด
เมื่อมีการใช้ endpoint เริ่มต้นและเฟรมเวิร์กของคุณกำหนดค่า logger ไว้ NextPDF จะส่งคำเตือน เพียงครั้งเดียว ตอนเริ่มกระบวนการ เพื่อแจ้งว่าค่าเริ่มต้นไม่ใช่ publicly-trusted และชี้มายัง การกำหนดค่านี้ คำเตือนนี้เป็นเพียงข้อมูลแจ้งให้ทราบ; การลงนามยังคงสำเร็จ
การแทนที่ค่าเริ่มต้น
หัวข้อที่มีชื่อว่า “การแทนที่ค่าเริ่มต้น”ตั้งค่า endpoint ของ TSA ในการกำหนดค่าของ adapter เฟรมเวิร์กของคุณ คีย์ที่แน่นอนจะ
แตกต่างกันไปในแต่ละ adapter (ดูตารางตามเฟรมเวิร์ก):
ใน Laravel จะเป็นตัวแปรสภาพแวดล้อม NEXTPDF_TSA_URL, ใน Symfony จะเป็น bundle node
nextpdf.tsa.url และใน CodeIgniter จะเป็น env key nextPdf.tsa.url
TSA ที่มีผลจะถูกแก้ค่าตามลำดับความสำคัญนี้ โดยสูงสุดอยู่ก่อน:
TsaClientที่ระบุไว้อย่างชัดเจน ซึ่งคุณสร้างและฉีดเข้ามาเอง — อันนี้ชนะเสมอ- URL ที่กำหนดค่าไว้ใน adapter ของคุณ — ใช้เมื่อคุณไม่ได้ฉีด client เข้ามา
- ค่าเริ่มต้นที่มีมาให้ในตัว — ใช้เฉพาะเมื่อไม่ได้ตั้งค่าทั้งสองอย่างข้างต้นเท่านั้น
# Laravel (.env): use your own publicly-trusted TSA instead of the shipped default.NEXTPDF_TSA_URL=http://timestamp.digicert.comการปิดการประทับเวลา
หัวข้อที่มีชื่อว่า “การปิดการประทับเวลา”การปล่อยให้ url ของ TSA ใน adapter ของคุณอยู่ที่ค่าเริ่มต้น (ไม่ได้กำหนดค่า) จะคงไว้ซึ่ง endpoint เริ่มต้นที่มีมาให้ในตัว การตั้งค่า url นั้นเป็นค่าว่างเป็นคนละเรื่องกัน: มันจะปิดการ ประทับเวลา เมื่อไม่ได้กำหนดค่า TSA ไว้ ลายเซ็นที่ร้องขอที่ระดับ B-T ขึ้นไปจะล้มเหลวแบบ fail closed พร้อมข้อผิดพลาด “TSA required” แทนที่จะลดลงไปเป็น B-B อย่างเงียบ ๆ
# Laravel (.env):# NEXTPDF_TSA_URL unset -> use the built-in default (timestamp succeeds against pateon).# NEXTPDF_TSA_URL empty -> no TSA; a B-T+ request fails closed.NEXTPDF_TSA_URL=การเลือกอัลกอริทึม digest ของ messageImprint
หัวข้อที่มีชื่อว่า “การเลือกอัลกอริทึม digest ของ messageImprint”คำขอประทับเวลา RFC 3161 จะพก messageImprint — ค่าแฮชของข้อมูลที่กำลังถูกประทับเวลา — และ NextPDF ใช้ SHA-256 สำหรับ imprint นั้นโดยค่าเริ่มต้น ค่าเริ่มต้นนี้เป็นตัวเลือกที่จงใจ และทำงานร่วมกันได้ (interoperable); คุณแทบไม่จำเป็นต้องเปลี่ยนมันเลย
เมื่อคุณสร้าง TsaClient ด้วยมือ คุณสามารถเลือก imprint digest อื่นได้ผ่านพารามิเตอร์
constructor imprintHashAlgorithm ซึ่งรับค่า TsaImprintHashAlgorithm เคสหนึ่ง ได้แก่:
Sha256 (ค่าเริ่มต้น), Sha384, Sha512, Sha3_256, Sha3_384 หรือ Sha3_512
ค่าเริ่มต้นจะทำให้ทุกคำขอที่ส่งออกมีไบต์เหมือนกันทุกประการกับรุ่นก่อนหน้า ดังนั้นการอัปเกรด
จะไม่เปลี่ยนแปลงอะไรเลย เว้นแต่คุณจะเลือกใช้เอง
use NextPDF\Security\Timestamp\TsaClient;use NextPDF\Security\Timestamp\TsaImprintHashAlgorithm;
// Default — SHA-256 imprint, unchanged from earlier releases:$tsa = new TsaClient('https://timestamp.example.com/tsa');
// Opt in to a stronger imprint digest:$tsa = new TsaClient( 'https://timestamp.example.com/tsa', imprintHashAlgorithm: TsaImprintHashAlgorithm::Sha512,);มีข้อจำกัดสองข้อที่ควรทราบก่อนที่คุณจะย้ายออกจากค่าเริ่มต้น:
- การรองรับในระบบนิเวศคือ SHA-256 ในปัจจุบัน imprint ที่ไม่ใช่ SHA-256 สามารถทำงาน ร่วมกับตัวตรวจสอบโทเคนของ Core ได้ แต่ proof gate ของ PAdES B-T ใน nextpdf-server และ validation digest map ของ Premium ในขณะนี้รองรับเฉพาะ imprint แบบ SHA-256 เท่านั้น ดังนั้นการประทับเวลาลายเซ็นที่สร้างด้วย imprint digest อื่นจะยังไม่สามารถพิสูจน์ B-T บน พื้นผิวเหล่านั้นได้ ให้คงค่าเริ่มต้นไว้ เว้นแต่จะทราบแน่ชัดว่าผู้บริโภคการประทับเวลาของคุณ ทุกรายยอมรับ digest ที่คุณเลือก
- digest ที่คำนวณไว้ล่วงหน้าต้องตรงกับอัลกอริทึม
getDocumentTimestamp()รับค่าแฮช ของเอกสารที่คำนวณไว้แล้ว; มันจะล้มเหลวแบบ fail closed ก่อนที่จะมีการเรียกผ่านเครือข่ายใด ๆ เมื่อความยาวของแฮชนั้นไม่ตรงกับอัลกอริทึม imprint ที่กำหนดค่าไว้ แทนที่จะส่งคำขอที่ไม่ตรงกัน ออกไป
เส้นทางอัปเกรด
หัวข้อที่มีชื่อว่า “เส้นทางอัปเกรด”สำหรับการใช้งานใด ๆ ที่นอกเหนือจากการพัฒนาหรือการใช้งานภายใน ให้แทนที่ค่าเริ่มต้นด้วย หนึ่งในสองตัวเลือกที่แข็งแกร่งกว่า
TSA แบบ publicly-trusted
หัวข้อที่มีชื่อว่า “TSA แบบ publicly-trusted”ชี้ url ของ TSA ใน adapter ของคุณไปยัง TSA ที่ใบรับรองเชื่อมโยงไปยัง public root ที่
relying party ของคุณเชื่อถืออยู่แล้ว — ตัวอย่างเช่น http://timestamp.digicert.com
ไม่ต้องแจกจ่าย private root ใด ๆ TSA ในระดับที่ใช้งานจริงโดยทั่วไปจะระบุความสอดคล้อง
กับนโยบายการประทับเวลา เช่น ETSI EN 319 421 §5 และปฏิบัติตามโปรไฟล์โปรโตคอล RFC 3161
ที่อธิบายไว้ใน ETSI EN 319 422 §7; ให้ยืนยันสิ่งนี้กับนโยบายที่เผยแพร่ของผู้ดำเนินการ
แทนที่จะสันนิษฐานเอาจากความเชื่อถือสาธารณะเพียงอย่างเดียว
TSA ที่ผ่านการรับรองตามมาตรฐาน eIDAS
หัวข้อที่มีชื่อว่า “TSA ที่ผ่านการรับรองตามมาตรฐาน eIDAS”สำหรับการประทับเวลาที่ต้องมีผลทางกฎหมายแบบ qualified ในสหภาพยุโรป ให้ใช้บริการ ประทับเวลาแบบ qualified จาก qualified trust service provider (QTSP) ที่อยู่ในรายการ EU Trusted List การประทับเวลาทางอิเล็กทรอนิกส์แบบ qualified จะผูกเวลาเข้ากับข้อมูล เพื่อป้องกันการเปลี่ยนแปลงที่ตรวจไม่พบได้อย่างสมเหตุสมผล อ้างอิงจากแหล่งเวลาที่แม่นยำ ซึ่งเชื่อมโยงกับ Coordinated Universal Time และได้รับการคุ้มครองด้วยลายเซ็นอิเล็กทรอนิกส์ ขั้นสูงหรือตราประทับอิเล็กทรอนิกส์ขั้นสูงของ QTSP หรือด้วยวิธีการที่เทียบเท่ากัน (Regulation (EU) 910/2014, Art 42) นี่คือตัวเลือกที่แข็งแกร่งที่สุดและเป็นตัวเลือกที่ควรเลือก เมื่อข้อบังคับระบุถึง qualified timestamp อย่างชัดเจน
การกำหนดค่าตามเฟรมเวิร์ก
หัวข้อที่มีชื่อว่า “การกำหนดค่าตามเฟรมเวิร์ก”ค่าเริ่มต้นอยู่ในการกำหนดค่าของ adapter แต่ละเฟรมเวิร์ก ไม่ใช่ในเอนจิน Core เอง Core
ไม่เคยคิด URL ขึ้นมาเอง: TsaClient ที่คุณสร้างด้วยมือต้องมี endpoint ที่ระบุชัดเจน
และจะโยนข้อยกเว้นหากมันว่างเปล่า ระดับระยะยาว (B-LT และ B-LTA) จะใช้ TSA ที่กำหนดค่า
ไว้แบบเดียวกันกับ B-T
| Integration | ค่าเริ่มต้นอยู่ที่ไหน | วิธีแทนที่ |
|---|---|---|
| Laravel | config/nextpdf.php -> tsa.url | ตั้งค่า NEXTPDF_TSA_URL ใน .env |
| Symfony | bundle config nextpdf.tsa.url | ตั้งค่า node หรือผูกเข้ากับตัวแปร env |
| CodeIgniter | Config\NextPdf::$tsa['url'] | แทนที่ผ่าน env key nextPdf.tsa.url |
| Plain core | ไม่มีค่าเริ่มต้นโดยปริยาย | สร้าง TsaClient พร้อม URL ที่ระบุชัดเจน + client PSR-18 ที่ถูกเสริมความปลอดภัย |
ในทุก adapter B-B จะไม่สร้าง TSA client เลย ดังนั้นลายเซ็นที่ไม่ได้ประทับเวลาจึง ไม่ได้รับผลกระทบจากการกำหนดค่าใด ๆ เหล่านี้
แบบจำลองความเชื่อถือและมาตรฐาน
หัวข้อที่มีชื่อว่า “แบบจำลองความเชื่อถือและมาตรฐาน”คุณค่าของการประทับเวลาอยู่ที่ห่วงโซ่ความเชื่อถือเบื้องหลังมัน ไม่ใช่ตัวไบต์เอง โทเคน RFC 3161 ยืนยันเพียงเวลาเท่านั้น; ส่วนการยืนยันนั้นจะน่าเชื่อถือหรือไม่เป็นคุณสมบัติของ TSA ที่ลงนามมัน (RFC 3161 §2; ISO/IEC 18014-2 §7.3) เมื่อคุณคงค่าเริ่มต้นที่มาให้ไว้ คุณกำลังเลือก trust anchor แบบ self-hosted และ private-trust — เหมาะสำหรับการพัฒนา และเวิร์กโฟลว์ภายในที่ relying party ทุกรายสามารถติดตั้ง PATEON root ได้ แต่ไม่เหมาะ สำหรับเอกสารที่ตรวจสอบโดยบุคคลภายนอก สำหรับกรณีเหล่านั้น ให้ย้ายไปยัง TSA แบบ publicly-trusted หรือไปยัง TSA ที่ผ่านการรับรองตามมาตรฐาน eIDAS เมื่อจำเป็นต้องมี ผลทางกฎหมายแบบ qualified
หากคุณดำเนินการค่าเริ่มต้นเอง คุณสามารถปักหมุด (pin) public key ของ TSA ไว้ใน client PSR-18 ที่คุณฉีดเข้ามาเองได้ อย่า ปักหมุดค่าเริ่มต้นที่มาให้ไว้ในโค้ดที่ใช้ร่วมกัน: การหมุนคีย์ที่ฝั่งผู้ดำเนินการจะทำให้ผู้ใช้ค่าเริ่มต้นทุกรายเสียหายพร้อมกันในคราวเดียว ความเชื่อถือในการประทับเวลาคือห่วงโซ่ใบรับรองและ PATEON root ไม่ใช่การปักหมุดที่ชั้นการขนส่ง