Bezpieczeństwo i podpisy

Bezpieczeństwo i podpisy

Bezpieczeństwo i podpisy

Aspose.PDF FOSS for .NET obsługuje cyfrowe podpisy PDF, szyfrowanie oparte na certyfikatach i niestandardowe obsługi zabezpieczeń. Użyj PdfSigner do przepływów pracy podpisywania i PdfCertificate do zarządzania certyfikatami.


Podpisywanie dokumentu

PdfSigner nakłada podpis cyfrowy na PDF przy użyciu certyfikatu PFX.

var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");

Weryfikacja podpisów

var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");

Podpisywanie z wizualnym wyglądem

signer.SignWithAppearance(doc, cert, signatureField, appearance);

Zarządzanie certyfikatami

PdfCertificate ładuje certyfikaty z plików PFX lub plików zakodowanych w formacie DER.

// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");

// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");

Szyfrowanie oparte na certyfikacie

CertificateEncryptionOptions szyfruje plik PDF, tak aby tylko określeni posiadacze certyfikatu mogli go otworzyć.

var options = new CertificateEncryptionOptions(cert);

Niestandardowe obsługi zabezpieczeń

Zaimplementuj ICustomSecurityHandler dla niestandardowej logiki szyfrowania i deszyfrowania.

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; }
}

Informacje o algorytmie podpisu

SignatureAlgorithmInfo opisuje algorytm używany w istniejącym podpisie.

var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());

Wskazówki i najlepsze praktyki

  • Zawsze podpisuj dokumenty jako ostatni krok — każda modyfikacja po podpisaniu unieważnia podpis.
  • Używaj plików PFX z silnymi hasłami do przechowywania certyfikatów.
  • Weryfikuj podpisy po załadowaniu dokumentu, aby wykryć manipulacje.
  • Szyfrowanie oparte na certyfikacie wymaga certyfikatu klucza publicznego odbiorcy.
  • Wdrażaj ICustomSecurityHandler tylko wtedy, gdy standardowe szyfrowanie jest niewystarczające.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Podpis wyświetla się jako nieprawidłowyDokument został zmodyfikowany po podpisaniuPodpisz ponownie po zakończeniu wszystkich modyfikacji
Ładowanie PFX nie powiodło sięNieprawidłowe hasło lub uszkodzony plikSprawdź hasło i integralność pliku
Szyfrowanie uniemożliwia otwarcieNie podano hasła właścicielaUżyj prawidłowego hasła właściciela lub użytkownika

FAQ

Jakie algorytmy podpisu są obsługiwane?

RSA z SHA-256, SHA-384 i SHA-512 jest powszechnie obsługiwane. Dostępne algorytmy zależą od typu klucza certyfikatu.

Czy mogę dodać wiele podpisów?

Tak. Każdy podpis jest stosowany do osobnego pola podpisu w dokumencie.

Czy podpis wymaga komercyjnego certyfikatu?

Nie. Certyfikaty samopodpisane działają w testach. W produkcji użyj a certyfikatu od zaufanego CA.


API Podsumowanie odniesienia

Class / MethodDescription
PdfSignerPodpisywanie i weryfikacja dokumentów PDF
PdfSigner.SignZastosowanie podpisu cyfrowego
PdfSigner.VerifySprawdzenie ważności podpisu
PdfSigner.SignWithAppearancePodpisz przy użyciu pola podpisu wizualnego
PdfCertificateŁadowarka certyfikatów dla formatów PFX i DER
PdfCertificate.FromPfxŁadowanie z pliku PFX z hasłem
PdfCertificate.FromDerFilesŁadowanie z plików zakodowanych w formacie DER
CertificateEncryptionOptionsSzyfrowanie PDF oparte na certyfikacie
ICustomSecurityHandlerInterfejs dla własnego szyfrowania/deszyfrowania
EncryptionParametersParametry przekazywane do własnych obsługujących bezpieczeństwo
SignatureAlgorithmInfoMetadane dotyczące algorytmu podpisu

Zobacz także

 Polski