บทนำ
การเพิ่ม ลายเซ็นดิจิทัลที่มีการประทับเวลา ลงใน PDF ไม่เพียงแต่พิสูจน์ความเป็นผู้เขียนเท่านั้น แต่ยังรับประกันว่าลายเซ็นนั้นมีอยู่ในช่วงเวลาที่กำหนด นี่เป็นสิ่งสำคัญสำหรับสถานการณ์ทางกฎหมาย การเงิน และการปฏิบัติตามที่ต้องแสดงความถูกต้องระยะยาวของเอกสาร ในบทแนะนำนี้เราจะแสดงวิธีทำการลงลายเซ็นที่มีการประทับเวลาใน C# โดยใช้ Aspose.PDF for .NET คำสำคัญ ลายเซ็นดิจิทัลที่มีการประทับเวลา ปรากฏตั้งแต่ต้นเพื่อบ่งบอกความเกี่ยวข้องของบทความต่อเครื่องมือค้นหาและนักพัฒนา
ทำไมลายเซ็นดิจิทัลที่มีการตั้งเวลาเป็นสำคัญ
ลายเซ็นดิจิทัลทั่วไปผูกเอกสารกับใบรับรอง แต่ความถูกต้องของใบรับรองอาจเปลี่ยนแปลง—ใบรับรองอาจหมดอายุ ถูกเพิกถอน หรือหน่วยงานที่ลงนามอาจถูกทำลายได้ หน่วยงานให้เวลาประทับ (Timestamp Authority (TSA)) จะใส่ตราประทับเวลาที่เชื่อถือได้ลงในลายเซ็น สร้างหลักฐานที่ไม่สามารถแก้ไขได้ว่ามีการลงนามเอกสารก่อนที่อาจเกิดปัญหาใด ๆ กับใบรับรอง สิ่งนี้ช่วยปกป้องจากข้อพิพาทในอนาคตและสอดคล้องกับกฎระเบียบเช่น eIDAS และกฎหมาย ESIGN ของสหรัฐอเมริกา โดยการฝังตราประทับเวลาที่จัดหาโดย TSA‐provided คุณจะทำให้ไฟล์ PDF ของคุณพร้อมรับมือกับอนาคตโดยไม่ต้องลงนามใหม่เมื่อใบรับรองเปลี่ยนแปลง.
ทำไมต้องใช้ Aspose.PDF for .NET
Aspose.PDF for .NET เป็นไลบรารีที่มีประสิทธิภาพซึ่งช่วยให้สร้าง, จัดการและลงลายเซ็นไฟล์ PDF ได้โดยไม่ต้องใช้ Adobe Acrobat. เพื่อเริ่มต้น, ให้ติดตั้งไลบรารีผ่าน NuGet:
Install-Package Aspose.PDF
เมื่อติดตั้งแล้ว คุณสามารถอ้างอิงเอกสาร API บน Aspose.PDF หน้าเพจผลิตภัณฑ์ เพื่อดูรายละเอียดของคลาสต่างๆ คีย์คลาสที่เราจะใช้มีดังนี้:
Aspose.Pdf.Document– เป็นตัวแทนของเอกสาร PDF.Aspose.Pdf.Facades.PdfFileSignature– ให้ความสามารถในการลงนาม.Aspose.Pdf.Forms.PKCS7– ห่อหุ้มลายเซ็นที่อิงใบรับรอง.Aspose.Pdf.TimestampSettings– เก็บ URL ของ TSA และข้อมูลรับรอง.System.Drawing.Rectangle– กำหนดพื้นที่ภาพของลายเซ็นบนหน้า.
ขั้นตอนโดยละเอียด: เพิ่มลายเซ็นดิจิทัลที่มีการประทับเวลา
1. เตรียมสภาพแวดล้อมและโหลด PDF
- สร้างโปรเจกต์คอนโซล C# หรือ Windows ใหม่.
- ตรวจสอบให้แน่ใจว่าได้อ้างอิงแพ็กเกจ NuGet แล้ว.
- วางไฟล์ PDF ที่ต้องการเซ็นในโฟลเดอร์ที่รู้จัก (เช่น โฟลเดอร์
Data). - เก็บใบรับรองการเซ็น (
.pfx) และรหัสผ่านอย่างปลอดภัย.
ตัวอย่างต่อไปนี้แสดงวิธีการเพิ่มลายเซ็นดิจิทัลที่มีการประทับเวลาในไฟล์ PDF ด้วย C# และ Aspose.PDF.
// Load a PDF document from the file system
string dataDir = "./Data/"; // Adjust the path to your data folder
string pdfPath = Path.Combine(dataDir, "SimpleResume.pdf");
using (var document = new Aspose.Pdf.Document(pdfPath))
{
// PDF is now loaded and ready for signing
// Further steps will be performed inside this using block
}
คำอธิบาย:
dataDirชี้ไปยังโฟลเดอร์ที่มีไฟล์อินพุต.Aspose.Pdf.Documentเปิดไฟล์ PDF ในบริบทที่ใช้แล้วทิ้ง, เพื่อให้แน่ใจว่าทรัพยากรถูกปล่อยออก.
2. สร้างอ็อบเจ็กต์ลายเซ็น PKCS#7 และกำหนดค่า Timestamp
- โหลดไฟล์
.pfxของคุณและรหัสผ่าน - สร้างอินสแตนซ์
PKCS7ด้วยข้อมูลรับรองเหล่านั้น - สร้างอ็อบเจกต์
TimestampSettingsที่ชี้ไปยังจุดสิ้นสุด TSA ที่เข้าถึงได้สาธารณะ (เช่น https://freetsa.org/tsr) คุณสามารถเว้นอาร์กิวเมนต์ที่สองไว้เป็นค่าว่างได้หากไม่ต้องการการตรวจสอบสิทธิ์ - กำหนด
TimestampSettingsให้กับอินสแตนซ์PKCS7
ตัวอย่างต่อไปนี้แสดงวิธีการกำหนดค่าลายเซ็น PKCS#7 ด้วยเซิร์ฟเวอร์ TSA โดยใช้ C#
string pfxPath = Path.Combine(dataDir, "myCertificate.pfx");
string pfxPassword = "myPassword"; // Keep this secure!
// Create the PKCS#7 signature object using the certificate
var pkcs = new Aspose.Pdf.Forms.PKCS7(pfxPath, pfxPassword);
// Configure timestamp settings – replace URL with your TSA if needed
var timestampSettings = new Aspose.Pdf.TimestampSettings("https://freetsa.org/tsr", string.Empty);
pkcs.TimestampSettings = timestampSettings;
คำอธิบาย:
PKCS7รวมใบรับรองและคีย์ส่วนตัวที่จำเป็นสำหรับลายเซ็นต์เชิงคริปโต.TimestampSettingsบอก Aspose.PDF ให้ร้องขอ timestamp จาก URL ของ TSA ที่ระบุในระหว่างกระบวนการลงลายเซ็น.- โดยการกำหนด
TimestampSettingsให้กับอินสแตนซ์PKCS7ทุกลายเซ็นที่สร้างด้วยอ็อบเจกต์นี้จะรวมเวลาที่จัดให้โดย TSA.
3. กำหนดลักษณะการแสดงผลของลายเซ็น
PDF signatures สามารถมีการแสดงผลที่มองเห็นได้ (ฟิลด์ลายเซ็น) หรือเป็นแบบไม่มองเห็นได้ ที่นี่เราจะสร้างสี่เหลี่ยมมองเห็นได้บนหน้า 1:
ตัวอย่างต่อไปนี้แสดงวิธีการกำหนดสี่เหลี่ยมลายเซ็นบนหน้าที่หนึ่ง.
// Define a rectangle where the signature will appear (in points)
var rect = new System.Drawing.Rectangle(100, 100, 200, 100); // x, y, width, height
คำอธิบาย:
- พิกัดของสี่เหลี่ยมใช้ระบบจุดของ PDF (1 จุด = 1/72 นิ้ว).
- ปรับค่า
xและyเพื่อกำหนดตำแหน่งของฟิลด์ลายเซ็นตามที่คุณต้องการบนหน้า.
4. นำลายเซ็นไปใช้กับเอกสาร
- สร้างอินสแตนซ์
PdfFileSignatureด้วยDocumentที่โหลดแล้ว - เรียกใช้
Signพร้อมกับหมายเลขหน้า, เหตุผล, ติดต่อ, ตำแหน่ง, ตัวแปรบูลีนที่ระบุว่าลายเซ็นควรแสดงหรือไม่, สี่เหลี่ยม, และอ็อบเจกต์PKCS7 - สุดท้าย, บันทึกเอกสารที่ลงลายเซ็นโดยใช้
PdfFileSignature.Save
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ลายเซ็นที่มีการกำหนดเวลาและบันทึกไฟล์ PDF ด้วย C#
using (var signature = new Aspose.Pdf.Facades.PdfFileSignature(document))
{
// Sign page 1 with the configured PKCS7 (which includes timestamp settings)
signature.Sign(
pageNumber: 1,
reason: "Approved by HR",
contact: "hr@example.com",
location: "New York, USA",
visible: true,
rect: rect,
pkcs: pkcs);
// Save the signed PDF to the output path
string outputPath = Path.Combine(dataDir, "DigitallySignWithTimeStamp_out.pdf");
signature.Save(outputPath);
}
คำอธิบาย:
PdfFileSignature.Signสร้างลายเซ็นที่อิงใบรับรองบนหน้าที่เลือกreason,contact, และlocationเป็นฟิลด์เมตาดาต้าแบบเลือกที่ปรากฏในคุณสมบัติของลายเซ็น- การตั้งค่า
visibleเป็นtrueทำให้ลายเซ็นปรากฏในสี่เหลี่ยมที่เรากำหนดไว้ก่อนหน้า - เนื่องจากได้ตั้งค่า
pkcs.TimestampSettingsแล้ว Aspose.PDF จะติดต่อ TSA (https://freetsa.org/tsr) ระหว่างการลงนามและฝังโทเคน timestamp ที่ได้รับกลับมาในลายเซ็น - ไฟล์ที่ลงนามแล้วจะถูกเขียนไปยัง
DigitallySignWithTimeStamp_out.pdf.
5. ตรวจสอบลายเซ็นและการประทับเวลา (ไม่บังคับ)
หลังจากทำการลงนามแล้ว คุณสามารถเปิดไฟล์ PDF ที่ได้ใน Adobe Acrobat Reader หรือโปรแกรมอ่าน PDF ใด ๆ ที่รองรับการตรวจสอบลายเซ็นได้ ไปที่แผงลายเซ็น; คุณควรจะเห็นแหล่งที่มาของการตั้งเวลา (เช่น “freetsa.org”) และเวลาที่แน่นอนที่ลายเซ็นถูกนำไปใช้ ขั้นตอนนี้ยืนยันว่าการโต้ตอบกับ TSA สำเร็จและลายเซ็นเป็นทั้งเชิงคริปโตกราฟิกที่ถูกต้องและมีการตั้งเวลา.
รับใบอนุญาตฟรี
Aspose มีใบอนุญาตการประเมินชั่วคราวที่ลบลายน้ำการประเมินและให้คุณสำรวจคุณสมบัติทั้งหมด รวมถึงการลงนามที่มีการประทับเวลา รับได้ทันทีที่ หน้าใบอนุญาตชั่วคราว.
แหล่งข้อมูลเพิ่มเติมฟรี
- เอกสาร – คู่มือที่ครอบคลุมและตัวอย่างการใช้ API มีให้ที่ Aspose.PDF for .NET docs.
- อ้างอิง API – รายละเอียดลายเซ็นเมธอดและโครงสร้างคลาสสามารถสำรวจได้ที่ API reference.
- แอปออนไลน์ฟรี – ลองลงนาม PDF โดยไม่ต้องเขียนโค้ดโดยใช้เว็บแอปฟรีที่ Aspose Apps.
สรุป
ลายเซ็นดิจิทัลที่มีการใส่เวลาให้บริการหลักฐานเวลาการลงนามที่เชื่อถือได้ซึ่งยังคงอยู่แม้ใบรับรองหมดอายุหรือถูกเพิกถอน โดยใช้ Aspose.PDF for .NET คุณสามารถบูรณาการการลงนามด้วยใบรับรองพร้อมการสนับสนุน TSA ได้อย่างรวดเร็ว กำหนดพื้นที่ลายเซ็นแบบภาพ และสร้าง PDF ที่สอดคล้องกับมาตรฐานพร้อมสำหรับการเก็บรักษาระยะยาว คู่มือขั้นตอนต่อขั้นตอนด้านบนจะพาคุณจากการติดตั้งจนถึงการรันโค้ด ทำให้คุณสามารถรักษาความปลอดภัยของเอกสาร PDF อย่างเป็นโปรแกรมได้
คำถามที่พบบ่อย
Timestamp Authority (TSA) คืออะไรและทำไมฉันต้องการมัน? TSA ให้เครื่องหมายเวลาที่เชื่อถือได้ซึ่งพิสูจน์ว่าลายเซ็นมีอยู่ในช่วงเวลาหนึ่ง ซึ่งเป็นสิ่งสำคัญสำหรับการตรวจสอบระยะยาวเมื่อใบรับรองการลงลายเซ็นหมดอายุหรือถูกเพิกถอน.
ฉันสามารถใช้ใบรับรอง .pfx ใดก็ได้สำหรับลายเซ็นหรือไม่? ใช่, ไฟล์ PKCS#12 (.pfx) ที่ถูกต้องใดก็ได้ซึ่งมีคีย์ส่วนตัวและใบรับรองที่สอดคล้องกันสามารถใช้ได้ ตราบใดที่ใบรับรองนั้นได้รับความเชื่อถือจากฝ่ายที่ทำการตรวจสอบ PDF.
เวลาประทับเวลาจะส่งผลต่อรูปลักษณ์การแสดงผลของลายเซ็นหรือไม่? ไม่. เวลาประทับเวลาถูกฝังอยู่ในข้อมูลเชิงคริปโตกราฟิกของลายเซ็น ในขณะที่รูปลักษณ์การแสดงผล (สี่เหลี่ยมที่คุณกำหนด) ยังคงไม่เปลี่ยนแปลง.
ฉันจะตรวจสอบได้อย่างไรว่าการใส่ timestamp ทำสำเร็จ? เปิดไฟล์ PDF ที่ลงนามในโปรแกรมดู PDF ที่รองรับการตรวจสอบลายเซ็น (เช่น Adobe Acrobat) คุณสมบัติของลายเซ็นจะแสดงแหล่งที่มาของ timestamp และเวลา
เป็นไปได้หรือไม่ที่จะลงนามหลายหน้าโดยใช้ลายเซ็นที่มีการทำเครื่องหมายเวลาเดียวกัน? ใช่ คุณสามารถเรียก
PdfFileSignature.Signสำหรับแต่ละหน้าที่ต้องการลงนาม โดยใช้วัตถุ PKCS#7 เดียวกันพร้อมการตั้งค่า TimestampSettings อีกครั้งฉันต้องใช้ไลเซนส์ที่ต้องชำระเงินเพื่อใช้ TimestampSettings หรือไม่?
TimestampSettings มีให้ในชุดคุณสมบัติเต็มของ Aspose.PDF คุณสามารถประเมินได้โดยใช้ไลเซนส์ชั่วคราวที่ได้รับจากเว็บไซต์ของ Aspose.
