ความปลอดภัยและลายเซ็น
ความปลอดภัยและลายเซ็น
Aspose.PDF FOSS for .NET รองรับลายเซ็นดิจิทัล PDF, การเข้ารหัสแบบใช้ใบรับรอง, และตัวจัดการความปลอดภัยแบบกำหนดเอง. ใช้ PdfSigner สำหรับกระบวนการลงลายเซ็นและ PdfCertificate สำหรับการจัดการใบรับรอง.
การลงนามเอกสาร
PdfSigner ใช้ลายเซ็นดิจิทัลกับ PDF โดยใช้ใบรับรอง PFX.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");การตรวจสอบลายเซ็น
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");การลงนามด้วยลักษณะภาพ
signer.SignWithAppearance(doc, cert, signatureField, appearance);การจัดการใบรับรอง
PdfCertificate โหลดใบรับรองจากไฟล์ PFX หรือไฟล์ที่เข้ารหัสเป็น DER.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");การเข้ารหัสแบบใช้ใบรับรอง
CertificateEncryptionOptions เข้ารหัส PDF เพื่อให้เฉพาะผู้ถือใบรับรองที่ระบุเท่านั้นที่สามารถเปิดได้.
var options = new CertificateEncryptionOptions(cert);ตัวจัดการความปลอดภัยแบบกำหนดเอง
ดำเนินการ ICustomSecurityHandler สำหรับตรรกะการเข้ารหัสและถอดรหัสแบบกำหนดเอง.
public class MyHandler : ICustomSecurityHandler
{
public void Initialize(EncryptionParameters parameters) { }
public byte[] CalculateEncryptionKey() { /* ... */ return Array.Empty<byte>(); }
public byte[] GetUserKey() { /* ... */ return Array.Empty<byte>(); }
public byte[] GetOwnerKey() { /* ... */ return Array.Empty<byte>(); }
public bool IsOwnerPassword(string password) { /* ... */ return false; }
public bool IsUserPassword(string password) { /* ... */ return false; }
}ข้อมูลอัลกอริทึมลายเซ็น
SignatureAlgorithmInfo อธิบายอัลกอริทึมที่ใช้ในลายเซ็นที่มีอยู่แล้ว.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ลงนามเอกสารเสมอเป็นขั้นตอนสุดท้าย — การแก้ไขใด ๆ หลังจากการลงนามทำให้ signature ไม่ถูกต้อง
- ใช้ไฟล์ PFX พร้อมรหัสผ่านที่แข็งแรงสำหรับการจัดเก็บ certificate
- ตรวจสอบ signatures หลังจากโหลด document เพื่อค้นพบการดัดแปลง
- การเข้ารหัสแบบ Certificate-based ต้องการ public key certificate ของผู้รับ
- ใช้
ICustomSecurityHandlerเฉพาะเมื่อการเข้ารหัสมาตรฐานไม่เพียงพอ
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| ลายเซ็นแสดงว่าไม่ถูกต้อง | Document ถูกแก้ไขหลังจากการเซ็น | ทำการเซ็นใหม่หลังจากการแก้ไขทั้งหมดเสร็จสิ้น |
| การโหลด PFX ล้มเหลว | รหัสผ่านผิดหรือไฟล์เสียหาย | ตรวจสอบรหัสผ่านและความสมบูรณ์ของไฟล์ |
| การเข้ารหัสทำให้ไม่สามารถเปิดไฟล์ได้ | ไม่ได้ระบุรหัสผ่านเจ้าของ | ใช้รหัสผ่านเจ้าของหรือผู้ใช้ที่ถูกต้อง |
คำถามที่พบบ่อย
อัลกอริทึมลายเซ็นที่รองรับคืออะไร?
RSA กับ SHA-256, SHA-384 และ SHA-512 ได้รับการสนับสนุนโดยทั่วไป. อัลกอริทึมที่มีให้ขึ้นอยู่กับประเภทคีย์ของใบรับรอง.
ฉันสามารถเพิ่มลายเซ็นหลายลายได้หรือไม่?
ใช่. ลายเซ็นแต่ละอันจะถูกนำไปใช้กับฟิลด์ลายเซ็นที่แยกจากกันในเอกสาร.
การลงนามต้องใช้ใบรับรองเชิงพาณิชย์หรือไม่?
ไม่. ใบรับรองที่ลงนามด้วยตนเองทำงานได้สำหรับการทดสอบ. สำหรับการใช้งานจริง ให้ใช้ ใบรับรองจาก CA ที่เชื่อถือได้.
สรุปการอ้างอิง API
| Class / Method | Description |
|---|---|
PdfSigner | ลงนามและตรวจสอบความถูกต้องของเอกสาร PDF |
PdfSigner.Sign | ใช้ลายเซ็นดิจิทัล |
PdfSigner.Verify | ตรวจสอบความถูกต้องของลายเซ็น |
PdfSigner.SignWithAppearance | ลงนามด้วยฟิลด์ลายเซ็นที่มองเห็นได้ |
PdfCertificate | ตัวโหลดใบรับรองสำหรับรูปแบบ PFX และ DER |
PdfCertificate.FromPfx | โหลดจากไฟล์ PFX ด้วยรหัสผ่าน |
PdfCertificate.FromDerFiles | โหลดจากไฟล์ที่เข้ารหัสเป็น DER |
CertificateEncryptionOptions | การเข้ารหัส PDF ด้วยใบรับรอง |
ICustomSecurityHandler | อินเทอร์เฟซสำหรับการเข้ารหัส/ถอดรหัสแบบกำหนดเอง |
EncryptionParameters | พารามิเตอร์ที่ส่งให้ตัวจัดการความปลอดภัยแบบกำหนดเอง |
SignatureAlgorithmInfo | เมตาดาต้าเกี่ยวกับอัลกอริทึมของลายเซ็น |