Esup-Signature

Arborescence des pages


Système d'information


Pour un fonctionnement optimal vous devez disposer au sein de votre système d'information :

  • d'un serveur CAS et/ou IDP Shibboleth
  • d'un LDAP SUPANN
  • d'un serveur smtp


Toutes les opérations qui suivent pour installer les prérequis sont effectuées en root

 


Java


Version de java minimale : Java OpenJdk 17

Exemple d'installation à l'aide du paquet de la distribution debian (selon version)

sudo apt install openjdk-17-jre


Vérification

java -version  
openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment (build 17.0.7+7-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 17.0.7+7-Debian-1deb11u1, mixed mode, sharing)

 


Maven


Exemple d'installation à l'aide du paquet de la distribution debian

sudo apt install maven

Exemple d'installation sous Debian si la version est trop ancienne

sudo -i
mkdir /opt/tools
cd /opt/tools
wget http://apache.crihan.fr/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xvf apache-maven-3.6.3-bin.tar.gz
ln -s /opt/tools/apache-maven-3.6.3 /opt/maven
nano /etc/profile.d/maven.sh

/* Coller 
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}

chmod +x /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh

Vérification (exemple sur une debian 12) : 

mvn -version

Apache Maven 3.8.7
Maven home: /usr/share/maven
Java version: 17.0.7, vendor: Debian, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: fr_FR, platform encoding: UTF-8
OS name: "linux", version: "6.1.0-9-amd64", arch: "amd64", family: "unix"

Pour rendre la commande mvn opérante pour tous les profiles, il faut rebooter.



GhostScript


Version 10.05.1 minimum (version de base sur debian 13)


Installation Debian 13


sudo apt install ghostscript


Installation depuis les sources (cas des OS obsolètes)

Version AGPL : https://www.ghostscript.com/download/gsdnld.html

cd /tmp
wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10060/ghostscript-10.06.0.tar.gz
tar -xzf ghostscript-10.06.0.tar.gz
cd ghostscript-10.06.0

# Installer les dépendances pour compiler
sudo apt update
sudo apt install build-essential libjpeg-dev libpng-dev libtiff-dev libx11-dev libfreetype6-dev

# Compiler et installer
./configure --without-x 
make -j$(nproc)
sudo make install


Installation depuis le github (cas des OS obsolètes)


/* si besoin installer autoconf, automake et gcc */


cd /tmp
git clone git://git.ghostscript.com/ghostpdl.git
cd ghostpdl/
./autogen.sh
make
make install

Ne pas oublier de modifier le chemin d'acces à ghostscript dans la configuration d'esup-signature dans application.yml : pdf: path-to-g-s



La conversion vers PDF/A nécessite l'incorporation des polices dans le PDF. Ceci peut poser des problèmes pour plusieurs raisons :

  • La police n'est pas présente sur le système d'exploitation exécutant ghostscript.
  • La police n'est pas libre de droits.
  • Dans les deux cas précédent, la police de substitution pourrait modifier la taille du document et donc bloquer la conversion.

Si la conversion n'est pas possible, le document sera signé dans son format d'origine. Cependant, il est possible d'installer les polices manquantes pour que Ghostscript puisse tout de même faire la convertions. Le nouveau parametre path-to-fonts : /usr/share/fonts , précise l'emplacement où GS doit chercher les polices (le dossier du système contenant toutes les polices).

