41

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

  • 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:アクセスが拒否されました」というエラーが表示されます)。これはすべてのブラウザで発生します。

手順がありませんか?

4

6 に答える 6

29

3つの簡単なステップ

  1. keytool -genkey -keystore myKeyStore -alias me

  2. keytool -selfcert -keystore myKeyStore -alias me

  3. jarsigner -keystore myKeyStore jarfile.jar me

于 2010-12-22T03:03:45.260 に答える
7

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

そうすれば、警告が表示されない場合があります。そのようにしてみましたが、それでも証明書の警告が表示され、単純なケースでは、分離されたクラスを使用して JAR からクラスにアクセスできませんでした。

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

于 2009-05-26T06:51:49.330 に答える
1

あなたが言及した:

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

ローカルファイルシステムからファイルを開いていますか、それともHTMLファイルとアプレットjarをホストしているWebサーバーへのURLを介して開いていますか?これが、警告が表示されない理由である可能性があります。

于 2009-05-26T05:08:37.973 に答える
1

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

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

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

于 2009-05-26T03:36:13.770 に答える
1

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
于 2009-08-03T05:08:37.520 に答える
-1

編集:この回答は歴史的なものです。JDK9 は明らかにアプレットを非推奨にします。この記事の執筆時点 (2017 年 1 月 1 日) では、アプレットに署名する必要がありますが、追加の権限は付与せず、最新のテクノロジに移行してください。

コードに署名しないことをお勧めします。他人のセキュリティをいじっている場合は、自分が何をしているのかをよく知っておく必要があります。

JTextComponent十分な場合は、テキストのコピーと貼り付けを許可する必要があります。

jarsigner -verifyjarが署名されていることを確認します。マニフェスト ファイルと 内のファイルを簡単に確認することもできますMETA-INF/

証明書を信頼するためのポップアップ ダイアログが無効になっている可能性があります。Sun の実装では、Java コントロール パネルを開きます。詳細タブに移動します。[セキュリティ] ノードを展開します。上の 2 つのチェック ボックスは、[ユーザーが署名付きコンテキストにアクセス許可を付与することを許可する] と [ユーザーが信頼されていない機関からのコンテンツにアクセス許可を付与することを許可する] である必要があります。

于 2009-05-26T03:07:40.080 に答える