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 ICustomSecurityHandler solo cuando el cifrado estándar sea insuficiente.

Problemas comunes

ProblemaCausaSolución
La firma se muestra como inválidaDocumento modificado después de la firmaVuelva a firmar después de que se completen todas las modificaciones
La carga del PFX fallaContraseña incorrecta o archivo corruptoVerifique la contraseña y la integridad del archivo
El cifrado impide la aperturaNo se proporcionó la contraseña del propietarioUtilice 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 / MethodDescription
PdfSignerFirmar y verificar documentos PDF
PdfSigner.SignAplicar una firma digital
PdfSigner.VerifyComprobar la validez de la firma
PdfSigner.SignWithAppearanceFirmar con un campo de firma visual
PdfCertificateCargador de certificados para formatos PFX y DER
PdfCertificate.FromPfxCargar desde un archivo PFX con contraseña
PdfCertificate.FromDerFilesCargar desde archivos codificados en DER
CertificateEncryptionOptionsCifrado PDF basado en certificado
ICustomSecurityHandlerInterfaz para cifrado/descifrado personalizado
EncryptionParametersParámetros pasados a manejadores de seguridad personalizados
SignatureAlgorithmInfoMetadatos sobre el algoritmo de una firma

Ver también

 Español