บทนำ

การเพิ่ม ลายเซ็นดิจิทัลที่มีการประทับเวลา ลงใน 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

  1. สร้างโปรเจกต์คอนโซล C# หรือ Windows ใหม่.
  2. ตรวจสอบให้แน่ใจว่าได้อ้างอิงแพ็กเกจ NuGet แล้ว.
  3. วางไฟล์ PDF ที่ต้องการเซ็นในโฟลเดอร์ที่รู้จัก (เช่น โฟลเดอร์ Data).
  4. เก็บใบรับรองการเซ็น (.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

  1. โหลดไฟล์ .pfx ของคุณและรหัสผ่าน
  2. สร้างอินสแตนซ์ PKCS7 ด้วยข้อมูลรับรองเหล่านั้น
  3. สร้างอ็อบเจกต์ TimestampSettings ที่ชี้ไปยังจุดสิ้นสุด TSA ที่เข้าถึงได้สาธารณะ (เช่น https://freetsa.org/tsr) คุณสามารถเว้นอาร์กิวเมนต์ที่สองไว้เป็นค่าว่างได้หากไม่ต้องการการตรวจสอบสิทธิ์
  4. กำหนด 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. นำลายเซ็นไปใช้กับเอกสาร

  1. สร้างอินสแตนซ์ PdfFileSignature ด้วย Document ที่โหลดแล้ว
  2. เรียกใช้ Sign พร้อมกับหมายเลขหน้า, เหตุผล, ติดต่อ, ตำแหน่ง, ตัวแปรบูลีนที่ระบุว่าลายเซ็นควรแสดงหรือไม่, สี่เหลี่ยม, และอ็อบเจกต์ PKCS7
  3. สุดท้าย, บันทึกเอกสารที่ลงลายเซ็นโดยใช้ 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 อย่างเป็นโปรแกรมได้

คำถามที่พบบ่อย

  1. Timestamp Authority (TSA) คืออะไรและทำไมฉันต้องการมัน? TSA ให้เครื่องหมายเวลาที่เชื่อถือได้ซึ่งพิสูจน์ว่าลายเซ็นมีอยู่ในช่วงเวลาหนึ่ง ซึ่งเป็นสิ่งสำคัญสำหรับการตรวจสอบระยะยาวเมื่อใบรับรองการลงลายเซ็นหมดอายุหรือถูกเพิกถอน.

  2. ฉันสามารถใช้ใบรับรอง .pfx ใดก็ได้สำหรับลายเซ็นหรือไม่? ใช่, ไฟล์ PKCS#12 (.pfx) ที่ถูกต้องใดก็ได้ซึ่งมีคีย์ส่วนตัวและใบรับรองที่สอดคล้องกันสามารถใช้ได้ ตราบใดที่ใบรับรองนั้นได้รับความเชื่อถือจากฝ่ายที่ทำการตรวจสอบ PDF.

  3. เวลาประทับเวลาจะส่งผลต่อรูปลักษณ์การแสดงผลของลายเซ็นหรือไม่? ไม่. เวลาประทับเวลาถูกฝังอยู่ในข้อมูลเชิงคริปโตกราฟิกของลายเซ็น ในขณะที่รูปลักษณ์การแสดงผล (สี่เหลี่ยมที่คุณกำหนด) ยังคงไม่เปลี่ยนแปลง.

  4. ฉันจะตรวจสอบได้อย่างไรว่าการใส่ timestamp ทำสำเร็จ? เปิดไฟล์ PDF ที่ลงนามในโปรแกรมดู PDF ที่รองรับการตรวจสอบลายเซ็น (เช่น Adobe Acrobat) คุณสมบัติของลายเซ็นจะแสดงแหล่งที่มาของ timestamp และเวลา

  5. เป็นไปได้หรือไม่ที่จะลงนามหลายหน้าโดยใช้ลายเซ็นที่มีการทำเครื่องหมายเวลาเดียวกัน? ใช่ คุณสามารถเรียก PdfFileSignature.Sign สำหรับแต่ละหน้าที่ต้องการลงนาม โดยใช้วัตถุ PKCS#7 เดียวกันพร้อมการตั้งค่า TimestampSettings อีกครั้ง

  6. ฉันต้องใช้ไลเซนส์ที่ต้องชำระเงินเพื่อใช้ TimestampSettings หรือไม่?
    TimestampSettings มีให้ในชุดคุณสมบัติเต็มของ Aspose.PDF คุณสามารถประเมินได้โดยใช้ไลเซนส์ชั่วคราวที่ได้รับจากเว็บไซต์ของ Aspose.

อ่านเพิ่มเติม