Безпека та підписи

Безпека та підписи

Безпека та підписи

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 лише коли стандартне шифрування недостатнє.

Загальні проблеми

IssueCauseFix
Підпис показується як недійснийДокумент змінено після підписуПовторно підпишіть після завершення всіх змін
Помилка завантаження PFXНеправильний пароль або пошкоджений файлПеревірте пароль та цілісність файлу
Шифрування заважає відкриттюПароль власника не вказаноВикористайте правильний пароль власника або користувача

Часті питання

Які алгоритми підпису підтримуються?

RSA з SHA-256, SHA-384 та SHA-512 зазвичай підтримується. Доступні алгоритми залежать від типу ключа сертифіката.

Чи можу я додати кілька підписів?

Так. Кожен підпис застосовується до окремого поля підпису в документі.

Чи вимагає підписування комерційного сертифіката?

Ні. Самопідписані сертифікати підходять для тестування. Для продакшн‑середовища використовуйте сертифікат від довіреного CA.


Огляд довідки API

Class / MethodDescription
PdfSignerПідписувати та перевіряти PDF‑документи
PdfSigner.SignЗастосувати цифровий підпис
PdfSigner.VerifyПеревірити дійсність підпису
PdfSigner.SignWithAppearanceПідписати за допомогою візуального поля підпису
PdfCertificateЗавантажувач сертифікатів для форматів PFX та DER
PdfCertificate.FromPfxЗавантажити з файлу PFX з паролем
PdfCertificate.FromDerFilesЗавантажити з файлів, закодованих у DER
CertificateEncryptionOptionsШифрування PDF на основі сертифіката
ICustomSecurityHandlerІнтерфейс для користувацького шифрування/дешифрування
EncryptionParametersПараметри, передані користувацьким обробникам безпеки
SignatureAlgorithmInfoМетадані про алгоритм підпису

Див. також

 Українська