Table de Matieres
I. Présentation
Dans ce tutoriel, nous allons voir comment signer numériquement un fichier PDF avec la boite à outils Stirling PDF. Cette signature sera réalisée à partir d’un certificat.
Habituellement (pour les profanes surtout), certains filigranes sont utilisés pour attester de l’authenticité ou la fiabilité d’un document. À titre de rappel, c’est l’une des propriétés de sécurité (à côté de celles l’intégrité et de la confidentialité) permettant de démontrer que l’interlocuteur qu’on a en face de nous est effectivement celui qu’il prétend être.
Mais, aujourd’hui, presque tout le monde peut insérer un filigrane dans un document et de ce fait usurper une identité tierce. Une des techniques le plus avancées pour garantir la propriété d’authenticité d’un document est l’utilisation d’un certificat numérique (équivalent d’une carte d’identité dans le monde réel) afin de signer le document PDF.
La bonne pratique consiste à se rapprocher d’une autorité de certification reconnue ou d’un tiers de confiance pour obtenir un certificat numérique (à moins que vous soyez une des deux entités précédemment citées) lorsqu’on évolue dans un environnement de production. Ceci permet au certificat d’être reconnu et vérifiable par les destinataires de vos documents PDF.
Cependant, pour les besoins de ce tutoriel, on utilisera un certificat auto-signé pour authentifier un fichier PDF et on le fera avec Stirling PDF. Il s’agit d’une solution alternative qui n’implique aucuns frais, mais qui présente un inconvénient majeur : bien que la signature soit visible, elle ne pourra pas être vérifiée à cause de la provenance du certificat.
À partir du moment où vous avez un certificat en votre possession, et peu importe sa provenance, vous pourrez signer un document dans Stirling PDF de la même façon.
Vous pouvez retrouver une des procédures d’installation de Stirling PDF à travers le lien ci-dessous :
Voici également le lien de ce projet :
II. Générer un certificat auto-signé avec PowerShell
Une fois Stirling PDF installé, on va d’abord générer un certificat numérique et une clé privée. Il existe plusieurs outils pour parvenir à cette fin. Ici, nous utiliserons PowerShell pour la tâche. Un certificat auto-signé sans préciser, sa période de validité, est par défaut valide sur un an à partir de sa date de création, l’heure et la date du PC à partir duquel il est généré étant utilisés comme références.
Ainsi, on commence par créer le certificat comme suit :
# Nom du certificat
$certname = "MeisterCert"
#Création du certificat
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Quelques explications s’imposent avant de continuer :
- La variable « $certname » contient le nom du certificat (ici « MeisterCert »).
- La variable « $cert » est utilisée ici pour contenir l’ensemble des cmdlets et paramètres relatifs à la création du certificat. On a entre autres :
- NewSelfSignedCertificate sert à dire ici qu’on veut créer un nouveau certificat auto-signé.
- –Subject sert à indiquer le nom du signataire du certificat
- –CertStoreLocation sert à définir le magasin de stockage du certificat ainsi que son propriétaire (visible dans « certmgr» dans la console mmc de Windows) à savoir celui avec lequel on est actuellement connecté à Windows
- –KeyExportPolicy sert à définir la politique d’exportation des clés
- –KeySpec définit l’utilisation future de la clé privée, à savoir la signature de fichiers
- –KeyLength, ici la longueur des clés de chiffrement (2048 bits)
- –KeyAlgorithm, ici l’algorithme de cryptographie asymétrique pour la signature, à savoir RSA
- –HashAlgorithm ici la fonction de hash utilisée pour le calcul d’empreinte, à savoir SHA256
Puis, on exporte le certificat depuis son magasin vers un dossier spécifique où on pourra facilement le récupérer au besoin avec « Export-Certificate ».
# On exporte le certificat vers le dossier « Certificats » à la racine du « C : »
Export-Certificate -Cert $cert -FilePath "C:\Certificats\$certname.cer"
On crée ensuite la variable « $password » dans laquelle on met le mot de passe à utiliser pour exporter le certificat au format PKCS12 (extension .pfx). Une fois fait, on lance l’exportation avec « Export-PfxCertificate » en faisant appel aux variables « $cert », « $certname » et « $password ». Ici, le mot de passe est « 123456 », mais bien entendu, définissez un mot de passe robuste.
# Mot de passe chiffrement PKCS12
$password = ConvertTo-SecureString -String "123456" -Force -AsPlainText
# Chiffrement PKCS12
Export-PfxCertificate -Cert $cert -FilePath "C:\Certificats\$certname.pfx" -Password $password
Et, si on va vérifier le contenu du dossier « Certificats » on doit pouvoir retrouver nos deux certificats, à savoir « MeisterCert.cer » et « MeisterCert.pfx ».
On peut d’ailleurs vérifier qu’il s’agit du bon certificat en l’ouvrant.
III. Signature d’un PDF
Une fois le certificat obtenu, on se rend sur Stirling PDF, puis sur « Outils » et on sélectionne « Signer avec un certificat ».
On arrive enfin sur la page de signature. D’abord on va récupérer le fichier à signer depuis son emplacement (ici « Fichier_Test.pdf ») en cliquant sur « Parcourir », puis on choisit le type de certificat (vu qu’on peut y insérer trois types différents) à savoir « PKCS12 ».
Ensuite, on va récupérer le certificat (« MeisterCert.pfx ») depuis son dossier. On insère le mot de passe utilisé pour protéger le certificat et on insère quelques informations relatives au signataire (raison, emplacement, nom). Puis, on spécifie le nombre de pages du document sur lesquelles on souhaite appliquer la signature (cette dernière s’appliquera par défaut sur l’ensemble des pages au si on ne spécifie rien) et on valide enfin en cliquant sur le bouton « Signer ».
Le fichier signé ainsi généré est renommé en « Fichier_Test_signed.pdf » comme pour dire qu’il porte désormais une signature numérique, et il est ensuite téléchargé dans le dossier de téléchargement par défaut définit dans le navigateur.
IV. Vérification du PDF signé
Une fois le fichier signé généré, on peut aller vérifier sa signature en l’ouvrant directement à l’aide d’un éditeur PDF (« Adobe Acrobat Reader », par exemple) et on peut directement observer une banderole au-dessus de ce dernier où il est écrit « Signé au moyen de signatures valables ».
Et, si on clique sur « Panneau Signatures » en haut à droite, on peut obtenir quelques informations sur le signataire du document (surtout celles rentrées avant de générer le fichier signé). On peut même aller plus loin en allant cliquer sur « Détails du certificat » pour obtenir un peu plus d’informations sur ce dernier (notamment sa clé publique qu’on pourra aller vérifier chez son autorité de certification).
Si le document PDF est consulté à partir d’une machine qui ne dispose pas du certificat, la signature remonte « en erreur ». Néanmoins, elle est toujours présente et nous pouvons consulter ses détails comme le montre l’image ci-dessous.
V. Conclusion
Suite à la lecture de ce tutoriel, vous devrez désormais être capables de signer un document PDF avec Stirling PDF ! Vous devriez aussi est en mesure de vérifier l’authenticité d’un document PDF que vous recevrez à l’avenir à travers sa signature numérique ainsi que son certificat.