IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

[Securité][Applet signée] Compatible PARTOUT : Solutions !! [FAQ]


Sujet :

Applets Java

  1. #1
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut [Securité][Applet signée] Compatible PARTOUT : Solutions !!
    Bonjour !

    Je cherche a faire une applet qui fonctionne a peu pres partout.
    Cette applet a besoin d'ouvrir une socket sur le poste client (car l'applet sera serveur pour d'autres applets).

    Je sais faire cela en Java 1.4.2 en signant l'applet.

    Je n'arrive pas a faire cela en Java 1.1.4 (car il faut que mon applet soit compatible java 1.1.4 pour tourner sur une jvm microsoft, car de la plupart des postes clients)

    J'ai essayé de signer mon applet en java 1.1, mais ca ne fonctionne pas, je n'ai toujours pas la permission d'ouvrir ma socket ;o)

    Je sais qu'il existe des failles de sécurité dans java 1.1.4 permettant de contourner ce probleme... donc j'en suis réduit a 2 extremités :
    1) trouver comment signer une applet "normalement" en java 1.1 afin de pouvoir ouvrir ma socket (sans avoir a rajouter un fichier certificat sur le poste client, par contre, un pop up ca me dérange pas)
    2) utiliser les failles de sécurité du 1.1.4 pour executer ce que je veux (c'est pas joli, mais tant que ca marche, c'est pas grave ;o)

    Je precise que je veux pas développer un truc mechant, mais je vois pas d'autres moyens pour faire ce que je veux (applet de jeu de plateau style echecs sans serveur central)

    Merci ;o)

    Edit : mon applet sera faite pour tourner avec 2 jre : 1.1.4 et 1.4.2 ou superieur. Je prend pour politique que quelqu'un qui a deja mis a jour son plug in le fera de nouveau, donc je n'ai pas besoin de me préoccuper des versions intermediaires.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Bon, apres avoir téléchargé le SDK de Kro$oft (berk), j'ai pu signer un morceau de code pour l'applet cliente.

    Mais meme apres acceptation du certificat de sécurité, je n'arrive pas a ouvrir une socket sur le client !

    j'ai ce code pour verifier avant que j'ai le droit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            System.out.print("Test du droit : IO Reseau : ");
        	try {
        	    com.ms.security.PolicyEngine.assertPermission(com.ms.security.PermissionID.NETIO);
        	    com.ms.security.PolicyEngine.checkPermission(com.ms.security.PermissionID.NETIO);    	    
        	    System.out.println("OK");
        	} catch (Exception e) { 
        	    System.out.println ("FAIL"); 
        	}
    et ce code me renvoie "OK".

    Or, il est dit dans la doc que NETIO correspond a la classe de Permission com.ms.security.permissions.NetIOPermission class.

    NETIO : The permission identifier representing the permission type that controls networking operations. This identifier corresponds to the permission implementation in the com.ms.security.permissions.NetIOPermission class.

    Mais lorsque je balance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	    System.out.print("Ecoute sur le port 1800 :");
     
    	    try {
    	        System.getSecurityManager().checkListen(1800);
    	        System.out.println("OK");
    	    } catch(SecurityException ex) {
    	        System.out.println("Non autorisé");
    	    } catch(Exception ex2) {
    	        System.out.println("Autre erreur : \n\t"+ex2.getLocalizedMessage());
    	    }
    j'obtiens "Non autorisé" et l'exception suivante s'affiche dans la console (meme si je lui ai rien demandé, mais bon, c'est Kro$oft, ca m'etonne pas...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Ecoute sur le port 1800:com.ms.security.SecurityExceptionEx[Base.test]: cannot access 1800
    	at com/ms/security/permissions/NetIOPermission.check
    	at com/ms/security/PolicyEngine.deepCheck
    	at com/ms/security/PolicyEngine.checkPermission
    	at com/ms/security/StandardSecurityManager.chk
    	at com/ms/security/StandardSecurityManager.checkListen
    	at Base.test
    	at Base.isConfigOk
    	at Base.start
    	at com/ms/applet/AppletPanel.securedCall0
    	at com/ms/applet/AppletPanel.securedCall
    	at com/ms/applet/AppletPanel.processSentEvent
    	at com/ms/applet/AppletPanel.run
    	at java/lang/Thread.run
    Non autorisé
    A votre avis, ca vient de mon code ou bien le SDK de Kro$oft est vraiment pourri et j'oblige mes utilisateurs a installer celui de Sun ?

    Edit : j'ai essayé avec d'autres numeros de port, aussi bien avant 1024 qu'apres sans changement

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Bon, apres une semaine de recherche, j'ai enfin réussi a faire ce que je souhaite.

    Je vous livre la solution complete. Je réunirais ainsi sur une seule page les 4 ou 5 pages essentielles qui m'ont permis d'arriver a ce résultat.

    Question : Comment faire une applet fonctionnant PARTOUT !
    (i.e. : fonctionnant avec Java 1.1.4 de Microsoft et avec JDK 1.4.2 de Sun ET avec les droits étendus (pour mon test, j'ai mis tout les droits, a vous de trifouiller dans les options pour etre plus selectifs))

    ********************
    ** Regles de base **
    ********************

    * Utiliser les classes et les methodes de Java 1.1 (le JDK de Sun est disponible sur leur site dans la partie "Archive")
    Cela suppose evidemment de ne pas utiliser Swing. AWT pur !

    * Ne pas utiliser de package ! Je sais que ca rend vite le code chiant a relire de pas tout organiser en package bien propre, mais apparement, il trouve pas la classe principale quand elle est dans un package sous Java 1.1.4

    * Ne pas utiliser RMI... hélas, Microsoft n'a pas implémenté RMI. Il faudra donc utiliser uniquement les sockets pour les communications reseaux, c'est bien pauvre, mais c'est le prix pour une compatibilité optimale

    L'applet doit donc etendre de java.applet.Applet et si on ouvre une nouvelle fenetre, elle doit etendre de java.awt.Frame

    Maintenant, une fois qu'on a fait les classes, il faut signer tout ca ;o)

    Dans toute la suite, les valeurs en gras sont a remplacer par vos valeurs a vous (nom de compagnie, nom de fichiers, etc...)

    Je précise aussi que j'ai fait tout mes tests sous Eclipse 3.0. Mes projets sont organisés en 2 répertoires, "src" et "bin" contenant respectivement les sources .java et les fichiers .class, .jpg ou .gif qui devront etres contenus dans l'applet finale.

    L'OS utilisé est Win 2000 Pro, aussi les fichiers .bat devront etre modifiés legerement pour fonctionner sous d'autres versions (Win9x par exemple)

    ******************************
    ** Signature Java SDK 1.4.2 **
    ******************************

    Il est conseillé de mettre de le répertoire bin/ de l'installation du jdk1.4.2 dans le classpath afin d'acceder plus facilement aux outils de signature.

    0) creation d'un certificat (a faire une seule fois)
    C:/> keytool -genkey -alias Fladnag
    Tapez le mot de passe du Keystore : motdepasse
    Quels sont vos prénom et nom ?
    [Unknown] : Flad Nag
    Quel est le nom de votre unité organisationnelle ?
    [Unknown] : mon unité
    Quelle est le nom de votre organisation ?
    [Unknown] : mon organisation
    Quel est le nom de votre ville de résidence ?
    [Unknown] : ahah, t'as cru que tu pourrais le savoir hein ?
    Quel est le nom de votre état ou province ?
    [Unknown] : Tombouctou
    Quel est le code de pays à deux lettres pour cette unité ?
    [Unknown] : fr
    Est-ce CN=Flad Nag, OU=mon unité, O=mon organisation, L=ahah, t'as cru que tu pourrais le savoir hein ?, ST=Tombouctou, C=fr ?
    [non] : oui
    Spécifiez le mot de passe de la clé pour <Fladnag>
    (appuyez sur Entrée s'il s'agit du mot de passe du Keystore) : motdepasse


    1) Creation d'un .jar (a faire a chaque recompilation)
    C:\Workspace\MonApplet\bin>jar cvf Applet.jar *.*

    2) Signature du .jar (a faire a chaque recompilation)
    C:\Workspace\MonApplet\bin>jarsigner -storepass motdepasse -signedjar SApplet.jar Applet.jar Fladnag

    Le fichier SApplet.jar contient alors l'applet signée.

    Une fichier .bat (situé a la racine du projet) peut evidemment faire ca tout seul :
    @echo off
    del /q *.jar
    cd bin
    echo ** Creation du JAR **
    jar cvf Applet.jar *.*
    move *.jar ..
    cd ..
    echo ** Signature du fichier JAR **
    jarsigner -storepass motdepasse -signedjar SApplet.jar Applet.jar Fladnag
    echo ** Signature OK ! **
    pause


    ****************************************
    ** Signature Microsoft SDK Java 1.1.4 **
    ****************************************

    Tout d'abord, il faut télécharger le SDK de Microsoft.
    Aussi bizarre que cela paraisse, il n'a pas modifié les versions de java que j'avais installé... pour une fois qu'un produit microsoft ne modifie pas l'environnement, faut en profiter ;o)

    On peux facilement le trouver sur google en cherchant : "SDKJava40.exe"

    Une fois installé, on peux également rajouter dans le classpath le chemin jusqu'au répertoire Bin du dossier d'installation (il vaux mieux mettre le chemin apres le chemin du SDK de Sun, comme ca il ne va chercher que les fichiers que Sun n'a pas et on n'a pas de mauvaise surprise ;o)

    0) creation des certificats et des clés (a faire une seule fois)
    C:\>makecert -sk KeyFladnag.pvk -n "CN=Fladnag" CertFladnag.cer

    C:\>cert2spc CertFladnag.cer CertFladnag.spc


    1) creation de l'archive .cab (a faire a chaque recompilation)
    C:\Workspace\MonApplet\bin>cabarc -r N Applet.cab *.*

    2) Signature du fichier .cab (a faire a chaque recompilation)
    C:\Workspace\MonApplet\bin>signcode -j JavaSign.dll -jp Low -spc CertFladnag.spc -k KeyFladnag.pvk -n "Mon Applet" -i http://www.monsite.com/explication_signature.html Applet.cab

    Le mot clé "Low" indique que l'applet aura tout les droits. On peux utiliser "High" pour en demander moins. On peux egalement faire un fichier spécifique pour demander juste les droits requis.

    http://www.monsite.com/explication_signature.html
    est juste une url vers laquelle l'internaute sera envoyé si il click sur le nom de l'application (ici "Mon Applet") lors de l'affichage du certificat de sécurité

    La encore le fichier "Applet.cab" contient l'archive signée.

    Comme auparavant, on peux faire un .bat :
    @echo off
    del /q *.cab
    cd bin
    echo ** Creation du CAB **
    cabarc -r N Applet.cab *.*
    move *.cab ..
    cd ..
    echo ** Signature du fichier CAB **
    signcode -j JavaSign.dll -jp Low -spc CertFladnag.spc -k KeyFladnag.pvk -n "Mon Applet" -i http://www.monsite.com/explication_signature.html Applet.cab
    echo ** Signature OK ! **
    pause


    *************************************************
    ** Adaptation du code pour la JVM de Microsoft **
    *************************************************

    Vous croyez que Microsoft c'est aussi simple que ca ?
    et bien non, evidemment ;o)
    Il faut rajouter quelques trucs dans le code pour que ca fonctionne correctement.

    Tout d'abord, si vous compilez sous Eclipse, vous aurez besoin des classes de Microsoft :

    1) Installation des classes Microsoft dans Eclipse
    Les classes se trouvent dans le fichier Bin\ClassR.exe du dossier d'installation du SDK de Microsoft. C'est un fichier executable, mais ca a pas marché chez moi ;o) peut importe, il suffit de le décompacter avec WinRAR ou WinZIP. A l'interieur, on trouve encore un fichier .zip : "classes.zip". Pas besoin de le décompresser celui la.
    Dans Eclipse, click droit sur le projet de l'applet/Properties/Java Build Path/Libraries/Add External Jar...
    et on selectionne le "classes.zip" de Microsoft.

    2) Validation des droits dans le code (et oui, y a pas ca chez Sun ;o)
    Tout d'abord, il faut savoir qu'on ne peux pas avoir de droits etendus sur une applet dans le Thread courant de l'Applet (ca serait trop simple !)

    Il faut donc avant toute chose creer un autre Thread et dans la methode run() acceder aux ressources que l'on souhaite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    public class MonApplet extends Applet {
       private MonThread t;
       public void start() {
          t=new MonThread();
          t.start();
       }
     
       public class MonThread extends Thread {
          public void run() {
     
             // verification de base : on est sur une machine microsoft ?
             if (System.getProperty ("java.vendor").startsWith ("Microsoft")) {
                System.out.println("On est sur une jvm Microsoft");
     
                // verification poussée : on a bien les classes qu'il faut ?            
                try {
                   if (Class.forName("com.ms.security.PermissionID")==null) return;
                } catch(Exception ex) {
                   return;
                }
     
     
                // enregistrement des permissions de l'applet
                // Ici, on enregistre les droits réseaux. 
                try {
                   com.ms.security.PolicyEngine.assertPermission(com.ms.security.PermissionID.NETIO);
                } catch (Exception e) { 
                   System.out.println ("Impossible d'obtenir la permission demandée"); 
                   return;
                }
             } // end du if( on est sur une machine microsoft)
     
             // verification avec l'API de Sun qu'on a bien les droits demandés
             // Soit on a executé le if ci dessus, soit on est sur une machine avec lla jvm de Sun, dans ce cas là, c'est l'archive .jar signée qui est executée et on a les droits en principe.
     
             // Récupération du SecurityManager
             SecurityManager sm=null;
             try {
                sm=System.getSecurityManager();
             } catch(Exception ex) {
                System.out.println("Impossible de récuperer le SecurityManager");
                return;
             }
     
             try {
                sm.checkListen(1800);
                System.out.println("Notre Applet peux écouter le port 1800 !");
             } catch(SecurityException ex) {
                System.out.println("Ah, on peux pas écouter le port 1800");
             } catch(Exception ex2) {
                System.out.println("Autre erreur : \n\t"+ex2.getLocalizedMessage());
             }
          } // end du run()
       } // end de l'inner class MyThread
    } // end de la classe MonApplet
    Ici, je n'ai donné que les droits de faire des Entrees Sorties Reseau (NETIO), mais on pourrais donner des droits differents, comme les entrées sorties fichiers, l'acces a la base de registre windows, ou encore toutes les permissions tout simplement ;o)

    Le code qui verifie qu'on est bien sur une machine java microsoft et que les classes sont bien présentes avec le Class.forName est necessaire parce que meme si on a 2 archives, une pour chaque version de la jvm, c'est le meme code source compilé qu'on execute

    ****************************************
    ** Fichier HTML générique de l'applet **
    ****************************************

    La derniere étape : Le fichier html.

    Là encore, j'ai trouvé une methode pour avoir meme fichier HTML pour IE et pour les autres navigateurs. Sinon, il aurais fallu detecter la jvm en PHP ou autre pour afficher le bon code html.
    voila donc les balises pertinentes :


    <applet codebase="http://www.monsite.com/applet/" archive="SApplet.jar" code="MonApplet.class" width="300" height="300">
    <param name="archive" value="SApplet.jar">
    <param name="cabbase" value="Applet.cab">
    <param name="language" value="FR">
    <b>Your browser isn't Java compatible.<br>Votre navigateur n'est pas compatible Java.</b>
    </applet>


    L'url du codebase est très importante, ca ne fonctionneras pas sans elle.

    Les 2 fichiers (.jar et .cab) doivent exister et etre accessibles aux URL suivantes (en gardant les noms des exemples) :
    http://www.monsite.com/applet/SApplet.jar
    http://www.monsite.com/applet/Applet.cab

    **********************************
    ** Quelques liens de références **
    **********************************

    Signer une applet Java Microsoft JDK : http://www.ducrot.org/java/Securite.htm (2eme partie de la page)
    Liste des permissions pour le Microsoft JDK : http://ns.ensicaen.ismra.fr/dp/java/PermissionID.htm
    L'astuce du thread :
    * https://lists.xcf.berkeley.edu/lists...er/000766.html (fin de la page)
    * http://support.microsoft.com/default...b;en-us;175622 (La page officielle de microsoft... pas sur que ca serve a quelque chose mais bon ;o)

    ************
    ** Astuce **
    ************

    * Pour faire des tests avec la machine virtuelle de Microsoft lors qu'on a un JDK de Sun installé, il suffit de désactiver celui ci pour IE :
    Panneau de Configuration/Java Plug-in/Navigateur/Décocher "Microsoft Internet Explorer"

    * Sous Mozilla, la console Java est dans Tools/Web Developpement/Java Console

    * Sous IE, avec le JDK installé, la console Java est dans Outils/Console Java (Sun)

    * Sous IE, sans le JDK Sun, la console Java de Microsoft est dans Affichage/Console Java (a condition d'avoir coché la case dans Outils/Options Internet/Avancé/"Console Java activée")

    ***************************
    ** Environnement de test **
    ***************************

    Mozilla 1.5 avec JDK 1.4.2_05
    IE 6.0 avec JDK 1.4.2_05
    IE 6.0 avec JDK Microsoft (Java 1.1.4)
    Windows 2000 Pro

    ****************
    ** Conclusion **
    ****************

    Voila ;o)
    J'espere avoir un peu epuisé le sujet !
    N'hesitez pas a mettre cette page dans la FAQ ;o)

  4. #4
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Bonjour,
    En fait j'ai essayé la méthode ci-dessus, en donnant cette fois des droits d'impression, ça marche sur toutes les JVM SUN, et sur Mozilla et IE. Mais, ça ne fonctionne pas avec la JVM m$. Cette derniére ne présente même pas le certificat à l'utilisateur.
    Merci d'avance si quelqu'un peut m'aider.
    JHelp
    Pour avoir une réponse efficace :
    1) Soyez précis dans vos questions
    2) Choisssez bien votre forum
    3) Consultez la FAQ et la doc avant

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    tu n'as aucun message d'erreur dans la console du navigateur ?

    as tu activé les bons droits permettant de faire ca ? (pour tester : com.ms.security.PolicyEngine.assertPermission(com.ms.security.PermissionID.SYSTEM ); correspond a tout les droits)
    accedes tu bien au code en question depuis un autre thread ?
    tu as bien les 2 fichiers (jar et cab) dans le fichier html ?
    tu n'as pas utilisé de packages ?

  6. #6
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Bonjour et merci d'essayer de m'aider,
    Tout d'abbord sur l'ordi de test on a mis la version minimale de Java, soit la JRE 1.1.4 de M$ (Entre nous c'est vraiment pas un cadeau) et le pb, c'est qu'avec cette configuration, on a pas de console, donc les erreurs on les voit pas (c'est tres pratique).
    Ce qui ce passe c'est que l'apllet se lance sans demander le certificat, l'applet tourne, sans pouvoir bien sur imprimer. Le pire c'est que ca marche si on met une JRE de sun version 1.1, c'est ce qui est le plus rageant.
    Pour les droits, oui, j'y est penssé, j'ai même fait le test avec tous les droits possibles d'ouverts, il veut rien savoir.
    Pour le package, oui j'ai tout demonter mes beaux packages pour mettre tout dans le même dossier (Maintenant c'est un beau bazzard)
    Le cab et le jar sont bien dans le même endroit que le html, et le html, c'est le quasi copier-coller de ce que tu as donné
    Bref j'aimais déja pas trop M$, mais là ca dépasse l'entendement je vais finir par devenir chauve à force de m'aracher les cheveux sur ce pb
    Si tu as une idée d'un test à faire, je suis preneur, car j'avoue là je suis à cours d'idée
    Autrement, ben ceux qui ont une jre M$ (La plus m... de la galaxie) ne pouront pas imprimer l'applet
    D'avance merci pour toute suggestion.
    JHelp
    Pour avoir une réponse efficace :
    1) Soyez précis dans vos questions
    2) Choisssez bien votre forum
    3) Consultez la FAQ et la doc avant

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    la solution a mon avis passe par l'installation d'une version plus complete (JDK et pas seulement JVM) de la version de Kro$oft... tu pourras ainsi avoir la console et voir le message d'erreur (car il y en a forcement un ;o)

  8. #8
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    petit conseil: si vous n'avez pas de console pour visualiser les erreurs, redirigez les flux dans des fichiers (en espérant que la jvm M$ vous laisse le faire.......)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.setOut(new PrintStream(new FileOutputStream("out.log")));
    System.setErr(new PrintStream(new FileOutputStream("err.log")));
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Problème signer applet
    Salut tlm

    J'ai mon .spc et mon .pvk donc je tape :

    1) creation de l'archive .cab (a faire a chaque recompilation)
    C:\Workspace\MonApplet\bin>cabarc -r N Applet.cab *.*

    Cette 1ère opération nikel.


    2) Signature du fichier .cab (a faire a chaque recompilation)
    C:\Workspace\MonApplet\bin>signcode -j JavaSign.dll -jp Low -spc CertFladnag.spc -k KeyFladnag.pvk -n "Mon Applet" -i http://www.monsite.com/explication_signature.html Applet.cab

    le par contre, cela me donne ceci :

    C:\Program Files\Microsoft SDK for Java 4.0\Bin>signcode -j JavaSign.dll -jp Low
    -spc mycert.spc -k mykey.pvk -n "Mon applet" -i http://www.url.com/chat/Help_Jav
    aApplet.html Applet.cab
    Error: Signcode Failed. Result = 80004005, (-2147467259)


    J'ai cherché sur le net ce type d'erreur et rien :/ qqn sait quoi faire avec ce genre d'erreur svp ?


    Laurent

  10. #10
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    juste pour dire que j'ai appliqué cela (et j'ai meme posé des questions sur ce forum pour avoir des infos complementaires ) alors je donne mes petits problemes :

    1/ Verifiez bien le contenu du *.cab
    Moi j'ai cherché longtemps, pour me rendre compte que la commande que j'avais tapé (qui venait d'ici je crois ) encapsulé mon *.jar dans mon *.cab et donc java ne trouvait pas les classes. Il faut donc bien sur ne pas faire ca. Le cab et le jar doivent la meme structure.

    2/ Apres ca j'ai eu un bug a cause de la VM de Microsoft.
    En effet, j'effectuais l'ouverture d'un fichier et apparemment quand on effectue l'operation plusieurs fois d'affilée il a pas le temps de bien mener les operations comme il faut. J'ai resolu le pb en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     try { Thread.sleep(10); }catch (Exception e) {}
    dans la methode qui gere l'ouverture.et magique depuis j'ai aucun bug.
    Ce qui est marrant c'est que Sun n'a jamais généré ce probleme ...vive kro$oft ...
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut Re: Problème signer applet
    Citation Envoyé par sorcier3
    le par contre, cela me donne ceci :

    C:\Program Files\Microsoft SDK for Java 4.0\Bin>signcode -j JavaSign.dll -jp Low
    -spc mycert.spc -k mykey.pvk -n "Mon applet" -i http://www.url.com/chat/Help_Jav
    aApplet.html Applet.cab
    Error: Signcode Failed. Result = 80004005, (-2147467259)


    J'ai cherché sur le net ce type d'erreur et rien :/ qqn sait quoi faire avec ce genre d'erreur svp ?
    http://support.microsoft.com/kb/177178/EN-US/
    faut rajouter un parametre apparement lors de l'appel a Cabarc. Si tu comprends pas l'anglais, tu peux essayer la version francaise... mais perso j'ai plus de mal a la comprendre que l'originale ;o) (traduction litterale pourrie ;o)

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Sans succes
    Salut Fladnag,

    je te remercie pour l'info, j'ai essayer mais j'ai obtenu la même erreur.


    Le certificat que j'ai a été delivré par la société " Thawte " et il contient un .spc et un .pvk avec un password (pour le .pvk).

    J'ai cherché sur le net, aucune des solutions ou commande ne fonctionne pour signée cet applet... .

    je m'en rapproche peut-être avec ça :


    C:\inetsdk\bin>signcode.exe -spc mycert.spc -v mykey.pvk -n "Name" -i www.erev
    ia.com -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll MYPRO
    G.EXE
    Error: One or more input parameters are invalid.
    Error: Signing Failed. Result = 80070002, (-2147024894)


    Qu'est-ce que tu en pense ??


    ps : je tire cette doc de : http://forum.vdsworld.com/viewtopic.php?t=2899&sid=cb7e51846ed0680534913c2779a6d127


    Au pire, si tu veux, passe ton msn par mail...


    Merci

  13. #13
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    je ne pense pas que tu te rapproche de la solution etant donné que le message d'erreur que tu obtient parle de parametres invalides... or dans un programme, la logique voudrait qu'on verifie les parametres avant de faire autre chose... signecode va donc a mon avis "moins loin".

    Est-tu sur d'utiliser la bonne version de signcode et du JDK de microsoft ?
    Le fichier d'install du JDK que j'ai utilisé fait 20287624 octets et s'appelle "SDKJava40.exe" (version 5.0.3229.0) avec une signature de microsoft datant de "jeudi 4 mai 2000 22:22:28"
    Le fichier signecode.exe fait 27408 octets, version 5.101.1671.1
    Le fichier cabarc.exe fait 113664 octets, version 1.0.602.2

    ps : ai pas msn, aime pas Kro$oft en fait ;o)

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    oui, j'utilise bien cette version...

    je comprend vraiment pas, j'ai cherché pleins de doc sur le web, j'obtient tjrs la même erreur... je fais pourtant ce qui est dit...


    Laurent

  15. #15
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    bonjour,
    Trés bonnes explications...
    Moi je suis en 1.4.2 j'ai créer mon applet signée...
    Donc normalement que devrai pouvoir avoir accès à l'ensemble
    de l'ordi distant.
    mais j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: C:\Documents and Settings\Administrateur\appli.dll: L'accès à cet emplacement de la mémoire n'est pas valide
    C:\Documents and Settings\Administrateur\appli.dll: L'accès à cet emplacement de la mémoire n'est pas valide
    Est ce que quelqu'un aurait une solution? merci!!!

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 18
    Points
    18
    Par défaut signer une applet java microsoft
    Bonjour,
    Ca fait des heures que j'essaie de signer une applet java microsoft. Mais la commande signcode me retourne toujours la meme erreur:

    Error: Signcode Failed. Result = 80004005

    J'ai beau retourner la commande dans tous les sens, j'ai aussi essayé l'option "-s 6144 de cabarc.exe" mais rien a faire...
    Est ce que qqun a reussi a franchir cette etape?
    Salutations,

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    bonjour a tous,

    Ma machine est un Windows XP Pro
    je devellope sous eclipse Version: 3.1.2

    j'ai télécharger le SDK Java de Microsoft quand je clik sur ClassR.exe celui ci me dit que c'est pas la bonne version...

    quelqu'un a t-il une reponse ??

    Merci d'avance

  18. #18
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Bonjour ^^

    jdk 1.6.0. Je ne trouve pas le fameux ClassR.exe
    La procédure pour signer une applet est elle toujours la même ?

    @ tchaOo°

  19. #19
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Coucou

    Petit rafraichissement pour le remettre d'actualité.

    @ tchaOo°

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. applet signée et securité
    Par melvar0 dans le forum Applets
    Réponses: 2
    Dernier message: 21/11/2006, 17h15
  2. Applet signée! acceptée?
    Par Beuuun dans le forum Applets
    Réponses: 14
    Dernier message: 29/05/2006, 10h54
  3. securité applet versus securité client leger
    Par rherrad dans le forum Applets
    Réponses: 4
    Dernier message: 01/03/2006, 18h01
  4. [Applet] Se lance partout sauf sur Mac ??
    Par Daemonovae dans le forum Applets
    Réponses: 1
    Dernier message: 21/11/2005, 17h18
  5. Réponses: 2
    Dernier message: 08/08/2005, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo