Sécurité et signatures
Sécurité et signatures
Aspose.PDF FOSS for .NET supports PDF digital signatures, certificate-based cryptage, et manipulateurs de sécurité personnalisés. utilisez PdfSigner Pour signer flux de travail et PdfCertificate pour la gestion du certificat.
Signature d’un document
PdfSigner appliquer une signature numérique à un PDF en utilisant un certificat PFX.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");Vérification des signatures
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");Signature avec une apparence visuelle
signer.SignWithAppearance(doc, cert, signatureField, appearance);Certificat de gestion
PdfCertificate Carte des certificats de fichiers PFX ou des ficher codés par DER.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");Crédit de certificat
CertificateEncryptionOptions Encrypter un PDF pour ne pas avoir de certificat spécifié Les propriétaires peuvent l’ouvrir.
var options = new CertificateEncryptionOptions(cert);Travailleurs de sécurité personnalisés
Implémentation ICustomSecurityHandler Pour la logique de cryptage et de décryption personnalisée.
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; }
}Informations algorithmiques de signature
SignatureAlgorithmInfo Il décrit l’algorithme utilisé dans une signature existante.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());Conseils et meilleures pratiques
- Toujours signer les documents comme la dernière étape - toute modification après la signature annule la firme.
- Utilisez des fichiers PFX avec de fortes mots de passe pour le stockage du certificat.
- Vérifiez les signatures après avoir chargé un document pour détecter la tampering.
- La cryptage basée sur le certificat nécessite un certificate public clé du destinataire.
- Implémentation
ICustomSecurityHandlerSeulement lorsque le cryptage standard est insuffisant.
Les problèmes communs
| Problème | Cause | Fixé |
|---|---|---|
| La signature est invalide | Modification après la signature | Re-signation après que toutes les modifications sont complètes |
| Le chargement de PFX échoue | Password incorrect ou fichier corrompu | Vérifier le mot de passe et l’intégrité du fichier |
| Le cryptage empêche l’ouverture | Password de propriétaire non fourni | Utilisez le bon propriétaire ou mot de passe utilisateur |
FAQ
Quels algorithmes de signature sont soutenus ?
RSA avec SHA-256, S HA-384, et SHO-512 sont généralement soutenus. les algorithmes disponibles dépendent du type clé du certificat.
Puis-je ajouter plusieurs signatures ?
Oui. Chaque signature est appliquée à un champ de signatures distinct dans le document.
La signature nécessite-t-elle un certificat commercial ?
Non. Les certificats auto-signés travaillent pour les tests. Pour la production, utilisez un certificat d’une CA confiée.
Le résumé de référence API
| Classes / Méthodes | Description |
|---|---|
PdfSigner | Signature et vérification des documents PDF |
PdfSigner.Sign | Appliquer une signature numérique |
PdfSigner.Verify | Vérifier la validité de la signature |
PdfSigner.SignWithAppearance | Signature avec un champ de signature visuelle |
PdfCertificate | Carrier de certificat pour les formats PFX et DER |
PdfCertificate.FromPfx | Télécharger un fichier PFX avec mot de passe |
PdfCertificate.FromDerFiles | Réserver des fichiers codés |
CertificateEncryptionOptions | Crédit de certificat PDF |
ICustomSecurityHandler | Interface pour la cryptage / décryption personnalisée |
EncryptionParameters | Paramètres passés à des opérateurs de sécurité personnalisés |
SignatureAlgorithmInfo | Les méta-détails sur l’algorithme d’une signature |