Arborescence des pages

Contexte

Le consortium ESUP-Portail gère un nombre de plus en plus important de documents qui doivent être signés par ESUP-Portail et souvent par un établissement membre.
Ces documents correspondent à des adhésions, des conventions, des devis, facturations etc.

L'instance esup-signature d'ESUP-Portail facilite la dématérialisation et le flux de gestion de ces documents, notamment vis-à-vis de ces signatures.

Ainsi l'instance esup-signature d'ESUP-Portail permet à son/sa président(e) ou un de ses représentants par délégation de signer des documents qui engagent ESUP-Portail.

Cette même instance permet aussi de faire signer un partenaire ou d'utiliser un document déjà signé pour qu'il soit sur-signé par ESUP-Portail.

Dans le cas où le document est signé numériquement (et ne correspond pas une 'simple' signature calligraphique / apposition d'image) via une autre instance d'esup-signature ou tout autre outil, l'instance d'esup-signature d'ESUP-Portail conserve les signatures numériques déjà présentées. Si les documents signés via ESUP-Portail de manière dématérialisée ne nécessitent pas l'usage d'une signature qualifiée (type RGS**) de personnes physiques, on préserve ainsi toute signature de ce type qui aurait pu être utilisée en amont de la signature ESUP-Portail par un de nos partenaires.

Caractéristiques d'esup-signature.esup-portail.org

En résumé, d'un point de vue pratique, l'instance esup-signature d'ESUP-Portail propose ces caractéristiques : 

  • authentification shibboleth avec des rôles affectés en fonction de l'attribut eduPersonPrincipalName (eppn) sans lien direct avec un annuaire LDAP ;
  • un usage systématique d'un certificat cachet serveur RGS** tel que le supporte esup-signature.

Installation matérielle

L'instance esup-signature d'ESUP-Portail est installée et gérée par l'Université de Rouen Normandie ; elle correspond à une Machine Virtuelle opérée par la solution VMware vSphere de l'université.

Le  certificat cachet serveur propre à l'esup-signature d'ESUP-Portail a été acquis auprès de certinomis par le consortium lui-même, un membre de l'université de Rouen en est le mandataire et le responsable technique.

Ce certificat cachet serveur se matérialise par :

  • une carte à puce SIM "Gemalto IDPrime 940C"
  • intégrée dans un lecteur USB de carte à puce "Feitian SCR301"
  • lui-même branché dans un hub USB réseau "Digi AnywhereUSB® 8 Plus" racké dans une baie du data center de l'université de Rouen
  • et monté par linux en périphérique USB via "AnywhereUSB Manager" sur la machine virtuelle dédiée à l'instance d'esup-signature d'ESUP-Portail

Configurations logicielles

Esup-signature supporte les certificats cachets (seal) soit :

  • en passant par OpenSC, qui détermine alors le driver libre à utiliser en fonction de la clef ;
    • cette possibilité a l'avantage d'utiliser des logiciels libres directement disponibles via le sysème de paquets de votre distribution (opensc) 
    • cela présuppose cependant qu'un driver libre supporte effectivement la clef proposée ; si les certificats idprime-940 sont supportés en opensc 0.23.0, les idprime-940c ne le sont que sur la toute dernière 0.24.0 sortie en déc. 2023 et non encore disponible à cette date par exemple ; plus d'informations sur la page OpenSC sur ce même wiki.
  • en passant directement par le driver / librairie propriétaire
    • cette option a l'avantage d'utiliser le driver officiel livré par l'entreprise vendant le support matériel du cachet ; le support est donc normalement garanti (normalement sur tous les OS dont linux si vous installez esup-signature sur un serveur linux ; fortement recommandé)
    • cela a aussi l'avantage de proposer un process de signature plus rapide (constatation à l'usage)

→ si nous avons bien validé le fonctionnement de notre cachet idprime-940c avec le driver libre proposé dans opensc 0.24.0, nous avons opté malgré tout pour l'usage du driver propriétaire.

Le service https://esup-signature.esup-portail.org est déclaré dans la fédération ESR portée par Renater : https://registry.federation.renater.fr/entities/view/2294

L'usage de la signature par certificat cachet serveur est systématique : le cachet serveur permet la réalisation de cachets systématiques côté serveur en masse sans requérir à une installation ou configuration supplémentaire pour les clients signataires.

La demande d'une signature par le/la président(e) d'ESUP-Signature (ou délégataire) est possible à toute personne authentifiée (fédération ESR).

L'initiation d'un circuit autre est disponible pour certains membres d'ESUP-Portail (authentifiés et identifiés via la fédération ESR à nouveau).

Fichier application.yml

Le fichier de configuration de cette instance d'esup-signature est ainsi le suivant (à quelques paramètres/passwords de sécurité près) : 


global:
    root-url: https://esup-signature.esup-portail.org
    domain: esup-portail.org
    nexu-url: http://localhost:9795
    nexu-version: 1.22, 1.23 ou Esup-DSS-Client 1.0
    hide-wizard: true
    hide-auto-sign: true
    hide-send-sign-request: true
    hide-wizard-except-roles:
    hide-auto-sign-except-roles:
    hide-send-sign-except-roles:
    enable-su: false
    enable-splash: true
    application-email: no-reply@esup-portail.org
    hours-before-refresh-notif: 24
    share-mode: 1
    pdf-only: true
    seal-certificat-pin: ******
    # usage du driver propriétaire et pas d'OpenSC
    # seal-certificat-type: OPENSC
    seal-certificat-type: PKCS11
    seal-certificat-driver: /usr/lib/pkcs11/libIDPrimePKCS11.so
    infinite-scrolling: true
    return-to-home-after-sign: false
    naming-template: "[title]"
    signed-suffix: "_signed"
    trash-keep-delay: 15
    disable-cert-storage: true
    export-attachements: false
    authorized-sign-types: certsign

