Mac OS X et les signatures électroniques

OK. Il se pourrait bien que la solution indiquée dans le second post de cette page puisse te convenir.

Grosso modo, le problème est similaire au tien : les personnes concernées inscrivaient leurs certificats à un endroit donné alors qu'il fallait les mettre ailleurs...
Quand l'applet Java se lance, elle le fait dans un contexte "navigateur", autrement dit, le répertoire de référence n'est pas le répertoire de référence usuel de Java (indiqué par la variable d'environnemeent JAVA_HOME) mais le répertoire du plug-in pour les navigateurs.

Dans leur cas, il a donc suffi d'intégrer les certificats après avoir mis la variable JAVA_HOME à la bonne valeur :
Bloc de code:
export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
Ils ont dû faire ça dans Terminal.

Comment as-tu intégré tes certificats ?
 
  • J’aime
Réactions: Elle_K
OK. Il se pourrait bien que la solution indiquée dans le second post de cette page puisse te convenir.

Grosso modo, le problème est similaire au tien : les personnes concernées inscrivaient leurs certificats à un endroit donné alors qu'il fallait les mettre ailleurs...
Quand l'applet Java se lance, elle le fait dans un contexte "navigateur", autrement dit, le répertoire de référence n'est pas le répertoire de référence usuel de Java (indiqué par la variable d'environnemeent JAVA_HOME) mais le répertoire du plug-in pour les navigateurs.

Dans leur cas, il a donc suffi d'intégrer les certificats après avoir mis la variable JAVA_HOME à la bonne valeur :
Bloc de code:
export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
Ils ont dû faire ça dans Terminal.

Comment as-tu intégré tes certificats ?
La signature est sur une clé USB. Les certificats ont seulement été téléchargé depuis le site du fournisseur (certeurope), et installés comme indiqué dans leur notice... on a tout suivi à la lettre...
Je vais tenter la modification Java. Je vous tiens au courant!
 
Je ne suis pas habitué à faire ce genre de manipulation (jamais bidouillé les certificats pour Java). Pour autant cela devrait être possible d'y arriver (je suis sur Windows mais je pourrai tester ce soir sur un Mac).

  1. il faudrait ouvrir Terminal
  2. dans l'onglet de la fenêtre tu as une application qui attend, les ordres , un shell (normalement, c'est bash).
  3. on va commencer par vérifier que le chemin du plug-in est le bon en tapant :
    Bloc de code:
    ls "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
  4. si c'est bon, on redéfinit temporairement le dossier principal de Java :
    Bloc de code:
    export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
    pour installer le certificat au bon endroit.
  5. il faut, depuis la clef USB, récupérer les certificats à installer et les mettre dans un dossier, disons sur le bureau ;
  6. [étape à compléter] il faut déterminer quelques paramètres :
    1. quel est le magasin à utiliser pour y stocker le certificat ;
    2. quel alias donner au certificat : à mon avis, tu choisis ce que tu veux de bien explicite, mais pour s'éviter les ennuis idiots, autant prendre un seul mot, sans espace ni caractère accentué (la codification reste un maillon faible en informatique...)
  7. on va les importer avec l'outil ad hoc, keytool ;
    1. en admettant qu'on appelle le magasin "magasin" (normalement, c'est toi qui gère tes magasins et tu devrais pouvoir organiser cela comme bon te semble) ;
      il devrait y avoir un fichier "cacerts" dans lequel insérer le certificat ; mais je ne sais pas exactement son chemin ni s'il faut le préciser (et si la commande est assez intelligente pour le retrouver toute seule...)
    2. que l'alias du certificat choisi serait "Brol" ;
    3. que ton certificat s'appelle "UnCertainCertificat.cer" et que tu l'aies déposé sur le bureau ;
    4. ça nous donnerait :
      Bloc de code:
      "$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/UnCertainCertificat.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -alias "Brol"
  8. répéter la même opération pour chaque certificat reçu, en conservant, en toute logique, le même nom de magasin.
  9. fermer puis réouvrir le navigateur utilisé.
Il reste quelques inconnues mais ça vaut le coup de le tenter.

S'il n'y a rien de confidentiel, j'aimerais bien avoir la procédure proposée initialement par le fournisseur du certificat : ça peut nous éclairer sur certaines options.
 
Dernière édition:
  • J’aime
