Skip to content

Commit

Permalink
intégration de la doc du wiki dans la doc technique (antora)
Browse files Browse the repository at this point in the history
  • Loading branch information
lea-raya authored and Léa Raya DÉCORNOD committed Jan 23, 2025
1 parent e5a687c commit bcc2b5a
Show file tree
Hide file tree
Showing 12 changed files with 924 additions and 1 deletion.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion src/docs/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,9 @@
* xref::decisions.adoc[]
* xref::flux.adoc[]
* xref::archi-tech.adoc[]
* xref::event-storming.adoc[]
* xref::event-storming.adoc[]
* ESUP STAGE
** xref::wiki/index.adoc[Home]
** xref::wiki/Prerequis.adoc[Prérequis]
** xref::wiki/ESUP-SISCOL.adoc[ESUP-SISCOL]
** xref::wiki/ESUP-STAGE.adoc[ESUP-STAGE]
233 changes: 233 additions & 0 deletions src/docs/modules/ROOT/pages/wiki/Docaposte_Signature-electronique.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
= Signature Électronique Docaposte
:imagesdir: ../../images

== 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**
+
[source,console]
----
[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 nouveau truststore
+
[source,console]
----
[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 +
+
[source,console]
----
[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

.Exemple avec l'API de test de Docaposte
. Récupérez le certificat
+
[source,console]
----
[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
+
[source,console]
----
[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 fichier 'truststore.jks' vers votre serveur esup-stage et retenez le mot de passe de celui-ci.
+
* Reportez cette config du truststore dans la variable 'CATALINA_OPTS' de votre tomcat (voir section suivante 'Lanceur Tomcat')
* Reportez cette config du truststore dans la config d'esup-stage, voir les propriétés 'docaposte.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 magazin truststore

Exemple avec un apache-tomcat-9.0 packagé en Red Hat

* /etc/sysconfig/tomcat9.0
[source,shell]
----
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](https://tomcat.apache.org/)

* `${CATALINA_HOME}/bin/setenv.sh` (fichier exécutable à créer si inexistant)
[source,shell]
----
# 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

[source,console]
----
[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égré dans https://github.com/EsupPortail/esup-stage/[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.

* Vérification de la présence d'une clé privée valide dans le fichier 'certificat.p12': Pour le module "Docaposte" intégrer dans https://github.com/EsupPortail/esup-stage/[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.
* Vérification de la présence d'une clé privée valide dans le fichier 'certificat.p12':
+
[source,console]
----
[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 ~]#
----

* Vérification de la présence des certificats publics présents dans le fichier 'certificat.p12' :
+
[source,console]
----
[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 :

[source,properties]
----
# 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. Pour ce faire :

* 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.
Exemple de paramétrage d'un centre de gestion avec un workflow incluant une signature personnel (signature de l'étudiant) :
image:wiki/001a98b2-ec5e-4a2c-b24e-b6a0911f6196.png[image]

Même exemple de workflow avec 4 signatures OTP et une signature avec un certificat personnel du côté de Fast
image:wiki/366f4814-a881-435b-9fcd-57195695b1bd.png[image]
Loading

0 comments on commit bcc2b5a

Please sign in to comment.