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
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
maven > 3.5.x voir : https://maven.apache.org/download.cgi
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
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 :
- Pour Linux (dans le cadre de la signature cachet d'établissement) : https://github.com/OpenSC/OpenSC/wiki/Compiling-and-Installing-on-Unix-flavors
- Pour Windows : https://github.com/OpenSC/OpenSC/wiki/Windows-Quick-Start
- Pour MacOS : https://github.com/OpenSC/OpenSC/wiki/macOS-Quick-Start
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
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