Seguridad y firmas
Seguridad y firmas
Aspose.PDF FOSS for .NET admite firmas digitales PDF, cifrado basado en certificados y controladores de seguridad personalizados. Use PdfSigner para flujos de trabajo de firma y PdfCertificate para la gestión de certificados.
Firmar un documento
PdfSigner aplica una firma digital a un PDF usando un certificado PFX.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");Verificando firmas
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");Firma con una apariencia visual
signer.SignWithAppearance(doc, cert, signatureField, appearance);Gestión de certificados
PdfCertificate carga certificados desde archivos PFX o archivos codificados en DER.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");Cifrado basado en certificado
CertificateEncryptionOptions cifra un PDF para que solo los titulares del certificado especificado puedan abrirlo.
var options = new CertificateEncryptionOptions(cert);Controladores de seguridad personalizados
Implementar ICustomSecurityHandler para lógica de cifrado y descifrado personalizada.
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; }
}Información del algoritmo de firma
SignatureAlgorithmInfo describe el algoritmo utilizado en una firma existente.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());Consejos y Mejores Prácticas
- Siempre firme los documentos como el paso final — cualquier modificación después de firmar invalida la firma.
- Use archivos PFX con contraseñas fuertes para el almacenamiento de certificados.
- Verifique las firmas después de cargar un documento para detectar manipulaciones.
- El cifrado basado en certificados requiere el certificado de clave pública del destinatario.
- Implemente
ICustomSecurityHandlersolo cuando el cifrado estándar sea insuficiente.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| La firma se muestra como inválida | Documento modificado después de la firma | Vuelva a firmar después de que se completen todas las modificaciones |
| La carga del PFX falla | Contraseña incorrecta o archivo corrupto | Verifique la contraseña y la integridad del archivo |
| El cifrado impide la apertura | No se proporcionó la contraseña del propietario | Utilice la contraseña correcta del propietario o del usuario |
Preguntas frecuentes
¿Qué algoritmos de firma son compatibles?
RSA con SHA-256, SHA-384 y SHA-512 son comúnmente compatibles. Los algoritmos disponibles dependen del tipo de clave del certificado.
¿Puedo agregar varias firmas?
Sí. Cada firma se aplica a un campo de firma separado en el documento.
¿Requiere la firma un certificado comercial?
No. Los certificados autofirmados funcionan para pruebas. Para producción, use un
certificado de una CA de confianza.
Resumen de la referencia API
| Class / Method | Description |
|---|---|
PdfSigner | Firmar y verificar documentos PDF |
PdfSigner.Sign | Aplicar una firma digital |
PdfSigner.Verify | Comprobar la validez de la firma |
PdfSigner.SignWithAppearance | Firmar con un campo de firma visual |
PdfCertificate | Cargador de certificados para formatos PFX y DER |
PdfCertificate.FromPfx | Cargar desde un archivo PFX con contraseña |
PdfCertificate.FromDerFiles | Cargar desde archivos codificados en DER |
CertificateEncryptionOptions | Cifrado PDF basado en certificado |
ICustomSecurityHandler | Interfaz para cifrado/descifrado personalizado |
EncryptionParameters | Parámetros pasados a manejadores de seguridad personalizados |
SignatureAlgorithmInfo | Metadatos sobre el algoritmo de una firma |