Sicurezza e firme

Sicurezza e firme

Sicurezza e firme

Aspose.PDF FOSS for .NET supporta firme digitali PDF, crittografia basata su certificati e gestori di sicurezza personalizzati. Usa PdfSigner per i flussi di lavoro di firma e PdfCertificate per la gestione dei certificati.


Firma di un documento

PdfSigner applica una firma digitale a un PDF utilizzando un certificato PFX.

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

Verifica delle firme

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

Firma con un aspetto visivo

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

Gestione dei certificati

PdfCertificate carica certificati da file PFX o file codificati DER.

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

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

Crittografia basata su certificato

CertificateEncryptionOptions crittografa un PDF in modo che solo i titolari del certificato specificato possano aprirlo.

var options = new CertificateEncryptionOptions(cert);

Gestori di sicurezza personalizzati

Implementa ICustomSecurityHandler per la logica di crittografia e decrittografia personalizzata.

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

Informazioni sull’algoritmo di firma

SignatureAlgorithmInfo descrive l’algoritmo utilizzato in una firma esistente.

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

Suggerimenti e migliori pratiche

  • Firma sempre i documenti come ultimo passaggio — qualsiasi modifica dopo la firma invalida la firma.
  • Usa file PFX con password complesse per l’archiviazione dei certificati.
  • Verifica le firme dopo aver caricato un documento per rilevare manomissioni.
  • La crittografia basata su certificato richiede il certificato della chiave pubblica del destinatario.
  • Implementa ICustomSecurityHandler solo quando la crittografia standard è insufficiente.

Problemi comuni

ProblemaCausaCorrezione
La firma risulta non validaDocumento modificato dopo la firmaRifirmare dopo che tutte le modifiche sono state completate
Il caricamento del PFX falliscePassword errata o file corrottoVerificare la password e l’integrità del file
La crittografia impedisce l’aperturaPassword del proprietario non fornitaUtilizzare la password corretta del proprietario o dell’utente

FAQ

Quali algoritmi di firma sono supportati?

RSA con SHA-256, SHA-384 e SHA-512 è comunemente supportato. Gli algoritmi disponibili dipendono dal tipo di chiave del certificato.

Posso aggiungere più firme?

Sì. Ogni firma viene applicata a un campo firma separato nel documento.

La firma richiede un certificato commerciale?

No. I certificati autofirmati funzionano per i test. Per la produzione, usa un certificato da una CA attendibile.


Riepilogo del Riferimento API

Class / MethodDescription
PdfSignerFirmare e verificare documenti PDF
PdfSigner.SignApplicare una firma digitale
PdfSigner.VerifyVerificare la validità della firma
PdfSigner.SignWithAppearanceFirmare con un campo firma visivo
PdfCertificateCaricatore di certificati per formati PFX e DER
PdfCertificate.FromPfxCaricare da un file PFX con password
PdfCertificate.FromDerFilesCaricare da file codificati DER
CertificateEncryptionOptionsCrittografia PDF basata su certificato
ICustomSecurityHandlerInterfaccia per crittografia/decrittografia personalizzata
EncryptionParametersParametri passati ai gestori di sicurezza personalizzati
SignatureAlgorithmInfoMetadati sull’algoritmo di una firma

Vedi anche

 Italiano