21

JRE を 7u45 にアップグレードしたところ、アプレットの起動時に「このアプリケーションは、JAR ファイル マニフェストに Permissions 属性が含まれていないため、今後の Java セキュリティ アップデートでブロックされます」という警告メッセージが表示されます。次に、アプレットの Jar ファイル (自己署名) のマニフェストに次の 2 つの属性を追加しました。

Permissions: all-permissions
Codebase: *

ただし、警告メッセージは消えませんでした。私は他にもいくつか見逃しているとは思いませんが、何時間もの調査の後でそれらを見つけることができません. 他の誰かが解決策を知っていますか?

アップデート

有効な証明書で署名された信頼できるアプレットも実行できません。黄色の警告メッセージは表示されませんが、アプレットがセキュリティ設定によってブロックされていることを示す別のエラー ダイアログが表示されますが、Java コントロール パネルでセキュリティ レベルやその他の変更を行っても解決しません。

4

12 に答える 12

6

私も同じ問題を抱えてる。明示的なコードベースでテストしましたが、「Missing Permissions manifest attribute」という警告が引き続き表示されます。

また、権限を「サンドボックス」に変更しようとしましたが、メッセージは引き続き表示されますが、アプレットには一部の機能を実行する権限がありません。

編集:

最後に、解決策を見つけました:manifest.mf

Manifest-Version: 1.0
Codebase: *
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Application-Name: AppName
Created-By: AppCreator

これがお役に立てば幸いです。

于 2013-10-16T16:03:10.173 に答える
2

マニフェストの編集 (maven でマニフェストを構成する方法を参照) とこれらすべての Java 構成の編集に頭を悩ませた後、それがどのように機能するかを見つけました。

java 1.7+ でallPermissionsを付与するには、 java.policyファイルを編集する必要があります。

これを行うには、policytool を使用します。プロンプトコマンドラインで:

policytool

Oracle チュートリアルを参照してください: http://docs.oracle.com/javase/tutorial/security/tour1/wstep2.html

ブラウザ VM が実行されている適切なポリシー ファイルを開きます。私にとっては:

C:\Program Files (x86)\Java\jre7\lib\security\java.policy

CodeBase リストをロードする必要があります。それをクリックして編集するか、次の操作を行います。

エントリを追加

コードが実行されているすべての場所でCodBaseを空白のままにしますが、必要に応じてlocalhostまたは自分の stite を配置し、署名されていない jar/アプレットに対してsignedByを空白にすることができます。Add Permissionをクリックし、 AllPermissions
I haveCodeBase <ALL>を選択します。java.security.AllPermission

それから保存してください!java.policy を実行し、成功メッセージを取得する必要があります。

これで、署名されていないアプレットを実行し、ディスク ファイルにアクセスできます。

于 2014-09-17T16:22:44.430 に答える
1

Java コントロール パネルの [セキュリティ] タブで、安全なサイト (チェックを除く) のリストにベース URL を追加すると、vpn が再び起動します。

ダイアログのスクリーンショット (ドイツ語です。申し訳ありません!)

于 2014-01-15T10:21:25.693 に答える
0

Java アンインストール アプレットを実行して、古いバージョンの Java を削除します。 http://java.com/en/download/uninstallapplet.jsp

于 2014-01-21T17:37:07.797 に答える
0

Dell iDRAC 仮想コンソールを開こうとすると、同じエラーが発生しました。適切な方法で警告を取り除きたい場合、これは役に立ちません。ただし、アプリケーションを実行するだけの場合、私にとっての解決策は、Java コントロール パネルを開き、 [セキュリティ] タブで [セキュリティ レベル]を[] に設定することでした。

その後、警告を受け入れた後、アプリケーションを実行できました。

于 2014-02-13T13:12:13.103 に答える
0

「Java Platform Group、製品管理ブログ」の7u51 の RIA の新しいセキュリティ要件 (2014 年 1 月)から:

7u51 (2014 年 1 月 14 日) の時点で、RIA を更新する必要があります。[...]