Réactions: Elle_K
Je ne suis pas habitué à faire ce genre de manipulation (jamais bidouillé les certificats pour Java). Pour autant cela devrait être possible d'y arriver (je suis sur Windows mais je pourrai tester ce soir sur un Mac).

  1. il faudrait ouvrir Terminal
  2. dans l'onglet de la fenêtre tu as une application qui attend, les ordres , un shell (normalement, c'est bash).
  3. on va commencer par vérifier que le chemin du plug-in est le bon en tapant :
    Bloc de code:
    ls "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
  4. si c'est bon, on redéfinit temporairement le dossier principal de Java :
    Bloc de code:
    export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
    pour installer le certificat au bon endroit.
  5. il faut, depuis la clef USB, récupérer les certificats à installer et les mettre dans un dossier, disons sur le bureau ;
  6. [étape à compléter] il faut déterminer quelques paramètres :
    1. quel est le magasin à utiliser pour y stocker le certificat ;
    2. quel alias donner au certificat : à mon avis, tu choisis ce que tu veux de bien explicite, mais pour s'éviter les ennuis idiots, autant prendre un seul mot, sans espace ni caractère accentué (la codification reste un maillon faible en informatique...)
  7. on va les importer avec l'outil ad hoc, keytool ;
    1. en admettant qu'on appelle le magasin "magasin" (normalement, c'est toi qui gère tes magasins et tu devrais pouvoir organiser cela comme bon te semble) ;
    2. que l'alias du certificat choisi serait "Brol" ;
    3. que ton certificat s'appelle "UnCertainCertificat.cer" et que tu l'aies déposé sur le bureau ;
    4. ça nous donnerait :
      Bloc de code:
      $JAVA_HOME/bin/keytool -importcert -file "$HOME/Desktop/UnCertainCertificat.cer" -keystore magasin -alias "Brol"
  8. répéter la même opération pour chaque certificat reçu, en conservant, en toute logique, le même nom de magasin.
  9. fermer puis réouvrir le navigateur utilisé.
Il reste quelques inconnues mais ça vaut le coup de le tenter.

S'il n'y a rien de confidentiel, j'aimerais bien avoir la procédure proposée initialement par le fournisseur du certificat : ça peut nous éclairer sur certaines options.
Wow! Merci. Je vais essayer (mais pas avant lundi...). Et je vous fais passer totes les infos du fournisseur et du certificat. Si ca peut aider d'autres utilisateurs!
En tout cas, les plateformes de dematerialisation ne sont pas formées ni assez compétentes pour nous aider à ce niveau (surtout quand on est sur mac).
 
De retour à la maison, j'ai fait un petit essai.
Suivant les recommandations de la documentation (cf. ici), j'ai commencé par télécharger les certificats de CertEurope, ceux qui la qualifient comme autorité de certification :
Bloc de code:
CertEurope_eID_Root.cer
CertEurope_eID_User.cer
certeurope_advanced_v4.cer
certeurope_root_ca_3.cer
Puis je les ai successivement intégrés dans le magasin cacerts, magasin des autorités de certification, du plug-in Internet.
Bloc de code:
  sudo "$JAVA_HOME/bin/keytool" -importcert -file "./CertEurope_eID_Root.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -alias "CertEurope_eID_Root"
  sudo "$JAVA_HOME/bin/keytool" -importcert -file "./CertEurope_eID_User.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -alias "CertEurope_eID_User"
  sudo "$JAVA_HOME/bin/keytool" -importcert -file "./certeurope_root_ca_3.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -alias "CertEurope_root_ca_3"
  sudo "$JAVA_HOME/bin/keytool" -importcert -file "./certeurope_advanced_v4.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -alias "CertEurope_advanced_v4"
