2014-06-24 2 views
1

Je suis en train de m'auto-signer une applet Java. L'applet se compose d'une seule classe appelée TestApplet et fonctionne correctement dans la visionneuse d'applets Eclipse. L'applet est empaquetée dans un fichier jar qui est signé à l'aide d'un fichier de clés.Applets Java à signature automatique

jarsigner -keystore ..\.keystore bin\TestApplet.jar myalias 

qui sorti « pot signé » Et un message d'avertissement: « Le certificat du signataire expirera dans les 6 mois »

J'ai téléchargé les fichiers vers une page Web publique et l'exécution de l'applet dans un navigateur Web mais a reçu un message d'erreur: "Application bloquée par les paramètres de sécurité" et ne peut pas exécuter l'applet. Si je change le niveau de sécurité à moyen, j'obtiens un message d'avertissement: "Une application non signée de l'emplacement ci-dessous demande l'autorisation de s'exécuter." et je peux obtenir l'applet pour courir. Mais l'applet doit fonctionner sur d'autres ordinateurs donc cette solution est inadéquate. Si je télécharge le fichier jar depuis l'hôte, je peux le vérifier.

jarsigner -verify TestApplet.jar 

qui sorti « pot vérifié »

Alors, pourquoi le fichier jar ne semble être non signé lorsqu'il est lancé à partir d'un navigateur Web, mais signé quand elle est cochée avec jarsigner? La seule chose à laquelle je peux penser est que TestApplet.jar est complètement ignoré. Il est possible d'exécuter l'applet sans spécifier le paramètre archive.

Voici la structure des fichiers.

bin/TestApplet.class 
bin/TestApplet.jar 
index.html 

Voici le code que j'utilise pour ajouter l'applet java à la page Web.

<object type="application/x-java-applet" width="100" height="100"> 
    <param name="codebase" value="bin" /> 
    <param name="archive" value="bin/TestApplet.jar" /> 
    <param name="code" value="TestApplet" /> 
</object> 

EDIT: Si cela fait une différence, les applets seront exécutées sur un réseau local non connecté à Internet.

+0

La plupart des navigateurs considèrent «unsigned» et «self signed» comme étant la même chose, puisqu'ils n'ont aucun moyen de vérifier que vous êtes bien celui avec qui vous dites être un cert auto-signé. – aruisdante

+6

Les fichiers JAR non signés et auto-signés ont été plus ou moins abandonnés par Oracle. En utilisant les paramètres de sécurité par défaut, la seule façon d'exécuter les applets dans le navigateur est de les signer en utilisant une véritable autorité de certification. – whiskeyspider

+2

Voici une source de leur annonce de sécurité: https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias – user1071777

Répondre

3

Les applets auto-signées ne sont plus fiables. Vous devez signer vos bocaux avec un certificat de signature de code émis par une autorité de certification de confiance.

La raison pour laquelle jarsigner dit jar vérifié est parce qu'il est en effet signé correctement et remplir l'un des objectifs de signature, qui est d'assurer l'intégrité. Il s'assure que votre jar n'a pas été modifié, ce qui est correct lors de la distribution de votre jar, mais pas dans le contexte d'une applet, où nous devons également savoir qu'il provient d'une source fiable.