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
ICustomSecurityHandlerapenas quando a encriptação padrão for insuficiente.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
| A assinatura mostra-se inválida . | Documento alterado após a assinatura | Re-assinar depois de todas as modificações serem completadas. |
| Falha de carregamento PFX | Senha errada ou arquivo corrompido . | Verificar a senha e integridade do arquivo |
| A encriptação impede a abertura. | Senha do proprietário não fornecida | Use 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étodo | Descrição: |
|---|---|
PdfSigner | Assina e verifica documentos PDF |
PdfSigner.Sign | Aplicar uma assinatura digital |
PdfSigner.Verify | Verificar a validade da assinatura |
PdfSigner.SignWithAppearance | Signo com um campo de assinatura visual |
PdfCertificate | Carregador de certificados para formatos PFX e DER |
PdfCertificate.FromPfx | Carregar a partir de um arquivo PFX com senha |
PdfCertificate.FromDerFiles | Carga de arquivos codificados por DER |
CertificateEncryptionOptions | Criptografia PDF baseada em certificado |
ICustomSecurityHandler | Interfaces para criptografia/descriptorização personalizada |
EncryptionParameters | Parâmetros passados aos gestores de segurança personalizados |
SignatureAlgorithmInfo | Metadados sobre o algoritmo de uma assinatura |