Безпека та підписи
Безпека та підписи
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());Поради та найкращі практики
- Завжди підписуйте документи як останній крок — будь‑яка модифікація після підпису анулює підпис.
- Використовуйте файли PFX зі складними паролями для зберігання сертифікатів.
- Перевіряйте підписи після завантаження документа, щоб виявити підробку.
- Шифрування на основі сертифікатів вимагає сертифікат відкритого ключа отримувача.
- Реалізуйте
ICustomSecurityHandlerлише коли стандартне шифрування недостатнє.
Загальні проблеми
| Issue | Cause | Fix |
|---|---|---|
| Підпис показується як недійсний | Документ змінено після підпису | Повторно підпишіть після завершення всіх змін |
| Помилка завантаження 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 | Метадані про алгоритм підпису |