Bảo mật và Chữ ký
Bảo mật và Chữ ký
Aspose.PDF FOSS for .NET hỗ trợ chữ ký số PDF, mã hóa dựa trên chứng chỉ và các trình xử lý bảo mật tùy chỉnh. Sử dụng PdfSigner cho quy trình ký và PdfCertificate cho quản lý chứng chỉ.
Ký một tài liệu
PdfSigner áp dụng chữ ký số cho PDF bằng chứng chỉ PFX.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");Xác minh chữ ký
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");Ký với giao diện trực quan
signer.SignWithAppearance(doc, cert, signatureField, appearance);Quản lý chứng chỉ
PdfCertificate tải chứng chỉ từ các tệp PFX hoặc các tệp được mã hoá DER.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");Mã hóa dựa trên chứng chỉ
CertificateEncryptionOptions mã hóa một PDF để chỉ những người nắm giữ chứng chỉ được chỉ định mới có thể mở nó.
var options = new CertificateEncryptionOptions(cert);Trình xử lý bảo mật tùy chỉnh
Triển khai ICustomSecurityHandler cho logic mã hóa và giải mã tùy chỉnh.
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; }
}Thông tin thuật toán chữ ký
SignatureAlgorithmInfo mô tả thuật toán được sử dụng trong một chữ ký hiện có.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());Mẹo và Thực hành tốt nhất
- Luôn ký tài liệu ở bước cuối cùng — bất kỳ sửa đổi nào sau khi ký sẽ làm mất hiệu lực chữ ký.
- Sử dụng tệp PFX với mật khẩu mạnh để lưu trữ chứng chỉ.
- Xác minh chữ ký sau khi tải tài liệu để phát hiện việc giả mạo.
- Mã hóa dựa trên chứng chỉ yêu cầu chứng chỉ khóa công khai của người nhận.
- Triển khai
ICustomSecurityHandlerchỉ khi mã hóa tiêu chuẩn không đủ.
Các vấn đề thường gặp
| Issue | Cause | Fix |
|---|---|---|
| Chữ ký hiển thị là không hợp lệ | Tài liệu đã được sửa đổi sau khi ký | Ký lại sau khi mọi sửa đổi đã hoàn tất |
| Việc tải PFX thất bại | Mật khẩu sai hoặc tệp bị hỏng | Xác minh mật khẩu và tính toàn vẹn của tệp |
| Mã hóa ngăn không mở | Mật khẩu chủ sở hữu chưa được cung cấp | Sử dụng mật khẩu chủ sở hữu hoặc người dùng đúng |
Câu hỏi thường gặp
Các thuật toán ký nào được hỗ trợ?
RSA với SHA-256, SHA-384 và SHA-512 thường được hỗ trợ. Các thuật toán khả dụng phụ thuộc vào loại khóa của chứng chỉ.
Tôi có thể thêm nhiều chữ ký không?
Có. Mỗi chữ ký được áp dụng vào một trường chữ ký riêng trong tài liệu.
Việc ký có yêu cầu chứng chỉ thương mại không?
No. Chứng chỉ tự ký hoạt động cho việc thử nghiệm. Đối với môi trường sản xuất, hãy sử dụng một chứng chỉ từ một CA đáng tin cậy.
Tóm tắt Tham chiếu API
| Class / Method | Description |
|---|---|
PdfSigner | Ký và xác thực tài liệu PDF |
PdfSigner.Sign | Áp dụng chữ ký số |
PdfSigner.Verify | Kiểm tra tính hợp lệ của chữ ký |
PdfSigner.SignWithAppearance | Ký bằng trường chữ ký trực quan |
PdfCertificate | Trình tải chứng chỉ cho các định dạng PFX và DER |
PdfCertificate.FromPfx | Tải từ tệp PFX có mật khẩu |
PdfCertificate.FromDerFiles | Tải từ các tệp được mã hoá DER |
CertificateEncryptionOptions | Mã hoá PDF dựa trên chứng chỉ |
ICustomSecurityHandler | Giao diện cho mã hoá/giải mã tùy chỉnh |
EncryptionParameters | Tham số được truyền cho trình xử lý bảo mật tùy chỉnh |
SignatureAlgorithmInfo | Siêu dữ liệu về thuật toán của chữ ký |