Segurança e assinaturas

Segurança e assinaturas

Segurança e assinaturas

Aspose.PDF FOSS for .NET supports PDF digital signatures, certificate-based criptografia e manipuladores de segurança personalizados. PdfSigner para assinatura fluxos de trabalho e PdfCertificate para a gestão dos certificados.


Assinar um documento

PdfSigner Aplica uma assinatura digital a um PDF utilizando um certificado PFX.

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

Verificação de assinaturas

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

Assinatura com aparência visual

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

Gestão dos certificados

PdfCertificate Carregar certificados a partir de ficheiros PFX ou ficheiro codificado por DER.

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

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

Criptografia baseada em certificado

CertificateEncryptionOptions Criptografa um PDF para apenas o certificado especificado Os detentores podem abri-la.

var options = new CertificateEncryptionOptions(cert);

Tratadores de segurança personalizados

Implementação ICustomSecurityHandler para a lógica de encriptação e decodificação 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; }
}

Informações sobre o algoritmo de assinatura

SignatureAlgorithmInfo Descreve o algoritmo utilizado numa assinatura existente.

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

Dicas e melhores práticas

  • Assinar sempre os documentos como a última etapa qualquer alteração após a assinatura invalida a firma.
  • Use arquivos PFX com senhas fortes para armazenamento de certificados.
  • Verificar as assinaturas após o carregamento de um documento para detectar a manipulação.
  • A criptografia baseada em certificado requer o certificado de chave pública do destinatário.
  • Implementação ICustomSecurityHandler apenas quando a encriptação padrão for insuficiente.

Problemas comuns

EmissãoCausa da morteCorreção
A assinatura mostra-se inválida .Documento alterado após a assinaturaRe-assinar depois de todas as modificações serem completadas.
Falha de carregamento PFXSenha errada ou arquivo corrompido .Verificar a senha e integridade do arquivo
A encriptação impede a abertura.Senha do proprietário não fornecidaUse a senha do proprietário ou usuário correta

FAQ

Que algoritmos de assinatura são suportados?

O RSA com SHA-256, Sha-384 e Shaa-512 são geralmente suportados. Os algoritmos disponíveis dependem do tipo de chave do certificado.

Posso adicionar várias assinaturas?

Sim, cada assinatura é aplicada a um campo de assinaturas separado no documento.

A assinatura requer um certificado comercial?

Não, os certificados autônomos funcionam para testes. Para produção, use um certificado de uma CA confiável.


Resumo de referência da API

Classe / MétodoDescrição:
PdfSignerAssina e verifica documentos PDF
PdfSigner.SignAplicar uma assinatura digital
PdfSigner.VerifyVerificar a validade da assinatura
PdfSigner.SignWithAppearanceSigno com um campo de assinatura visual
PdfCertificateCarregador de certificados para formatos PFX e DER
PdfCertificate.FromPfxCarregar a partir de um arquivo PFX com senha
PdfCertificate.FromDerFilesCarga de arquivos codificados por DER
CertificateEncryptionOptionsCriptografia PDF baseada em certificado
ICustomSecurityHandlerInterfaces para criptografia/descriptorização personalizada
EncryptionParametersParâmetros passados aos gestores de segurança personalizados
SignatureAlgorithmInfoMetadados sobre o algoritmo de uma assinatura

Ver também:

 Português