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 impactera 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. 

m2m-plus certificates -c $SIGACS/DSN/edsn-home/conf/com.soprahr.edsn.m2m.cfg https://teledeclarants.francetravail.fr/
m2m-plus 11.1.0 

Command line tools dedicated to diagnose M2M connections
Connecting: https://teledeclarants.francetravail.fr/
Connection status: 403 Forbidden

Certificate #1 (X.509)
Subject principal: CN=teledeclarants.francetravail.fr, SERIALNUMBER=130 005 481 00010, OID.2.5.4.15=Government Entity, O=France Travail, OID.1.3.6.1.4.1.311.60.2.1.3=FR, L=Paris, C=FR
Subject alternatives: [[2, teledeclarants.francetravail.fr]]
Issuer principal: CN=Entrust Certification Authority - L1M, OU="(c) 2014 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Not valid before: 2024-06-18T13:27:39Z
Not valid after: 2025-06-18T13:27:38Z
Serial number: e20b8759c9c45e7c14e9671ced40ee3

-----BEGIN CERTIFICATE-----
MIIHEDCCBfigAwIBAgIQDiC4dZycRefBTpZxztQO4zANBgkqhkiG9w0BAQsFADCB
...
-----END CERTIFICATE-----

Certificate #2 (X.509)
Subject principal: CN=Entrust Certification Authority - L1M, OU="(c) 2014 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Issuer principal: CN=Entrust Root Certification Authority - G2, OU="(c) 2009 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Not valid before: 2014-12-15T15:25:03Z
Not valid after: 2030-10-15T15:55:03Z
Serial number: 61a1e7d20000000051d366a6

-----BEGIN CERTIFICATE-----
MIIFLTCCBBWgAwIBAgIMYaHn0gAAAABR02amMA0GCSqGSIb3DQEBCwUAMIG+MQsw
...
-----END CERTIFICATE-----

Certificate #3 (X.509)
Subject principal: CN=Entrust Root Certification Authority - G2, OU="(c) 2009 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Issuer principal: CN=Entrust Root Certification Authority - G2, OU="(c) 2009 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
Not valid before: 2009-07-07T17:25:54Z
Not valid after: 2030-12-07T17:55:54Z
Serial number: 4a538c28

-----BEGIN CERTIFICATE-----
MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC
...
-----END CERTIFICATE-----


Si l'on inspecte le keystore de eDSN, on retrouve les numéros de série des certificats intermédiaire et racine :

keytool -list -keystore dsn-m2m.keystore  -storepass ******** -v | egrep "^Alias name:|^Serial number:|^Nom d'alias :|^Numéro de série :"                                                                                     
Nom d'alias : aaacertificateservices
Numéro de série : 1
Nom d'alias : certigna
Numéro de série : fedce3010fc948ff
Nom d'alias : certignaservicesca
Numéro de série : 6f82fa28acd6f784bb5b120ba87367ad
Nom d'alias : certignawildca
Numéro de série : ab078deedddac72305f5ed8c5084f895
Nom d'alias : digicertglobalg2tlsrsasha2562020ca1
Numéro de série : 85f94c02d857be8cc14ff53eda23e2a
Nom d'alias : digicertglobalrootca
Numéro de série : 83be056904246b1a1756ac95991c74a
Nom d'alias : digicertglobalrootg2
Numéro de série : 33af1e6a711a9a0bb2864b11d09fae5
Nom d'alias : digicerttlsrsasha2562020ca1
Numéro de série : 6d8d904d5584346f68a2fa754227ec4
Nom d'alias : entrustcertificationauthorityl1m
Numéro de série : 61a1e7d20000000051d366a6
Nom d'alias : entrustrootcertificationauthorityg2
Numéro de série : 4a538c28
Nom d'alias : geotrustrsaca2018
Numéro de série : 546fe1823f7e1941da39fce14c46173
Nom d'alias : marketwareserverca2
Numéro de série : 26c314d2cce4429158387ccd1cb3adb9
Nom d'alias : sectigopublicserverauthenticationcaevr36
Numéro de série : 6d4f7cad335377c8c6e001dde2e2c88e
Nom d'alias : sertigoqualifiedwebsiteauthenticationcar35
Numéro de série : 2762378048a1b3628d507e29220de220
Nom d'alias : usertrustrsacertificationauthority
Numéro de série : 1fd6d30fca3ca51a81bbc640e35032d
Nom d'alias : usertrustrsacertificationauthorityaaa2025
Numéro de série : 3972443af922b751d7d36c10dd313595
 
NB : le mot de passe du keystore est à retrouver dans la documentation eDSN


Dans son mail du lundi matin, Net entreprises fournit 4 fichiers ".pem". 
Une fois sur le serveur, la commande keytool permet d'en afficher les propriétés :
keytool -printcert -file "$F" myFile.pem

En filtrant sur quelques propriétés (dont le numéro de série) : 

