こんにちは、読者の皆様。
今日は、JAVAアプレットに署名する方法を学びます。 そもそも、JAVAアプレットは署名されるまで機能が制限されます。 たとえば、署名のないアプレットは次のことができません。
- クライアントのローカルファイルシステムと対話します。
- 他のサーバーとのネットワーク接続を確立します。
- クライアントのクリップボードと対話します。
- 他のいくつか。
この問題にはいくつかの解決策があります。
1.各ローカルマシンクライアントで実行を許可します。 これを行うには、JREがインストールされているフォルダーにあるjava.policyファイルを編集します(デフォルトではC:\ Program Files \ Java \ jre6 \ lib \ securityにあります)。 そして、必要な許可を追加します。 たとえば、可能なすべてを許可するには、次の行を挿入する必要があります。
grant { ... permission java.security.AllPermission; }
また、
hackmeplease.comサイトのクリップボードでのみ作業を許可する必要がある場合:
grant codeBase "http://hackmeplease.com/*" { permission java.awt.AWTPermission "accessClipboard"; };
この方法は、サイトのエンドユーザーの数が制限されており、各コンピューターのスクラップでこのファイルを編集する必要がない場合にのみ便利です。 さらに、このソリューションのセキュリティはそれほど高くありません。
2. Javaアプレットに署名します。 それで、入力にあるもの:
-JDKおよびJREをインストール。
-アプレットのjarファイル(ソースコードを記述するいくつかの機能があります。以下を参照)。
-クリップボードを操作したい。 これを行うには、行が正しく機能する必要があります。
Toolkit toolkit = Toolkit.getDefaultToolkit();
クリップボードclipboard = toolkit.getSystemClipboard();これらの行を呼び出す場合、署名されていないアプレットから次の例外が発生します。
java.security.AccessControlException:アクセスは拒否されました(java.awt.AWTPermission accessClipboard)それでは始めましょう:
0. JDKのBINフォルダーに移動します(たとえば、C:\ Program Files \ Java \ jdk1.6.0_23 \ bin)。
I.証明書のローカルストア(キーストア)を作成します。
keytool -genkey -keystore .keystore -alias "Terrasoft" -validity 99999Terrasoftは証明書のエイリアス名です。
99999-証明書の有効期間(月単位)。
.keystore-作成されたストレージのファイル名。
チームの立ち上げが成功した場合、システムは店舗のパスワードと証明書に関する情報(あなたの名前、会社名、都市、国、血液型)を尋ねます
その結果、.keystoreファイルが作成されます。 これがリポジトリであり、これを使用してさまざまなアプレットに署名します。
II。 JARファイルをJDKのBINフォルダーにコピーします。 次のコマンドで署名します。
jarsigner.exe -keystore .keystore ClipboardLibrary.jar "Terrasoft"Terrasoftは証明書のエイリアス名です。
.keystore-ストレージファイル名。
ClipboardLibrary.jar-JARファイルの名前。
システムはパスワードを要求します-ステップIで入力したものを入力します。
準備ができているようです...はい、今のところ、素朴です...
したがって、オンボードのアプレットでページを開始すると、ユーザーは次の形式のわかりやすいメッセージを受け取ります。

つまり、「ユーザー、[はい]をクリックして、システムに別れを告げます。私たちはシステムでやりたいことができるからです。」
ところで、未検証に注意してください。 信頼証明書がないことを意味します。 信頼を得るには、インターネット上の特別なサービスに連絡し、さらにはお金を払う必要があります。
しかし、ラムに戻りましょう。 クリップボードにアクセスすると、次の形式の例外が再び表示されます。
java.security.AccessControlException:アクセスは拒否されました(java.awt.AWTPermission accessClipboard)
残念だ。 さて、今はうまくいきませんでした-別の機会にうまくいくでしょう。 またね
冗談です。 実際、私が会ったすべてのアプレット署名ガイドは、この点について詳しく述べています。 同様に、署名されたアプレットは何も恐れていません。 彼ら全員が恥じますように。
要するに、クリップボードへの呼び出しが機能するための次のフェイント:
III。 ソースコードを変更します。
ビューを呼び出す代わりに:
clipboard = toolkit.getSystemClipboard()
次の形式の呼び出しを記述する必要があります。
clipboard = (Clipboard) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return toolkit.getSystemClipboard(); } });
その後、JARを再コンパイルし、ステップIIを繰り返す必要があります(私の投稿を最後から読んでいる人のために-敬意)。
基本的には以上です。 動作するはずです。 これが誰かに役立つことを望み、彼は私が費やしたほどこのナンセンスに彼の人生の多くを費やさないであろう。 心配しないでください、悪役はあなたの人生を恥ずかしがり屋ではありません(C) 次の放送まで。