Signature Électronique Docaposte
Tomcat certificats
Documentation d’aide à la configuration des certificats TLS gérés du process Java relatif à Esup-Stage.
Définitions
Java sépare le magasin de certificats à utiliser en 2 catégories :
-
keystore
: magasin de certificats qui contient des clés privées d’authentification ou de sécurité -
truststore
: magasin de certificats qui contient les certificats publics qui sont acceptés
Ces 2 magasins sont stockés dans des fichiers de type JKS ou PKCS12
Edition de votre truststore
Les applications tomcat devront accepter certains certificats pour pouvoir accepter les appels web vers d’autres services de votre SI.
L’application Esup-Stage aura surement besoin de se connecter à votre serveur d’authentification SSO en HTTPS (certificat TLS), il faut donc rajouter la confiance de l’Autorité Certification (AC) qui émet les certificats de votre établissement dans le truststore dédié au tomcat.
Nous allons pour cela créer un fichier truststore avec la chaine de certificat de l’AC émettant les certificats de votre établissement
-
Récupérez le fichier ca.crt de l’AC de votre établissement
Pour l’exemple de création du truststore, nous avons pris le mot de passe "my_password" mais ceci reste à votre libre choix.
-
Découpez la chaîne des certificats publics contenu dans le fichier
ca.crt
[user@computer ~/tmp]$ csplit -s -z -f cacrt- ca.crt '/-----BEGIN CERTIFICATE-----/' '{*}' [user@computer ~/tmp]$ ls -1 cacrt-00 cacrt-01 ca.crt
-
Créez/Importez la série des certificats issus du
ca.crt
dans un nouveautruststore
[user@computer ~/tmp]$ ls -1 cacrt-* | while read item; do \ echo "Import un certificat de la chaine de certification '${item}' :"; \ keytool -keystore truststore.jks -storepass my_password \ -alias ${item} -import -noprompt -file ${item}; \ done Import un certificat de la chaine de certification 'cacrt-00' : Certificate was added to keystore Import un certificat de la chaine de certification 'cacrt-01' : Certificate was added to keystore [user@computer ~/tmp]$
-
Vérifiez le contenu du
truststore
[user@computer ~/tmp]$ keytool -list -v -keystore truststore.jks -storepass my_password \ | grep -C 5 'Entry type: trustedCertEntry' \ | grep -E '^(Alias name|Entry type|Issuer|Valid from):' Alias name: cacrt-00 Entry type: trustedCertEntry Issuer: ... Valid from: ... Alias name: cacrt-01 Entry type: trustedCertEntry Issuer: ... Valid from: ... [user@computer ~/tmp]$
-
Ajoutez un autre service avec son certificat public
Si vous avez d’autres services HTTPS n’utilisant pas le CA de votre établissement, vous pouvez importer le certificat de service externe dans votre truststore.-
récupérez le certificat de ce service externe
-
importez ce fichier certificat manuellement dans le
truststore
-
-
Récupérez le certificat
[user@computer ~/tmp]$ openssl s_client -showcerts -connect demo-parapheur.dfast.fr:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > demo-parapheur.pem
-
Ajout au magasin
trustore
[user@computer ~/tmp]$ keytool -keystore truststore.jks -storepass my_password \ -alias 'demo-parapheur' -import -noprompt -file demo-parapheur.pem Certificate was added to keystore [user@computer ~/tmp]$
-
Exportez votre
truststore
Exportez ce fichiertruststore.jks
vers votre serveur esup-stage et retenez le mot de passe de celui-ci.-
Reportez cette config du
truststore
dans la variableCATALINA_OPTS
de votre tomcat (voir section suivante Lanceur Tomcat) -
Reportez cette config du
truststore
dans la config d’esup-stage, voir les propriétésdocaposte.truststore.*
dans le fichier/etc/estage/estage.properties
-
Lanceur Tomcat
Le tomcat doit être lancé avec les paramètres indiquant les paramètres de chargement du truststore
.
Votre fichier de configuration devra contenir les variables CATALINA_OPTS
de lancement suivante :
-
javax.net.ssl.trustStore
: chemin du fichier truststore -
javax.net.ssl.trustStoreType
: type de magazin (JKS ou PKCS12) -
javax.net.ssl.trustStorePassword
: mot de passe associé à votre fichier magasintruststore
Exemple avec un apache-tomcat-9.0
packagé en Red Hat
CATALINA_OPTS=" -Xms2048m -Xmx4096m ... -Djavax.net.ssl.trustStore=/etc/ssl/catalina.truststore -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=my_password ... "
Exemple à partir d’un apache-tomcat binaire récupérer sur le site Apache Tomcat
# TOMCAT > MEMOIRE
export CATALINA_OPTS="$CATALINA_OPTS -Xms2048m -Xmx4096m"
...
# TOMCAT > TRUSTSTORE certificats acceptés
export CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.trustStore=/etc/ssl/catalina.truststore"
export CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.trustStoreType=JKS"
export CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.trustStorePassword=my_password"
Vérifiez que les variables sont bien chargées après le redémarrage du tomcat
[root@server ~]# ps aux | grep tomcat
tomcat ... /usr/bin/java ... -Djavax.net.ssl.trustStore=/etc/ssl/catalina.truststore -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=my_password ...
[root@server ~]#
Module Docaposte
Pour le module "Docaposte" intégrer dans esup-stage, le service "Docaposte" via l’organisme certificateur (Certinomis, ChamberSign, …) vous a normalement fourni un fichier avec l’extension '.p12' (au format PKCS12) nécessaire à l’authentification auprès du service.
Tout d’abord, il faut vérifier la validité de ce fichier certificat.p12
qui
doit contenir la clé privée d’authentification et les certificats publics
associés.
certificat.p12
:[root@server ~]# keytool -list -v -keystore /data/certificat.p12 -storepass my_password \
| grep -C 6 '^Entry type: PrivateKeyEntry' \
| grep -E '^(Alias name|Creation date|Entry type|Owner|Issuer|Valid from):'
Alias name: 1
Creation date: May 16, 2023
Entry type: PrivateKeyEntry
Owner: ...
Issuer: ...
Valid from: Tue Nov 22 08:12:07 CET 2022 until: Thu Nov 21 08:12:07 CET 2024
[root@server ~]#
certificat.p12
:[root@server ~]# openssl pkcs12 -in certificat.p12 -out docaposte.crt -nodes
Enter Import Password: *****
[root@server ~]# cat docaposte.crt
...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
[root@server ~]#
Paramétrage dans ESUP-Stage
Fichier estage.properties
Dans le fichier /etc/estage/estage.properties
du serveur ESUP-Stage,
complétez les informations suivantes :
# uri vers le webservice Docaposte
docaposte.uri=https://demo-parapheur.dfast.fr/parapheur-soap/soap/v1/Documents
# numéro siren fourni par Docaposte
docaposte.siren=0123456789
# chemin absolu du fichier .p12
docaposte.keystore.path=/data/certificat.p12
# mot de passe permettant la lecture du fichier p12
docaposte.keystore.password=xxx
# chemin absolu du fichier .pks
docaposte.truststore.path=/data/ProductionFAST.jks
# mot de passe permettant la lecture du fichier jks
docaposte.truststore.password=xxx
Centre de gestion
Au niveau de chaque centre de gestion qui doit donner droit à la signature électronique, renseignez dans l’onglet Signature électronique le code du circuit de signature paramétré dans Docaposte.
-
Rendez-vous à l’emplacement Centre de gestion > Liste des centre de gestion puis sélectionnez un centre de gestion.
-
Dans ce centre de gestion, rendez vous dans l’onglet Signature électronique.
Dans l'Ordre de signature, vous pouvez changer l’ordre des signataires à l’aide de la croix multidirectionnelle qui s’affiche en survolant avec la souris le nombre précédent l’intitulé du signataire.
Dans cette version, il n’est possible d’utiliser que des signatures OTP. Cela signifie que chaque signataire recevra un mail ou sms l’invitant à signer électroniquement la convention. La signature automatique (signature serveur) n’est pas prise en charge.
Contrôle des métadonnées
Dans Fast, vous avez la possibilité de contrôler la bonne transmission des métadonnées en allant dans le répertoire
-
Preuve ⇒ Cliquez sur un document dans la rubrique "A signer(OTP) puis en bas de page vous verrez le lien "Preuve". Dans une des pages s’afficheront les métadonnées.
-
OTP ⇒ Cliquez sur un document dans la rubrique "A signer(OTP) puis en bas de page vous verrez le lien "OTP". Seront affichées toutes les métadonnées disponibles. Si l’étape de signature associée à l’OTP n’a pas encore été dépassée, vous pouvez modifier manuellement les métadonnées. Cela est utile en cas d’erreur de saisi dans ESUP-Stage.
Certificat personnel
Il est possible de faire signer une convention avec le certificat personnel d’un utilisateur. Pour ce faire, vous devez choisir dans le paramétrage du centre de gestion le paramètre "Signature serveur". Dans Fast, vous devez renseigner à l’étape de signature concernée le paramètre Signature.