Voici deux méthodes (debian et centos) pour installer les polices Microsoft (les principales susceptibles d'être présentes dans les PDF) sur linux :

Debian :

wget http://ftp.fr.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.8.1_all.deb

#Dependence for dpkg
sudo apt-get install cabextract

#Install fonts by dpkg

sudo dpkg -i ttf-mscorefonts-installer_3.8.1_all.deb

CentOS :

yum install curl cabextract xorg-x11-font-utils fontconfig
yum install https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm


Vérification

gs -version

GPL Ghostscript 10.06.0 (2025-09-09)
Copyright (C) 2025 Artifex Software, Inc.  All rights reserved.

Ghostscript est principalement utilisé pour convertir les documents signés au format PDF/A (https://fr.wikipedia.org/wiki/PDF/A). Pour ce faire, la commande gs utilise le fichier de définition PDFA_def.ps qui est fourni dans src/resources. Ce fichier de définition fait référence à un fichier srgb.icc (profil de couleur) lui aussi présent dans src/resources. Au moment du lancement, esup-signature contrôle l'emplacement "réel" du fichier srgb.icc et modifie la référence (uri) dans le fichier PDFA_def.ps. Cette procédure est normalement transparente. Mais, lorsque vous rencontrez un problème lors du test de conversion, vous pouvez contrôler la ligne 8 du fichier PDFA_def.ps qui contient : /ICCProfile (/opt/esup-signature/src/etc/srgb.icc) % Customise, et vérifier si srgb.icc est bien présent à l'emplacement indiqué.



Git

https://git-scm.com/downloads

ou

sudo -i
apt install git

Vérification : 

git version

git version 2.20.1



Sedalib

 

Sedalib est une bibliothèque fournie dans le cadre du programme Vitam : http://www.programmevitam.fr/

Cette bibliothèque permet de générer des bordereaux SIP pour la transmission des documents à un service d'archives.

Les sources sont disponibles ici : https://github.com/ProgrammeVitam/sedatools

Esup-signature est fournis avec un jar sedalib-2.5.0.jar.

Depuis la version 1.10 l'installation de sedalib est transparente.


PCSC, OpenSC, Driver Safenet (pour le certificat cachet)

Pour l'utilisation d'un certificat cachet d'établissement branché sur serveur, il faut installer les dépendances suivantes : 

apt install pcsc-tools
apt install libpcsclite1
apt install libpcsclite-dev

L'installation d'OpenSC peut se faire via package.

apt install opensc

ou via le dépôt git du projet :

Une page dédiée à OpenSC est disponible pour plus de détails : OpenSC

Facultatif : installation du driver Safenet, pour rendre plus rapides les signatures sur clé compatible Safenet (ex : Certinomis)

Les pilotes sont à télécharger ici : https://knowledge.digicert.com/general-information/how-to-download-safenet-authentication-client

wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb
sudo dpkg -i libssl1.1_1.1.1w-0+deb11u4_amd64.deb
sudo apt install libgdk-pixbuf-2.0-0 libgdk-pixbuf-xlib-2.0-0
sudo dpkg -i safenetauthenticationclient-core_10.9.4723_amd64.deb

Une fois le paquet installé, on obtient le fichier /lib/pkcs11/libIDPrimePKCS11.so



Création d'un user esup

Vous devez créer un utilisateur nommé esup

Création d'un user
adduser esup



Ajustements PCSC sur Debian 13

Sur Debian 13 (trixie), l'utilisateur système "esup" qui lance esup-signature n'a pas les droits d'accéder au certificat cachet.

Symptômes : 

  • Plus de certificat d'affiché dans esup-signature (/admin/certificats)
  • les commandes pcsc_scan et pkcs11-tool tels que décrit dans OpenSC n'étaient plus opérantes pour cet utilisateur "esup"
  • La commande journalctl -u pcscd -f fait état de problèmes de droits : 
    ../src/auth.c:166:IsClientAuthorized() Process 2769 (user: 1001) is NOT authorized for action: access_pcsc
    ../src/winscard_svc.c:357:ContextThread() Rejected unauthorized PC/SC cli

Ajout de l'utilisateur dans le groupe pcscd

Cf https://blog.apdu.fr/posts/2025/10/pcscd-runs-as-pcscd-user/
Ajout dans /usr/lib/udev/rules.d/92-libccid.rules de 

# Generic CCID device (bInterfaceClass = 0x0b)
ENV{ID_USB_INTERFACES}=="*:0b0000:*", GROUP="pcscd"

Et ajout du rôle groupe pcscd et affectation à l'utilisateur "esup"

addgroup pcscd
adduser esup pcscd

Modification au niveau de polkit, deux solutions possibles :


Désactiver polkit pour pcscd : dans /etc/default/pcscd Cf https://blog.apdu.fr/index-54.html

PCSCD_ARGS=--disable-polkit

ou

ajouter une regle polkit :

La règle doit couvrir les deux actions access_pcsc ET access_card. Si access_card est absent :

cat > /etc/polkit-1/rules.d/10-pcscd.rules << 'EOF'
polkit.addRule(function(action, subject) {
  if (action.id == "org.debian.pcsc-lite.access_pcsc" ||
      action.id == "org.debian.pcsc-lite.access_card") {
    return polkit.Result.YES;
  }
});
EOF

systemctl restart polkit

Le redémarrage de pcscd est alors nécessaire :

systemctl restart pcscd.service 




La suite ici : PostgreSQL


 

  • Aucune étiquette