16 juin 2025

Ajouter un certificat au keystore de eDSN

Lundi matin Net-Entreprises informe du remplacement des autorités de certification du site de France Travail pour le mercredi (sic) ... Ceci peut impacter les flux M2M de eDSN lors du téléchargement des Attestations d'Emploi Rematérialisées (CRM de nature 44).

Net entreprises fournit les nouveaux certificats. Vous pouvez les installer dans le "keystore" votre eDSN, ou attendre que le support client mette à disposition une nouvelle version.

Quelques notions de base :

HandShake : les serveurs contrôlent qu'ils se connaissent avant d'échanger des données. Le serveur distant va présenter son certificat. eDSN va le contrôler par rapports à ceux dont il dispose. S'il n'est pas reconnu, une erreur sera levée :

SSLHandshakeException invoking https://teledeclarants.francetravail.fr: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Certificat : Fichier qui assure de l'identité de son titulaire. Il est certifié par une autorité.

CA : autorité de certification, organisme qui valide l'authenticité d'un certificat (on peut trouver des CA intermédiaires et des ROOT CA racine. Les "intermédiaires" sont certifiés par une autre autorité. Seuls les "racine" sont "autocertifiés"). Par analogie, votre acte de naissance peut être certifié par un agent de votre mairie, qui lui même peut être certifié par un notaire.

Le keystore eDSN est un "Magasin de clés". Le keystore fourni par eDSN ne contient que les CA intermédiaires et racines des services M2M. Tant que ceux ci restent valables, le handshake sera correct.

En testant l'URL France Travail (avec la commande "m2m-plus certificates") on constate la présence d'un certificat dont la fin de validité est au 18/06/2025, une CA et une rootCA "Entrust" à fin 2030. 

6 juin 2025

OPHRS3003 I/O error when pre-processing message

OpenHR semble démarré, 

Mais un ce message d'erreur apparaît quand on lance le serveur de Query ou HRaSpace :

2025-06-06T08:34:20,897 INFO  [        ][               ][main] - OPHRS1001 Starting OpenHR server - Release 7.40.06003.00000 
2025-06-06T08:34:20,901 INFO  [        ][               ][main] - OPHRS1002 Loading configuration from file </hr9dev/openhr/conf/dispatcher.properties>
2025-06-06T08:34:20,914 INFO  [        ][               ][main] - HR component versions:
   hr-openhr-api=2.0.2
   hrapplication=7.40.06003.00000
 
2025-06-06T08:34:20,914 INFO  [        ][               ][main] - System properties:
   file.encoding=ISO-8859-1
   file.separator=/
   hr.bootjars.dirs=/hr9dev/openhr/lib/boot
   hr.jars.dirs=/hr9dev/openhr/lib
...
2025-06-06T08:20:13,809 INFO  [        ][               ][main] - OPHRS1011 Server's configuration is 
... 
    hr_design.executable=RTSDGN TYBXBHR
...
2025-06-06T08:34:20,918 INFO  [        ][               ][main] - OPHRS1030 HR Design Server address has been automatically set to <127.0.0.1>.
2025-06-06T08:34:20,919 INFO  [        ][               ][main] - OPHRS1080 HR Design server's encoding is <ISO8859-15>
2025-06-06T08:34:20,926 INFO  [        ][               ][main] - OPHRS1051 Registered service <RemoteService>
2025-06-06T08:34:20,927 INFO  [        ][               ][main] - OPHRS1051 Registered service <LocalService>
2025-06-06T08:34:20,927 INFO  [        ][               ][main] - OPHRS1050 MessageDispatcher successfully initialized
2025-06-06T08:34:20,944 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1070 Service <Default>: pool size set to <5> instances
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1071 Service <Default>: idle time-out set to <200> second(s)
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1072 Service <Default>: working time-out set to <2000> second(s)
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1073 Service <Default>: maximum retry count set to <1>
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1074 Service <Default>: delay before retry set to <1> second(s)
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1075 Service <Default>: message's maximal wait time (in queue) is <10> second(s)
2025-06-06T08:34:20,946 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1077 Queued a new message for service <Default>
2025-06-06T08:34:45,281 ERROR [00000003][172.18.236.29  ][MessageProcessor-2] - OPHRS3003 I/O error when pre-processing message (Client: <172.18.236.29/43318>)
com.hraccess.commons.io.InvalidBlockSizeException: Found an invalid input block size of 808464432 bytes
        at com.hraccess.commons.io.CompressedBlockInputStream.readAndDecompress(CompressedBlockInputStream.java:92) ~[hr-kernel-3.0.0.jar:?]
        at com.hraccess.commons.io.CompressedBlockInputStream.read(CompressedBlockInputStream.java:185) ~[hr-kernel-3.0.0.jar:?]
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270) ~[?:?]
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313) ~[?:?]
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188) ~[?:?]
...
 


Un premier constat est la présence d'une erreur de type I/O (accès en lecture/écriture)

On constate aussi que l'erreur se produit 15 secondes après la fin du "démarrage" de OpenHR (en fait, le démarrage de HRD Query : ce dernier invoque OpenHR pour obtenir des informations qui lui sont nécessaires).


Si l'on compare les logs OpenHR avec celles d'un autre environnement, on constate que le démarrage OpenHR de l'environnement incidenté est incomplet. Il devrait se poursuivre par un :

OPHRS1004 HR Design server version is <7.000>
Loading XML bean definitions from file [/logi/hraccess90/hr9de5/openhr/conf/services.xml]
Loading XML bean definitions from file [/logi/hraccess90/hr9de5/openhr/conf/security.xml]
OPHRS1109 Servers context initialized
OPHRS1013 Merged configuration is
... 

 

Et surtout par un message :

OPHRS1999 OpenHR server is ready for business (Release <7.000>)

En l'occurrence, OpenHR devrait démarrer l'exécutable RTSDGN

Les trois origines possible de l'erreur que j'ai rencontrées sont :

  • Mauvais paramétrage : dans le fichier openhr/conf/dispatcher.properties le paramètre hr_design.executable contenait les mots clefs "RTSDGN $HRPREFBHR" issus du livrable de l'éditeur. Il a suffit de corriger la configuration pour indiquer "RTSDGN TYBXBHR".
  • Mauvaise recomplation : dans $SIGACS/bin l'exécutable RTSDGN provenait de la copie depuis une machine dont les binaires n'étaient pas compatible. Il a fallu recompiler les programmes C, regénérer les programmes Cobol, relinker le RTSDGN.
  • Absence de licence : la licence Cobol nécessaire à l'exécution des programmes a été perdue ou est obsolète. Exécutez une chaine batch pour le constater : un message explicite se retrouvera dans les logs. Nous avions une licence de test dont la date de fin était dépassée. Il a fallu en installer une nouvelle.

(On peut aussi imaginer un problème d'accès lié aux droits Unix)