PDF Certificate Signing: X.509, Trust Chains, and Building a Signing Workflow
Certificate-based PDF signing uses X.509 public-key infrastructure to bind a document to a verified identity. This guide covers certificate types (self-signed vs CA-issued), trust chain validation, timestamp authorities, long-term validation (LTV), and how to set up a signing workflow using Adobe Acrobat, pyHanko, and iText.
Frequently asked questions
What is the difference between a certification signature and an approval signature in PDF?
A certification signature (created with /DocMDP — Document Modification Detection and Prevention) is a special "first signature" that specifies what changes are permitted after the document is certified. The author certifies the document's original state and declares: no changes permitted; form fields may be filled; or annotations and form fields may be added. Any subsequent change beyond the declared permission level invalidates the certification. An approval signature is a standard signature added to a document (possibly after certification) that approves the document's content at a specific point in time. Multiple approval signatories can sign the same document sequentially. The signature field panel in Acrobat shows each signer separately. A certification signature appears first and with a special blue ribbon icon in Acrobat's signature panel.
Why does a PDF signature show "Signature validity unknown" even though the document hasn't been changed?
"Signature validity unknown" typically means the verifier cannot establish trust for the signer's certificate — not that the document has been modified. Common causes: (1) Self-signed certificate — the verifier hasn't been told to trust it; import the certificate into your trust store. (2) Intermediate CA certificate not included in the signature — the verifier can't complete the trust chain; the signer should include the full chain in the signature. (3) Certificate from an authority not in the verifier's trust store — enterprise or national trust anchors not in the default Adobe/OS trust store. (4) Revocation checking failed — OCSP/CRL servers unreachable; the verifier defaults to "unknown" when it can't confirm revocation status. The blue ribbon in Acrobat means "trusted certificate"; the yellow triangle means "unknown trust"; the red X means "invalid" (document modified or certificate cryptographically broken).
How do I add a visual signature appearance to a PDF certificate signature?
A certificate-based PDF signature is primarily a cryptographic operation — the visual appearance is optional and separate from the signature validity. The visual appearance is an /AP (appearance stream) on the signature widget annotation. In Acrobat Pro, you can define a signature appearance including a graphical image, name, date, and reason. In pyHanko, use StampStyle or SimpleSigner with an appearance configuration. In iText, use PdfSignatureAppearance to define font, image, and layout. Importantly: the visual appearance is cosmetic. A signature that is visually impressive but uses a self-signed certificate untrusted by the recipient is no more legally binding than no signature at all. Conversely, an invisible signature with a properly validated certificate from a trusted CA is cryptographically and legally valid without any visual element.
Try it yourself
Everything in this article can be done directly in the free PDFTheGuide editor — no account required.