SUPPORT

Un problème de certificat ? Besoin d'être dépanné rapidement ? Nos ingénieurs répondent à vos questions.

0 897 690 444 Service 0,80 €/min +prix appel
Menu
picture of tbs certificates
picture of tbs certificates
Les produits
Notre gamme
Partenaires
Support
Numéro vert
Focus


Outil de signature TBSSignaturePDF

Généralités

Il s'agit d'un utilitaire, en ligne de commande, qui permet, comme son nom l'indique, de modifier un document PDF en lui rajoutant une signature. Doté d'une grande facilité d'utilisation, cet utilitaire ne nécessite aucune installation : il suffit de le télécharger et de le copier dans le répertoire à partir duquel on veut l'exécuter.

La commande de lancement est de la forme :

java -jar TBSSignaturePDF.jar -in xxx -pkcs12 xxx -passwd xxx

De plus cet outil dispose d'options facultatives qui vous permettront, entre autres, d'horodater vos documents PDF. L'horodatage permet d'associer de manière sûre une heure à votre document afin d'établir de manière fiable l'heure à laquelle le document a été réalisé.

L'outil est utilisable sous Windows et sous Linux. Il a été développé sous un environnement Java 1.6.

Paramètres

L'utilitaire prend en arguments plusieurs paramètres regroupés en deux grandes catégories :

Paramètres obligatoires :

-in fichierPDF -pkcs12 fichierpkcs12 -passwd motdepasse -alias nom-du-cert

Paramètres facultatifs :

-out fichierPDFsigné -mode PPK* -reason motif -location localisation -visibleSignature -visibleSignllx 50 -visibleSignllx 75 -visibleSignurx 100 -visibleSignury 100 -visibleSignNumPage 5 -tsaHost http://url.com/tsa -tsaLogin login -tsaPasswd passWord -proxyHost host -proxyPort port -proxyLogin login -proxyPasswd passwd

Détails paramètres

-in fichierPDF : fichier à signer
-pkcs12 : fichier pkcs12 (de format .p12 ou .pfx)
-passwd : mot de passe du fichier pkcs12
-out fichierPDFsigné : fichier de destination. Par défaut : signed.pdf
-mode PPK* : modes PPKMS, PPKVS, PPKLite. Par défaut : PPKMS
-reason motif : motif signature. Exemple : document validé
-location localisation : Localisation de l'entité. Exemple : CAEN (France)
-visibleSignature : affichage de la signature de manière visible sur le document
-visibleSignllx : coordonnée x du coin inférieur gauche de la signature (par défaut 100)
-visibleSignlly : coordonne y du coin inférieur gauche de la signature (par défaut 100)
-visibleSignurx : coordonnée x du coin supérieur droit de la signature (par défaut 200)
-visibleSignury : coordonnée y du coin supérieur droit de la signature (par défaut 200)
-visibleSignNumPage : numéro de la page sur laquelle la signature sera affichée (par défaut 1)
-alias : spécification d'un alias de certificat contenu dans le keystore à utiliser
-tsaHost: adresse d'une autorité d'horodatage
-tsaLogin : login de connexion à l'autorité d'horodatage
-tsaPasswd : mot de passe de connexion à l'autorité d'horodatage
-proxyHost host : Permet de spécifier l'adresse du proxy
-proxyPort port : Permet de spécifier le port du proxy
-proxyLogin login : Permet de spécifier le login à utiliser sur le proxy (si besoin est)
-proxyPasswd passwd : Permet de spécifier le mot de passe à utiliser sur le proxy (si besoin est)

Horodatage

Pourquoi horodater votre document PDF ? L'horodatage permet d'associer une heure de création fiable à votre document. L'horodatage est réalisé par un serveur externe considéré comme étant "de confiance".

Le principe est le même que le cachet de la poste sur une lettre recommandée, on considère la date indiquée sur ce cachet comme étant la véritable date d'envoi.

Comme nous venons de l'expliquer vous devez passer par un serveur externe. Nos certificats peuvent utiliser le serveur de signature de Comodo : http://timestamp.comodoca.com/rfc3161.

Peut être utilisez-vous un proxy ? Si c'est le cas les requêtes d'horodatages ne pourront pas être envoyées. Pour résoudre ce problème vous devrez indiquer les paramètres du proxy grâce aux différents paramètres "-proxyHost", "-proxyLogin", "-proxyPasswd".

Certificat de signature

Le fichier pkcs12 utilisé par l'application est un "magasin de certificats" ou "keystore".

Qu'est ce qu'un magasin de certificats ?

C'est un fichier qui contient plusieurs certificats. Pour pouvoir les différencier nous utilisons un "alias". Un alias est une chaîne d'identification unique dans le magasin. Pour que l'application de signature de PDF sache quel certificat utiliser dans le magasin il faut donc spécifier l'alias qui correspond au bon certificat de signature. Si nous ne spécifions pas d'alias l'application prendra le premier contenu dans le magasin.

Comment trouver l'alias du certificat à utiliser ?

Nous allons utiliser l'outil java Keytool. Lancez la commande qui suit dans un terminal :