for F in *.pem
do
echo "========= $F"
RES=$(keytool -printcert -file "$F" )
echo "$RES" | grep -E "^Propriétaire|^Num.ro de s.rie :|^SHA256|^Valide du"
echo "$RES" | grep -E -A3 "^SubjectKeyIdentifier|^AuthorityKeyIdentifier"
done  
 
========= CN=AAA Certificate Services, ST=Greater Manchester, L=Salford, O=Comodo CA Limited, C=GB.pem
Warning: Certificat uses the SHA1withRSA signature algorithm which is considered a security risk and is disabled.
Propriétaire : CN=AAA Certificate Services, O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB
Numéro de série : 1
Valide du Thu Jan 01 01:00:00 CET 2004 au Mon Jan 01 00:59:59 CET 2029
SubjectKeyIdentifier [
KeyIdentifier [
0000: A0 11 0A 23 3E 96 F1 07   EC E2 AF 29 EF 82 A5 7F  ...#>......)....
0010: D0 30 A4 B4                                        .0..  

========= Sectigo Public Server Authentication CA EV R36.pem
Propriétaire : CN=Sectigo Public Server Authentication CA EV R36, O=Sectigo Limited, C=GB
Numéro de série : 6d4f7cad335377c8c6e001dde2e2c88e
Valide du Mon Mar 22 01:00:00 CET 2021 au Sat Mar 22 00:59:59 CET 2036
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 56 73 58 64 95 F9 92 1A   B0 12 2A 04 62 79 A1 40  VsXd......*.by.@
0010: 15 88 21 49                                        ..!I
--
SubjectKeyIdentifier [
KeyIdentifier [
0000: 98 2D 5E 1E 8F EB 54 F4   B9 FF 55 95 AD 4C C7 7E  .-^...T...U..L..
0010: A4 98 AE 7B                                        ....

========= Sectigo Public Server Authentication Root R46.pem
Propriétaire : CN=Sectigo Public Server Authentication Root R46, O=Sectigo Limited, C=GB
Numéro de série : d27fbbc1de359e5216ad6149586099c4
Valide du Mon Mar 22 01:00:00 CET 2021 au Tue Jan 19 00:59:59 CET 2038
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 53 79 BF 5A AA 2B 4A CF   54 80 E1 D8 9B C0 9D F2  Sy.Z.+J.T.......
0010: B2 03 66 CB                                        ..f.
--
SubjectKeyIdentifier [
KeyIdentifier [
0000: 56 73 58 64 95 F9 92 1A   B0 12 2A 04 62 79 A1 40  VsXd......*.by.@
0010: 15 88 21 49                                        ..!I

========= USERTrust RSA Certification Authority.pem
Propriétaire : CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US
Numéro de série : 1fd6d30fca3ca51a81bbc640e35032d
Valide du Mon Feb 01 01:00:00 CET 2010 au Tue Jan 19 00:59:59 CET 2038
SubjectKeyIdentifier [
KeyIdentifier [
0000: 53 79 BF 5A AA 2B 4A CF   54 80 E1 D8 9B C0 9D F2  Sy.Z.+J.T.......
0010: B2 03 66 CB                                        ..f. 

 Ainsi la "Sectigo Public Server Authentication CA EV R36fait référence au certificat de l'autorité "Sectigo Public Server Authentication Root R46", qui elle-même fait référence au certificat de l'autorité "USERTrust RSA Certification Authority".

Le premier et le dernier fichier ".pem" sont déjà présents dans le keystore (on y retrouve leur numéro de série). Mais les deux certificats intermédiaires en sont absents.

Donc parmi les fichiers du ZIP :

  • CN=AAA Certificate Services, ST=Greater Manchester, L=Salford, O=Comodo CA Limited, C=GB.pem (est déjà présent - même s'il ne semble pas utile, et obsolète ...)
  • Sectigo Public Server Authentication CA EV R36.pem (est nouveau)
  • Sectigo Public Server Authentication Root R46.pem (est nouveau)
  • USERTrust RSA Certification Authority.pem (est déjà présent)


Si France Travail avait mis à jour son certificat teledeclarants.francetravail.fr sans changer d'autorité intermédiaire, la mise à jour n'aurait pas eu d'effet sur l'application. Mais les autorités intermédiaires ont été modifiées. Il est donc nécessaire d'ajouter ces nouvelles autorités au keystore.


Pour charger un ".pem" dans le keystore, utiliser la commande :

keytool --importcert -storepass ***** -keystore dsn-m2m.keystore -alias myNewAlias -file "/myPath/myFile.pem"

Adaptez myNewAlias et /myPath/myFile.pem.

Faites une copie de sauvegarde du keystore originel.

NB : si le certificat est déjà présent, la commande le signalera et vous demandera confirmation (dès lors, répondre non)


PS : dans le pire des cas il est possible d'inhiber certains contrôles faits par l'application (paramètres disableTLSCheck et disableCNCheck) mais ceci doit être temporaire pour ne pas compromettre la sécurité des échanges.

Aucun commentaire:

Enregistrer un commentaire