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
ICustomSecurityHandlersolo quando la crittografia standard è insufficiente.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| La firma risulta non valida | Documento modificato dopo la firma | Rifirmare dopo che tutte le modifiche sono state completate |
| Il caricamento del PFX fallisce | Password errata o file corrotto | Verificare la password e l’integrità del file |
| La crittografia impedisce l’apertura | Password del proprietario non fornita | Utilizzare 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 / Method | Description |
|---|---|
PdfSigner | Firmare e verificare documenti PDF |
PdfSigner.Sign | Applicare una firma digitale |
PdfSigner.Verify | Verificare la validità della firma |
PdfSigner.SignWithAppearance | Firmare con un campo firma visivo |
PdfCertificate | Caricatore di certificati per formati PFX e DER |
PdfCertificate.FromPfx | Caricare da un file PFX con password |
PdfCertificate.FromDerFiles | Caricare da file codificati DER |
CertificateEncryptionOptions | Crittografia PDF basata su certificato |
ICustomSecurityHandler | Interfaccia per crittografia/decrittografia personalizzata |
EncryptionParameters | Parametri passati ai gestori di sicurezza personalizzati |
SignatureAlgorithmInfo | Metadati sull’algoritmo di una firma |