J'essaie de déployer une applet Java sur mon site Web. Je dois également la signer, car je dois accéder au presse-papiers. J'ai suivi tous les didacticiels de signature que j'ai pu trouver mais que j'ai pas eu de succès. Voici ce que j'ai fait jusqu'à présent:
keytool -genkey -keyalg rsa -alias myKeyName keytool -export -alias myKeyName -file myCertName.crt
jarsigner "C:\my path\myJar.jar" myKeyName
<html> <body> <applet code="my/path/name/myApplet.class" archive="../dist/myJar.jar"/> </body> </html>
Lorsque j'ouvre ce fichier html, je n'obtiens jamais la boîte de dialogue de confirmation de la sécurité (et donc j'obtiens l'erreur "Java.security.AccessControlException: accès refusé"). Cela se produit sur tous les navigateurs.
Suis-je en train de manquer une étape?
C'est peut-être parce que vous ouvrez des fichiers .class extérieur le fichier jar?
De cette façon, il peut ne pas afficher l'avertissement. J'ai essayé de le faire de cette façon, mais cela m'a toujours montré l'avertissement de certificat et pour un cas simple, cela m'a en fait empêché d'accéder à une classe du JAR avec la classe séparée.
Peut-être que votre configuration ou organisation de fichiers spécifique provoque ce problème. Si vous pouvez disposer cela plus en détail, nous pourrions vous aider mieux (ou plutôt, essayez de mettre tous ces fichiers .class dans un autre Jar signé et ajoutez-le à l'archive "..., anotherJar.jar").
3 étapes faciles
keytool -genkey -keystore myKeyStore -alias me
keytool -selfcert -keystore myKeyStore -alias me
jarsigner -keystore myKeyStore jarfile.jar me
Tout d'abord, je suggère d'obtenir un certificat de signature de code valide. Vous pouvez obtenir un certificat gratuit auprès de Thawte . Bien que ces certificats soient généralement utilisés pour S/MIME, ils sont également valables pour la signature de code.
La deuxième option consiste à importer votre certificat auto-signé dans le fichier cacert du JRE que votre navigateur invoque.
La prochaine chose à vérifier est de vous assurer que votre navigateur exécute votre dernier pot. Une façon de procéder consiste à toujours incrémenter votre numéro de version. L'autre option est pour vous de vider votre cache d'applet Java. J'efface généralement le cache de mon navigateur également, mais cela ne devrait pas être nécessaire.
Voici un moyen de signer vos fichiers jar puis de vérifier que tous les fichiers de classe sont signés avec votre fichier de clés.
#!/bin/bash
KEYSTORE=/home/user/NetBeansProjects/sign/keystore
FILES=`find /home/user/NetBeansProjects/Project/dist/ -name "*.jar"`
for f in $FILES;
do echo password | /usr/bin/jarsigner -keystore $KEYSTORE -verbose $f myself;
echo "Signed $f";
/usr/bin/jarsigner -verify -verbose -certs $f | grep X.509 | sort -u;
done
Vous avez mentionné:
Lorsque j'ouvre ce fichier html, je n'ai jamais la boîte de dialogue de confirmation de sécurité ...
Ouvrez-vous le fichier à partir de votre système de fichiers local ou via une URL vers un serveur Web hébergeant le fichier HTML et le ou les pots d'applet? Cela pourrait être la raison pour laquelle vous ne recevez aucun avertissement.