web-dev-qa-db-ja.com

JRE 7u45でアプレットを実行するときのアクセス許可属性に関する警告

JREを7u45にアップグレードしたところ、起動時に「このアプリケーションは将来的にブロックされますJava許可属性が含まれています。」次に、アプレットJarファイル(自己署名)のマニフェストに次の2つの属性を追加しました。

Permissions: all-permissions
Codebase: *

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

更新

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

21
Zhao Yi

私は同じ問題を抱えています。明示的なコードベースでテストしますが、「権限マニフェスト属性がありません」という警告が引き続き表示されます。

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

編集:

最終的に私は解決策を見つけました:manifest.mf

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

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

6


私もこの問題に直面しており、アプリケーションをJavaコントロールセンター)の下に「セキュアサイト」として追加するだけでこの問題を解決しました。

エラーメッセージ(「アプリケーションはブロックされます...許可属性」)は誤解を招くため、一般的なエラーメッセージのように動作し、jarに実際に存在する許可属性とは関係ありません。私にとってこれはバグであり、うまくいけばJavaは次のリリースで修正されるでしょう。

このエラーメッセージを削除する正確な手順:
1)javaws -viewer
2)[セキュリティ]タブを開きます
3)「証明書の管理」のClik
4)「セキュアサイト」として証明書タイプを選択します
5)アプリケーション証明書を追加します。

2
Atul Soman

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

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

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

policytool

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

Openブラウザvmが実行されている正しいポリシーファイル。私にとっては:

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

いくつかのCodeBaseリストをロードする必要があります。編集するためにそれをクリックするか:

エントリーを追加

コードが実行されているすべての場所でCodBaseを空白のままにしますが、localhostまたはwantおよびsignedBy署名されていないjar/appletsの場合は空白。 Add Permissionをクリックしてから、AllPermissionsを選択します
私が持っています CodeBase <ALL>およびそれJava.security.AllPermission

次にsave! Java.policyおよび成功メッセージを取得する必要があります。

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

Javaコントロールパネルのセキュリティタブにある安全なサイトのリスト(チェックを除く)にベースURLを追加します。

Screenshot of the dialog (it's in German, sorry!)

1
Georg

Javaコントロールパネルで、セキュリティレベルをVery Highに変更します。これにより、必要なPermissions属性がないためアプレットの実行がブロックされます。アプリケーションを実行すると、例外がスローされます。これにより、属性が欠落しているjarがわかります。

アプレットのメインjarにPermissions属性を追加するだけで十分であるという印象を受けましたが、補助的なjarでさえ問題を引き起こす可能性があることがわかりました。ここで、すべてのjarにPermissions属性を追加します。

これが誰かを助けることを願っています。

1
Ashaman Kingpin

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: *
0
jsaddwater

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

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

元の質問について:コードベース:*?

Codebase: localhost

これはhttp://localhostで機能し、file://localhost/C:/folderと矛盾しません。これは(Windowsでは)正しいJNLPコードベース構文です。マニフェストの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 Control Panel:Security > Manage Certificates > User > Signer CA.に証明書をインポートする過去の保証:A)アプレットの発行者が知られていました。 B)ブラウザでアプレットを実行する前のセキュリティポップアップは削除されます。

  • Web Startアプリケーション、同上。

違いは、現在(7u45):A)出版社が知られていることです。 B)「...マニフェストに権限属​​性が含まれていません」という警告が表示されます。

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

警告の後、アプレットが実行されないのは私の経験でした。

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ストアから証明書を削除することです。証明書を(必死に、最後の手段として)削除すると、署名されたローカルアプレットは次のように実行されます。A)UNKNOWN Publisherなど。

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

コメントしてください。

0
bnicer

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

0
Noel

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

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

0
Raboo

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

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

0
JimN

From: 7u51(2014年1月)のRIAの新しいセキュリティ要件 「Javaプラットフォームグループ、製品管理ブログ」:

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

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

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

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

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