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
ICustomSecurityHandlertylko wtedy, gdy standardowe szyfrowanie jest niewystarczające.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Podpis wyświetla się jako nieprawidłowy | Dokument został zmodyfikowany po podpisaniu | Podpisz ponownie po zakończeniu wszystkich modyfikacji |
| Ładowanie PFX nie powiodło się | Nieprawidłowe hasło lub uszkodzony plik | Sprawdź hasło i integralność pliku |
| Szyfrowanie uniemożliwia otwarcie | Nie podano hasła właściciela | Uż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 / Method | Description |
|---|---|
PdfSigner | Podpisywanie i weryfikacja dokumentów PDF |
PdfSigner.Sign | Zastosowanie podpisu cyfrowego |
PdfSigner.Verify | Sprawdzenie ważności podpisu |
PdfSigner.SignWithAppearance | Podpisz 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 |
CertificateEncryptionOptions | Szyfrowanie PDF oparte na certyfikacie |
ICustomSecurityHandler | Interfejs dla własnego szyfrowania/deszyfrowania |
EncryptionParameters | Parametry przekazywane do własnych obsługujących bezpieczeństwo |
SignatureAlgorithmInfo | Metadane dotyczące algorytmu podpisu |