Pour ce faire, je me suis positionné dans le dossier où je les avais enregistrés.
Tu noteras que je leur ai donné un alias homonyme pour ne pas me compliquer la vie.
Par ailleurs, toutes les doubles quotes sont nécessaires pour que les commandes marchent bien.
Enfin :
  • sudo te demandera ton mot de passe, à taper en mode "aveugle" ; si tu enchaînes les commandes, il ne te le demandera plus ;
  • keytool te demandera le mot de passe du magasin de certificats, qui est : changeit (et que Apple n'a pas changé, donc...)
Cela n'empêche pas de les intégrer aussi un peu partout : dans Firefox, dans le trousseau etc. si on le souhaite.
 
Bonjour,

Nous avons tenté :

Bloc de code:
"$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/CertEurope_eID_Corp.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -trustcacerts -alias  "CertEurope_eID_Corp "

"$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/CertEurope_eID_Root.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -trustcacerts -alias  "CertEurope_eID_Root"

"$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/CertEurope_eID_User.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -trustcacerts -alias  "CertEurope_eID_User"

"$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/CertEurope_eID_Website.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -trustcacerts -alias  "CertEurope_eID_Website"

"$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/certeurope_root_ca_3-2.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -trustcacerts -alias  "certeurope_root_ca_3-2"

"$JAVA_HOME/bin/keytool" -importcert -file "$HOME/Desktop/certeurope-standard-ca.cer" -keystore "$JAVA_HOME/lib/security/cacerts" -trustcacerts -alias  "certeurope-standard-ca.cer"

Le journal de la console de l'appli JAVA de dépôt dématérialisé indique cette ligne :

Bloc de code:
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-Gemalto

Cela pourrait-il avoir un lien ?
Malgré l'ajout un à un rien n'est visible dans les applications ou logiciels de signature Java. Auriez-vous d'autres solutions à me communiquer ? Merci de votre aide.
HK
 
Dernière édition:
Lorsque vous avez passé les commandes, y a-t-il eu des messages d'erreurs ?
Vous pouvez vérifier que les certificats ont bien été enregistrés avec la commande en listant les certificats contenus dans le trousseau du plug-in :
Bloc de code:
"$JAVA_HOME/bin/keytool" -list -keystore "$JAVA_HOME/lib/security/cacerts"

Quant au message, c'est sans doute important. En mode commande, en ajoutant une option au lancement d'une application Java, on passe outre aisément, semble-t-il (cf. ici, par exemple). Mais dans le cas d'une applet dans un navigateur, il faut changer quelque chose dans la configuration et je ne sais pas où (pour le moment). Je vais fouiller un peu plus...
 
Normalement, lorsque JAVA_HOME pointe vers l'installation générale de Java, l'algorithme demandé se trouve dans la bibliothèque $JAVA_HOME/jre/lib/ext/sunpkcs11.jar
Dans le cas du plug-in, peut-être faut il l'ajouter aussi pour qu'il soit pris en compte. C'est sans doute un dossier analogue mais je ne peux pas vérifier lequel pour le moment.
 
La bibliothèque se trouve bien dans un sous-dossier du plug-in Java (en tout cas sous Sierra, mais ça doit être le cas en général).
Il faut donc trouver le moyen de forcer la main au navigateur pour lui rappeler de l'utiliser...
 
Bonjour,

Merci de votre aide. Je vous copie-colle toutes les étapes entrées dans le Terminal pour que vous puissiez peut-être y voir plus clair (le message étant trop long j'ai réduit la partie empreinte du certificat) :

Bloc de code:
Last login: Tue Sep 18 16:12:44 on console
mc0604-01:~ alice.g$ "$JAVA_HOME/bin/keytool" -list -keystore "$JAVA_HOME/lib/security/cacerts"
-bash: /bin/keytool: No such file or directory
mc0604-01:~ alice.g$ ls "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
COPYRIGHT                THIRDPARTYLICENSEREADME.txt
CertEurope_eID_Corp.cer            Welcome.html
CertEurope_eID_Root.cer            bin
CertEurope_eID_User.cer            certeurope-standard-ca.cer
CertEurope_eID_Website.cer        certeurope_root_ca_3-2.cer
LICENSE                    lib
Pierre_GARDONI.cer            man
README                    release
THIRDPARTYLICENSEREADME-JAVAFX.txt
mc0604-01:~ alice.g$ export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
mc0604-01:~ alice.g$ "$JAVA_HOME/bin/keytool" -list -keystore "$JAVA_HOME/lib/security/cacerts"
Entrez le mot de passe du fichier de clés : 
Type de fichier de clés : jks
Fournisseur de fichier de clés : SUN

Votre fichier de clés d'accès contient 114 entrées

Empreinte du certificat (SHA1) : B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9D
digicertassuredidg3 [jdk], 25 août 2016, trustedCertEntry,
Empreinte du certificat (SHA1) : 36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54
certeurope-standard-ca.cer, 17 sept. 2018, trustedCertEntry,
Empreinte du certificat (SHA1) : ED:A4:DD:DB:E1:27:F7:4C:DA:B8:87:F4:0D:5E:CE:CF:40:B6:47:81
digicerttrustedrootg4 [jdk], 25 août 2016, trustedCertEntry,
Empreinte du certificat (SHA1) : DD:FB:16:CD:49:31:C9:73:A2:03:7D:3F:C8:3A:4D:7D:77:5D:05:E4
certeurope_eid_user, 17 sept. 2018, trustedCertEntry,
Empreinte du certificat (SHA1) : 05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43
digicertglobalrootg2 [jdk], 25 août 2016, trustedCertEntry,
Empreinte du certificat (SHA1) : DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4
pierregardoni, 17 sept. 2018, trustedCertEntry,
Empreinte du certificat (SHA1) : F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC
digicertassuredidg2 [jdk], 25 août 2016, trustedCertEntry,
certeurope_eid_website, 17 sept. 2018, trustedCertEntry,
Empreinte du certificat (SHA1) : 4D:23:78:EC:91:95:39:B5:00:7F:75:8F:03:3B:21:1E:C5:4D:8B:CF
digicertglobalrootca [jdk], 25 août 2016, trustedCertEntry,
Empreinte du certificat (SHA1) : A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
mc0604-01:~ alice.g$ $JAVA_HOME/jre/lib/ext/sunpkcs11.jar
-bash: /Library/Internet: No such file or directory
mc0604-01:~ alice.g$

Ci dessous la fin du journal console JAVA d'une application de dépôt dématérialisée de la région Auvergne Rhône Alpes :
Bloc de code:
2018-09-18 16:36:47 c.a.s.j.ApplicationSignatureSwing - les parametres plateforme ne sont pas presents originePlateforme, origineOrganisme, origineItem, origineContexteMetier
javax.swing.UnsupportedLookAndFeelException: [The Microsoft Windows Look and Feel - com.sun.java.swing.plaf.windows.WindowsLookAndFeel] not supported on this platform
    at javax.swing.UIManager.setLookAndFeel(UIManager.java:526)
    at javax.swing.UIManager.setLookAndFeel(UIManager.java:583)
    at com.atexo.serveurCryptographique.jnlp.SignatureTable.<init>(SignatureTable.java:57)
    at com.atexo.serveurCryptographique.jnlp.ApplicationSignatureSwing.<init>(ApplicationSignatureSwing.java:100)
    at com.atexo.serveurCryptographique.jnlp.ApplicationSignatureSwing.main(ApplicationSignatureSwing.java:131)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:748)
Type de provider : APPLE
Recherche de la librairie : /usr/local/lib/ClassicClient/libgclib.dylib

Nous cherchons toujours la solution car pour l'instant il n'y a pas lien entre les certificats et les applications JAVA qui se fait.
 
Le message d'erreur indique un problème d'interface : le programme Java ne parvient pas à trouver une bibliothèque du système.

Si on reprend du début :
  • tu as macOS El Capitan ;
  • tu as installé le pilote Gemalto dans le système ? On devrait le voir actif avec la commande :
    Bloc de code:
    kextstat
  • tu as installé les quatre certificats de CertEurope dans le magasin de certificats de Firefox ; pour chacun :
    • l'enregistrer sur le disque ;
    • dans les Préférences de Firefox aller sur Vie Privée et sécurité / Certificats, afficher les certificats
    • importer le certificat : il doit apparaitre dans la liste.
  • tu as enregistré les certificats dans le le magasin du plug-in Internet Java du système ;
    => on les voit bien dans la liste que tu as posté
  • tu as enregistré la clef dans la liste des périphériques de sécurité reconnus par Firefox :
    • dans les Préférences de Firefox aller sur Vie Privée et sécurité / Certificats, cliquer sur "Périphériques de sécurité"
    • Normalement, il doit y avoir Gemalto dans la partie gauche de la fenêtre
  • tu as installé Trusted Key Manager
 
Le message d'erreur indique un problème d'interface : le programme Java ne parvient pas à trouver une bibliothèque du système.

Si on reprend du début :
  • tu as macOS El Capitan ;
  • tu as installé le pilote Gemalto dans le système ? On devrait le voir actif avec la commande :
    Bloc de code:
    kextstat
  • tu as installé les quatre certificats de CertEurope dans le magasin de certificats de Firefox ; pour chacun :
    • l'enregistrer sur le disque ;
    • dans les Préférences de Firefox aller sur Vie Privée et sécurité / Certificats, afficher les certificats
    • importer le certificat : il doit apparaitre dans la liste.
  • tu as enregistré les certificats dans le le magasin du plug-in Internet Java du système ;
    => on les voit bien dans la liste que tu as posté
  • tu as enregistré la clef dans la liste des périphériques de sécurité reconnus par Firefox :
    • dans les Préférences de Firefox aller sur Vie Privée et sécurité / Certificats, cliquer sur "Périphériques de sécurité"
    • Normalement, il doit y avoir Gemalto dans la partie gauche de la fenêtre
  • tu as installé Trusted Key Manager
Je teste demain, je te redis ça. Pas eu le temps de vérifier. Mon collègue a tout repris dans l'ordre.. et ca ne marche pas. Je tente en faisant une désinstallation et réinstallation.