tomcat:
    ajp:
        port: 8009
info:
    app:
        name: esup-signature
        description: Instance de production
    tags:
        environment: PROD

management:
    health:
        ldap:
            enabled: false
    endpoints:
        jmx:
            exposure:
                include: '*'
        web:
            exposure:
                include: '*'
    endpoint:
        health:
            show-details: ALWAYS

spring:
    session:
        jdbc:
            initialize-schema: ALWAYS
    datasource:
        driver-class-name: org.postgresql.Driver
        url: jdbc:postgresql://localhost:5432/esupsignature
        password: *************
        username: esupsignature
        jdbc-url: ${spring.datasource.url}
        hikari:
            auto-commit: false
        tomcat:
            validation-query: SELECT 1;
    jpa:
        hibernate:
            ddl-auto: update
        properties:
            hibernate:
                jdbc:
                    lob:
                        non_contextual_creation: true
        show-sql: false
        open-in-view: false
    mail:
        host: smtp.univ-rouen.fr
    messages:
        basename: i18n/messages
        encoding: UTF-8
        fallback-to-system-locale: false
    data:
        ldap:
            repositories:
                enabled: false
    thymeleaf:
        cache: true
        encoding: UTF-8
        mode: HTML
        servlet:
            produce-partial-output-while-processing: false
    web:
        resources:
            cache:
                cachecontrol:
                    max-age: 1d
                    cache-public: true
            static-locations: classpath:/static


mail:
    from: no-reply@esup-portail.org

sms:
    enable-sms : false

dss:
    cache-data-source-driver-class-name: org.hsqldb.jdbc.JDBCDriver
    cache-data-source-url: jdbc:hsqldb:mem:cachedb
    cache-password:
    cache-username: sa
    default-validation-policy: policy/constraint.xml
    server-signing-keystore-filename: validate_service.p12
    server-signing-keystore-password: password
    server-signing-keystore-type: PKCS12
    tsp-server: http://tsa.belgium.be/connect
    lotl-country-code: EU
    lotl-url: https://ec.europa.eu/tools/lotl/eu-lotl.xml
    oj-url: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG

fs:
    vfs-test-uri: /tmp

pdf:
    convert-to-pdf-a: true
    pdf-a-level: 2
    path-to-g-s: /usr/bin/gs
    path-to-fonts : /usr/share/fonts
    pdf-to-image-dpi: 72

security:
    shib:
        idp-url: https://idp.univ-rouen.fr
        principal-request-header: REMOTE_USER
        title: Fédération d'identité RENATER / Shibboleth
        domains-white-list-url: https://eduspot.renater.fr/eduspot/whitelist-eduspot.txt
    web:
        group-to-role-filter-pattern: for.esup-signature.role.(\w*)
        mapping-groups-roles:
            for.esup-signature.admin: ROLE_ADMIN
            for.esup-signature.user: ROLE_USER
            for.esup-signature.create-sign-req: ROLE_CREATE_SIGNREQUEST
            for.esup-signature.esup-coord: ROLE_CREATE_AUTOSIGN
            for.esup-signature.seal: ROLE_SEAL
        ws-access-authorize-ips: 127.0.0.1
        group-mapping-spel:
            for.esup-signature.admin: "#eppn == '*****@univ-rouen.fr' or #eppn == '*****@univ-rouen.fr'"
            for.esup-signature.user: "true"
            for.esup-signature.seal: "true"
            for.esup-signature.create-sign-req: "#eppn == '****@univ-rouen.fr' or #eppn == '****@univ-rouen.fr' or #eppn == '*****@univ-lyon3.fr' or #eppn == '*****@uphf.fr' or #eppn == '****@univ-lorraine.fr' or #eppn == '****@toulouse-inp.fr'"
            for.esup-signature.esup-coord: "#eppn == '****@univ-rouen.fr' or #eppn == '***@univ-rouen.fr' or #eppn == '****@univ-lyon3.fr' or #eppn == '****@toulouse-inp.fr'"
    
server:
    servlet:
        session:
            tracking-modes: COOKIE
    error:
        include-stacktrace: always
    port: 8080
    tomcat:
        mbeanregistry:
            enabled: true
        remoteip:
            remote-ip-header: X-Forwarded-For
        basedir: ./temp
        max-swallow-size: -1

sign:
    aes-key : "0000000000000000"
    cades-digest-algorithm: SHA256
    cades-signature-level: CAdES_BASELINE_LT
    container-type: ASiC_E
    default-signature-form: XAdES
    pades-digest-algorithm: SHA256
    pades-signature-level: PAdES_BASELINE_LT
    password-timeout: 60000
    signature-packaging: ENVELOPED
    xades-digest-algorithm: SHA256
    xades-signature-level: XAdES_BASELINE_LT

logging:
    file:
        name: /var/log/esup-signature/esup-signature.log
    pattern:
        console: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(%X{userId:-system}){cyan} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
        file: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(%X{userId:-system}){cyan} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
    level:
        root: warn
        org.esupportail.esupsignature: info
        org.verapdf: error
        org.apache.pdfbox: error
        eu.europa.esig.dss: error
        org.springframework.web.filter.CommonsRequestLoggingFilter: error

springdoc:
    api-docs:
        enabled: true
        path: /api-docs
    swagger-ui:
        enabled: true
        supported-submit-methods: []
        path: /swagger-ui.html
    packages-to-scan: org.esupportail.esupsignature.web.ws
    show-actuator: true




  • Aucune étiquette