Signature électronique

Module de signature PDF

Installation

Conseil

Le module de signature électronique est disponible à partir de la version 6.11.4 de Workey.

Ce composant s’appuie sur les bibliothèques de cryptographie Bouncy Castle. Celles-ci doivent être installées dans le JRE ($JAVA_HOME/jre/lib/ext/) et déclarées dans le fichier $JAVA_HOME/jre/lib/security/java.security en ajoutant une ligne :

security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider

Libersign et extensions

Afin de pouvoir effectuer la signature qualifiée avec le certificat de l’utilisateur, il est impératif d’installer au préalable l’application Libersign, ainsi que l’extension appropriée au navigateur utilisé.

Application Libersign

Extensions navigateurs

Information

Sur Windows 10, l’application Libsergin est installée dans le répertoire “%LOCALAPPDATA%\Libersign“. Il contient un exécutable JRE ainsi que l’applet dans “%LOCALAPPDATA%\LiberSign\applet\SplittedSignatureApplet.jar“.

Signature simple – cachet serveur

Connecteur com.clog.workey.connectors.parapheur.SignaturePDF

Configuration du connecteur

Ce connecteur nécessite qu’un fichier keystore contenant la clé à utiliser soit présent sur le serveur. Plusieurs propriétés doivent être configurées:

  • com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_FILE : Emplacement du fichier keystore à utiliser (obligatoire)
  • com.clog.workey.connectors.parapheur.SignaturePDF.ALIAS : Alias présent ans le keystore à utiliser pour la signature (obligatoire)
  • com.clog.workey.connectors.parapheur.SignaturePDF.PASSWORD : Mot de passe de l’alias (obligatoire)
  • com.clog.workey.connectors.parapheur.SignaturePDF.HASH_ALGORITHM : Algorithme de hash à utiliser (“SHA-1” par défaut)
  • com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_TYPE : Type du keystore (“PKCS12” par défaut)
  • com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_PROVIDER : Type du fournisseur de keystore

par exemple:

com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_FILE=/chemin/vers/un/fichier/test_store
com.clog.workey.connectors.parapheur.SignaturePDF.ALIAS=Workey Parapheur
com.clog.workey.connectors.parapheur.SignaturePDF.PASSWORD=XXXXXXXXXXXXX
com.clog.workey.connectors.parapheur.SignaturePDF.HASH_ALGORITHM=SHA1
com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_TYPE=pkcs12
#com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_PROVIDER=
com.clog.workey.connectors.parapheur.SignaturePDF.image=/chemin/vers/une/image.png

En entrée

  1. Le champ PJ contenant les PDF à signer
  2. Un objet JSON précisant les options de signature (toutes les propriétés sont optionnelles):
PropriétéDescription
nameNom du signataire.
locationEndroit (ou nom du serveur) où s’effectue la signature.
reasonObjet de la signature.
tsaURL vers un serveur TSA.
indexSi le PDF doit être signé par plusieurs personnes et que les signatures sont visibles, ce champ doit indiquer l’index de la signature en cours (démarre à 0).
invisibleBooléen indiquant si la signature doit être invisible.
boxObjet JSON décrivant le rectangle de signature visible
signaturePageEntier indiquant le numéro de page de la signature (-1 pour la dernière page, 0 pour créer une nouvelle page à la fin du document).
templateStringModèle du libellé de signature, les balises “{{DN}}” et “{{DATE}}” sont remplacés par l’identité du signataire et la date de signature, respectivement
dateFormatFormat de la date à utiliser pour le modèle ci-dessus

Propriétés JSON de configuration de signature électronique

PropriétéDescription
columnsNombre de colonnes de tampons de signature par page (par défaut: 3).
startXCoordonnée horizontale de départ du premier rectangle (par défaut: 50).
startYCoordonnée verticale de départ du premier rectangle (par défaut: 50).
widthLargeur du rectangle de signature (par défaut: 150).
widthMarginMarge horizontale entre deux rectangles de signature (par défaut: 20).
heightHauteur du rectangle de signature (par défaut: 50).
heightMarginMarge verticale entre deux rectangles de signature (par défaut: 20).
backgroundColorCode hexadécimal de la couleur de fond du rectangle de signature (par défaut: “#fafafa“).

Propriétés JSON du rectangle de signature

Utilisation des propriétés du rectangle de signature

Image de fond

Il est également possible de configurer une image à afficher comme fond du rectangle. Pour cela, il faut renseigner la propriété système suivante avec le chemin vers le fichier image à inclure: com.clog.workey.connectors.parapheur.SignaturePDF.image

Voici un exemple de champ de configuration de signature électronique :

{
  "invisible": false,
  "box": { 
    "columns": 2,
    "width": 200,
    "height": 75,
  },
  "signaturePage": -1,
  "templateString": "Signed By: {{DN}}\nOn: {{DATE}}",
  "dateFormat": "yyyy-MM-dd HH:mm:ss z"
}

En sortie

  1. (aucun) Le contenu des pièces-jointes signées est mis à jour

Signature qualifiée

La signature qualifiée dans le module de parapheur Workey se déroule en deux étapes : la préparation et la signature proprement dite. Cette séparation permet de signer les documents sans avoir à les transférer en intégralité sur le poste client.

Étape 1 – Préparation des fichiers PDF à signer

Le connecteur com.clog.workey.connectors.parapheur.PreparePDFSignature permet de préparer des fichiers PDF à être signés par signature qualifiée.

Attention

Il est important qu’une fois ce connecteur exécuté, les pièces-jointes concernées ne doivent pas être modifiées. Cela rendrait la future signature invalide.

En entrée

  • Champ de type pièce-jointe. Peut être un champ multivalué.
  • (optionnel) Configuration JSON de la signature, du même type que la signature qualifiée. Par exemple :
{
  "name": "Jean Dupont",
  "reason": "Signature contrat de travail",
  "location": "Bayonne, France",
  "tsa": "http://tsa-provider/rfc3161"
}

En sortie

  • JSON contenant la liste des UUID et leur digest respectif. Par exemple :
[
  { "uuid": "uuid_1", "digest": "digest_1" },
  { "uuid": "uuid_2", "digest": "digest_2" }, 
  ... 
]

Script formulaire

Dans la version actuelle du module de parapheur, il est nécessaire de configurer un fichier JavaScript spécifique à chaque formulaire devant recevoir une signature qualifiée.

Ce script doit être placé à l’endroit suivant: $TOMCAT_HOME/workey/custom-js/{NOM_DU_PROCESSUS}/{NOM_DU_DOCUMENT}/{NOM_DU_FORMULAIRE}/form.js

Dans les premières lignes, il faut modifier les deux variables suivantes pour qu’elle correspondent à

$Workey$digestField = 'JSON_Signature';
$Workey$libersignField = 'Libersign';

Étape 2 – Signature des fichiers PDF

Le connecteur com.clog.workey.connectors.parapheur.AddSignature permet d’insérer la signature effectuée par Libersign dans le document PDF préalablement préparé.

En entrée

  1. Champ JSON comportant les données de signature. C’est celui qui est en sortie de l’étape 1.
  2. (optionnel) Configuration JSON de la signature, du même type que la signature qualifiée.

En sortie

  • (Aucun) Le contenu des pièces-jointes signées est mis à jour.