keytool -storetype pkcs12 -v -list -keystore "/chemin/acces/keystore.p12" | grep "Nom d"

En indiquant le chemin d'accès à votre magasin de certificats (à la place de "/chemin/acces/keystore.p12").

Le résultat que vous devez obtenir est :

Nom d'alias : cert1

Dans ce cas nous allons utiliser l'outil de signature de pdf avec l'argument -alias cert1.

Exemples

Signature du document PDF mondoc.pdf avec le certificat clef1 contenu dans le magasin maclef.pfx

java -jar TBSSignaturePDF.jar -in mondoc.pdf -pkcs12 macle.pfx -passwd maclepwd -alias clef1

Signature du document PDF mondoc.pdf en spécifiant le nom d'un fichier de destination

java -jar TBSSignaturePDF.jar -in mondoc.pdf -pkcs12 macle.pfx -passwd maclepwd -out mondoc_signed.pdf

Remarque : pour les noms de fichiers, veillez à spécifier les chemins absolus.

Signature du document PDF mondoc.pdf avec horodatage grâce au serveur http://timestamp.comodoca.com/rfc3161

java -jar TBSSignaturePDF.jar -in mondoc.pdf -pkcs12 macle.pfx -passwd maclepwd -alias clef1 -tsaHost http://timestamp.comodoca.com/rfc3161

Signature du document PDF mondoc.pdf avec horodatage grâce au serveur http://timestamp.comodoca.com/rfc3161 nécessitant une identification par login/mot de passe

java -jar TBSSignaturePDF.jar -in mondoc.pdf -pkcs12 macle.pfx -passwd maclepwd -alias clef1 -tsaHost http://timestamp.comodoca.com/rfc3161 -tsaLogin user1 -tsaPasswd s3cret

Signature du document PDF mondoc.pdf avec horodatage grâce au serveur http://timestamp.comodoca.com/rfc3161 et en passant un proxy avec identification

java -jar TBSSignaturePDF.jar -in mondoc.pdf -pkcs12 macle.pfx -passwd maclepwd -alias clef1 -tsaHost http://timestamp.comodoca.com/rfc3161 -proxyHost 192.168.20.02 -proxyLogin userProxy -proxyPasswd passProxy

Problèmes

Si vous rencontrez une erreur de ce type :

java.io.IOException: exception unwrapping private key - java.security.InvalidKeyException: Illegal key size ...

due à une utilisation d'une clef trop grande (> 1024 bits), voici comment corriger le problème :

  • Consultez le site d'Oracle pour récupérer le JCE Unlimited Strength Jurisdiction Policy Files.
  • Décompressez l'archive qui vient d'être télécharger.
  • Placez les fichiers "local_policy.jar" et "US_export_policy.jar" dans le dossier lib/security de votre répertoire d'installation Java.

Ce procédé permet de supprimer les restrictions de tailles de clefs maximales autorisées par Java. Vous pourrez dès à présent utiliser vos clefs ayant une taille > 1024 bits.

Sur MacOS Lion et supérieur

Installer JAVA sur MAC OS : http://java.com/fr/download/mac_download.jsp?locale=fr

Télécharger "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7" :
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

Sur la plupart des postes utilisateurs java s'installe comme un plug-in Internet dans le dossier suivant :
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

Ainsi, les fichiers "local_policy.jar" et "US_export_policy.jar" doivent être copiés dans :
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security

et pour executer en ligne de commande vous pourrez alors utiliser la commande JAVA située ici :
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java

Crédits

Nos remerciements vont, entre autres, à Bruno Lowagie et Paulo Soares pour toutes les classes qu'ils ont mis à disposition du public sous licence GPL et qui ont facilité le développement de notre outil.

Script complémentaire

Pour faciliter l'usage courant de l'utilitaire, nous vous proposons un petit script bash qui permet de stocker les paramètres par défaut, et vous évite de saisir le mot de passe sur la ligne de commande (pour que l'historique ne la stocke pas).

Usage: pdf-signe.sh nom-du-pdf.pdf ["motif de la signature"]

Il suffit de télécharger le programme et de modifier les 13 variables du début pour s'adapter à votre environnement.

Exemple d'utilisation :

$ pdf-signe 20070119_tarifs_tbs-certificats.pdf "tarifs approuvés"

/cert/20100120-staff-tag.pfx
Mot de passe du certificat ci-dessus ?
----------------------------------------------------------
Bienvenue dans le programme de Signature de documents PDF

Vous voulez signer le document 20070119_tarifs_tbs-certificats.pdf.nosig
avec le certificat /cert/20100120-staff-tag.pfx d'alias cert1 en utilisant le mode PPKMS
Vous voulez horodater le document avec le serveur : http://timestamp.comodoca.com/rfc3161
Raison : tarifs approuvés
Localisation : TBS INTERNET - Caen

Etape 1 : Chargement du KeyStore et de la clé.
KeyStore OK
Clé privée OK
Etape 2 : Gestion des fichiers.
Fichiers OK
Etape 3 : Apposition de la signature + du jeton d'horodatage.

Le programme de signature de documents PDF s'est déroulé avec succès.
Le pdf signé se trouve ici : 20070119_tarifs_tbs-certificats.pdf