web-dev-qa-db-ja.com

ブラウザで使用するためにJavaアプレットに署名するにはどうすればよいですか?

JavaアプレットをWebサイトにデプロイしようとしています。クリップボードにアクセスする必要があるため、署名する必要もあります。成功していません。これまでに行ったことがあります。

  • NetBeansでアプレットを作成しました。アプレットビューアで正常に動作します。
  • それから.jarファイルを作成しました。
  • これを実行して証明書を作成しました。
keytool -genkey -keyalg rsa -alias myKeyName
keytool -export -alias myKeyName -file myCertName.crt
  • 次のようにjarsignerで署名しました:
jarsigner "C:\my path\myJar.jar" myKeyName
  • これを含むhtmlファイルを作成しました。
<html>
  <body>
<applet code="my/path/name/myApplet.class" archive="../dist/myJar.jar"/>
  </body>
</html>

そのhtmlファイルを開くと、セキュリティ確認ダイアログボックスが表示されません(したがって、「Java.security.AccessControlException:access denied」エラーが表示されます)。これはすべてのブラウザーで発生します。

ステップがありませんか?

40
user107312

おそらく、あなたはいくつかの.classファイルを開いているからでしょう外部 jarファイル?

そのようにすると、警告が表示されない場合があります。そのようにしてみましたが、まだ証明書の警告が表示され、簡単な場合、実際には、分離されたクラスを持つJARからクラスにアクセスできませんでした。

特定のセットアップまたはファイル編成がその動作を引き起こす可能性があります。それをより詳細にレイアウトできる場合は、さらに役立つ可能性があります(または、すべての.classファイルをさらに別の署名済みJarに入れて、アーカイブに追加してみてください... "、anotherJar.jar")。

7
EdSG

3つの簡単なステップ

  1. keytool -genkey -keystore myKeyStore -alias me

  2. keytool -selfcert -keystore myKeyStore -alias me

  3. jarsigner -keystore myKeyStore jarfile.jar me

29
nuno_cruz

最初に、有効なコード署名証明書を取得することをお勧めします。 Thawte から無料の証明書を取得できます。通常、これらの証明書はS/MIMEに使用されますが、コード署名にも有効です。

2番目のオプションは、ブラウザーが呼び出しているJREのcacertファイルに自己署名証明書をインポートすることです。

次に確認することは、ブラウザーが最新のjarを実行していることを確認することです。これを行う1つの方法は、常にバージョン番号を増やすことです。もう1つのオプションは、Javaアプレットキャッシュをクリアすることです。通常はブラウザのキャッシュもクリアしますが、これは必要ありません。

1
brianegge

Jarに署名してから、すべてのクラスファイルがキーストアで署名されていることを確認する方法を次に示します。

#!/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
1
Milhous

あなたは言った:

そのhtmlファイルを開くと、セキュリティ確認ダイアログボックスが表示されません...

ローカルファイルシステムからファイルを開いていますか、またはHTMLファイルとアプレットjarをホストしているWebサーバーへのURLを介してファイルを開いていますか?そのため、警告が表示されません。

1
monceaux