2009-05-26 18 views
39

私は自分のウェブサイトにJavaアプレットを配備しようとしています。私はクリップボードにアクセスする必要があるので、署名する必要があります。私は見つけることができたが成功しなかったすべての署名チュートリアルに従った。これまで私が行ってきたことは次のとおりです。ブラウザで使用するためにJavaアプレットに署名するにはどうすればよいですか?

  • NetBeansでアプレットを書きました。アプレットビューアで正常に動作します。
  • .jarファイルを作成しました。
jarsigner "C:\my path\myJar.jar" myKeyName 
    012:それはこのようjarsignerのwtih署名
keytool -genkey -keyalg rsa -alias myKeyName 
keytool -export -alias myKeyName -file myCertName.crt 
  • :これを行うことにより、証明書を作成し
  • アクセス:私はそのHTMLファイルを開くと、私はセキュリティの確認ダイアログボックスを取得していない(したがって、」java.security.AccessControlExceptionを取得決して
<html> 
    <body> 
<applet code="my/path/name/myApplet.class" archive="../dist/myJar.jar"/> 
    </body> 
</html> 

:これを含むHTMLファイルを作った

  • 拒否された "エラー)。これはすべてのブラウザで発生します。

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

  • 答えて

    6

    おそらくそれはいくつかの.classファイルを開いているからです。外部 jarファイル?

    このようにして、警告が表示されないことがあります。私はそのようにしてみましたが、それでも証明書の警告が表示されました。単純なケースでは、分離されたクラスを持つJARからクラスにアクセスできなくなりました。

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

    +0

    私はそれを修正しました。問題は、私のjarファイルがクラスファイルを参照しているのと同じ方法でコンパイルされていないことでした。それは今働く。ありがとう! – user107312

    -1

    編集:この回答は過去のものです。 JDK9は明らかにアプレットを非難するでしょう。書いている時点(2017年1月1日)には、アプレットに署名する必要がありますが、追加の特権を与えずに、最新の技術に移行してください。

    コードに署名しないことをお勧めします。あなたが他の人の安全保障をしているなら、本当にあなたがしていることを知るべきです。

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

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

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

    +0

    私の要件に基づいて、コードに署名する必要があります。 私のjarファイルを確認したところ、すべてが問題ないと言います。私のクラスファイルはsmk:署名が確認され、エントリがマニフェストにリストされ、少なくとも一つの証明書がキ​​ーストアに見つかりました。 META-INFフォルダも大丈夫です。 コントロールパネルの設定も問題ありません。私は他の自己署名付きアプレットをうまく見ることができます。 – user107312

    +3

    公平で、アプレットに署名する(一般的に証明書を使って作業する)ことはかなり面倒なプロセスになる可能性があります。それは必ずしもポスターが「コードでは何をしているのか分からない」という意味ではありません。 –

    +0

    セキュリティ面で「やっていることを知っている」人の数はかなり少ないようです。 –

    1

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

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

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

    +0

    コード署名に電子メール証明書を使用する問題が修正されていると私は考えています。 –

    +0

    Thawteは個人用電子メール証明書とWeb of Trust(WOT)認証システムを廃止しました – Massimo

    1

    あなたが言及:

    を私はそのHTMLファイルを開くと、私はセキュリティの確認ダイアログボックスを取得することはありません...

    あなたのローカルファイルシステムからファイルを開く、または経由していますHTMLファイルとアプレットjar(s)をホストしているWebサーバーへのURL?それはあなたが警告を受けない理由です。

    +0

    ローカルシステムから開設しています。ローカルに開かれている場合、セキュリティダイアログが表示されないということですか?これが本当であれば、それをローカルに表示する方法はありますか?私のプロジェクトのテストをはるかに簡単にするでしょう。 一方、Webサーバーで試してみると、これが問題かどうかがわかります。 – user107312

    +0

    Webサーバーからアクセスしてもまだ動作していません。私は.classファイル、.jarファイル、および.htmlファイルのみが必要です。証明書に関連するファイルが必要ですか? – user107312

    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 
    
    29

    簡単3ステップ

    1. のkeytool -genkey -keystore myKeyStore -alias私

    2. のkeytool -selfcert -keystore myKeyStore -alias私

    3. jarsignerの-keystore myKeyStore jarファイル.jar me

    +1

    '-keystore myKeyStore'はオプションでもありますか?私のアプレットは署名されていますが、クリップボードの問題は残ります。しかし、最高のアプレット(jarsigning) - 私はWeb上で見つけたチュートリアル。 :) –

    関連する問題