RIA には次の 2 つが含まれている必要があります。

  1. 信頼できる機関からのコード署名。[...]

したがって、ここでは自己署名証明書を使用することが問題のようです。

自己署名証明書がエンドユーザーの紹介としてあまり役に立たないことは明らかだと思います。

于 2013-10-16T17:50:55.927 に答える
0

元の回答 (削除済み) が間違っていたかどうかはわかりません。マニフェストの Permissions 属性は、ローカル アプレットでは無視されるべきではないため、これはバグです。

7u45 リリース ノートに記載されている同様の既知の問題があります。これは関連している必要があります。

元の質問について: Codebase: * ?

Codebase: localhost

これは、(Windows 上で) 正しい JNLP コードベース構文である に対して機能http://localhostし、矛盾しません。file://localhost/C:/folderマニフェストの Codebase 属性は、複数のエントリを許可します。確かに追加localhostしても悪影響はありません。

アップデート:

Manifest-Version: 1.0
Implementation-Title: MyApplet
Implementation-Version: applet build
Built-By: bnicer
Application-Name: Slide Show
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Caller-Allowable-Codebase: *
Implementation-Vendor: MyFirm
Ant-Version: Apache Ant 1.9.2
Trusted-Library: true
Application-Library-Allowable-Codebase: *
Built-On: 8 November, 2013 @ 13:40:10 GMT
Trusted-Only: true
Permissions: all-permissions
Main-Class: jtss
Codebase: www.mydomain.co.uk localhost 127.0.0.1 192.168.2.2

7u45 でアプレットをオフラインで実行すると、マニフェストに何を記述しても問題が発生すると思いますが、これは非常に残念なことです。

私が知る限り、.java.policyファイルをローカル ディレクトリに追加する古い方法は無意味であり、それも残念です。

より詳しい情報:

(バグのこと?)

アプレットが署名されている場合、Java コントロール パネルで公開証明書 (.csr、.p12、.cer) をインポートするオプションがありますSecurity > Manage Certificates > User > Signer CA.。B) ブラウザでアプレットを実行する前のセキュリティ ポップアップは削除されます。

  • Web Start アプリケーションも同様です。

違いは、現在 (7u45): A) 発行元がわかっていることです。B) 「... マニフェストに Permissions 属性が含まれていません」という警告が表示される。

  • ローカル アプレットのみ。

警告の後、アプレットが実行されないことが私の経験です。

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    ... 14 more
Caused by: java.lang.NullPointerException
    at sun.plugin2.applet.Plugin2ClassLoader.loadAllowedCodebases(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.getPermissions(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.getPermissions(Unknown Source)
    at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    ... 18 more

回避策はありますが、決して修正ではありませんが、証明書をSigner CAストアから削除することです。証明書を削除すると (やむを得ず、最後の手段として) 署名済みのローカル アプレットが次のように実行されます。

  • 上記のいずれも、オンラインのアプレットには適用されません。

お気軽にコメントください。

于 2013-11-07T04:29:44.720 に答える
0

たまたまバージョンベースのプロトコルで webstart を使用している場合、これにはバグがあるようで、許可属性の警告が発生してはならない場合に発生します。jnlp からバージョン属性を削除し、jar ファイル名からバージョン文字列を削除すると、Permissions 属性の警告はなくなりました。

編集: この問題について議論しているこのフォーラム スレッドを見つけました: https://forums.oracle.com/thread/2594060

于 2013-11-11T22:26:23.140 に答える
0

1.7.0_u45 では、おそらく Permissions と Caller-Allowable-Codebase 属性の両方を設定する必要があります。

Caller-Allowable-Codebase: * localhost 127.0.0.1
Permissions: all-permissions

セキュリティポップアップを説明するこの図を参照してください

マニフェスト属性を次のように設定しています。

Application-Name: MyAppName
Implementation-version: %VERSION% 
Permissions: all-permissions
Caller-Allowable-Codebase: * localhost 127.0.0.1
Application-Library-Allowable-Codebase: *
于 2013-11-08T09:34:56.587 に答える