Précédent   Forum du club des développeurs et IT Pro > Java > Développement Web en Java > Applets
Applets Vos questions sur les Applets
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/10/2004, 16h15   #1
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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.
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2004, 12h13   #2
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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 :
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 :
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 :
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
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2004, 19h00   #3
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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 :
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)
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/05/2005, 18h12   #4
JHelp
Membre actif
 
Avatar de JHelp
 
Inscription : octobre 2002
Messages : 185
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 185
Points : 189
Points : 189
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
JHelp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2005, 07h43   #5
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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 ?
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2005, 10h03   #6
JHelp
Membre actif
 
Avatar de JHelp
 
Inscription : octobre 2002
Messages : 185
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 185
Points : 189
Points : 189
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
JHelp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2005, 07h25   #7
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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)
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2005, 13h22   #8
Pill_S
Membre Expert
 
Avatar de Pill_S
 
Homme Sébastien Piller
Consultant informatique
Inscription : janvier 2004
Messages : 1 632
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Piller
Âge : 29
Localisation : Suisse

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 632
Points : 2 131
Points : 2 131
Envoyer un message via MSN à Pill_S
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 :
1
2
3
 
System.setOut(new PrintStream(new FileOutputStream("out.log")));
System.setErr(new PrintStream(new FileOutputStream("err.log")));
__________________
gg
Pill_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2005, 17h37   #9
sorcier3
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
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
sorcier3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2005, 10h42   #10
miloux32
Membre éprouvé
 
Avatar de miloux32
 
Inscription : juillet 2003
Messages : 538
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 538
Points : 473
Points : 473
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 :
 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 ...
miloux32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2005, 12h23   #11
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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)
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2005, 21h52   #12
sorcier3
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
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
sorcier3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 07h31   #13
Fladnag
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 241
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 241
Points : 1 426
Points : 1 426
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)
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 19h07   #14
sorcier3
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
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
sorcier3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2006, 16h11   #15
fxp17
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 82
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 82
Points : 25
Points : 25
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 :
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!!!
fxp17 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 12h05   #16
sam_c_java
Invité régulier
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 7
Points : 7
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,
sam_c_java est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 15h57   #17
ycf125tech
Invité de passage
 
Inscription : mai 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 12
Points : 2
Points : 2
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
ycf125tech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2007, 18h17   #18
Vitaly
Invité de passage
 
Étudiant
Inscription : juin 2007
Messages : 27
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2007
Messages : 27
Points : 4
Points : 4
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°
Vitaly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 00h48   #19
Vitaly
Invité de passage
 
Étudiant
Inscription : juin 2007
Messages : 27
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2007
Messages : 27
Points : 4
Points : 4
Coucou

Petit rafraichissement pour le remettre d'actualité.

@ tchaOo°
Vitaly est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h38.


 
 
 
 
Partenaires

Hébergement Web