web-dev-qa-db-ja.com

JRE 1.7u45が署名されていないエントリを含むアプレットをロードできない

JRE 1.7u45でJavaアプレットをロード中に次のエラーが発生します。

    Java.lang.SecurityException: com.Sun.deploy.net.JARSigningException: 
    Found unsigned entry in resource #name of the applet#
    at com.Sun.deploy.cache.CacheEntry.getJarFile(Unknown Source) 
    at com.Sun.deploy.model.ResourceProvider.getCachedJarFile(Unknown Source)
    at Sun.plugin.PluginURLJarFileCallBack$1.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)
    at Sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)
    at Sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)
    at Sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)
    at Sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)
    at Sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)
    at Sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)
    at Sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath$JarLoader.access$1000(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at com.Sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at com.Sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
    at com.Sun.deploy.security.DeployURLClassPath.getResource(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.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)

このアプレットには、実際には1つの署名されていないエントリが含まれています。ただし、サードパーティの技術的な問題により、このエントリにすぐに署名することはできません。

同じアプレットはJRE 1.7u40でも問題なく動作しましたが、JRE 1.7u45にはいくつかの変更があり、セキュリティ機能がいくつか追加されています。

Javaでセキュリティレベルを中程度に下げようとしました。これはMACでは機能しますが、残念ながらWindowsでは機能しません。

アプレットを機能させるための提案や回避策は大歓迎です!

6
Gaurang

Java一時ファイルを無効にする必要があります

ウィンドウの場合:

  1. コントロールパネル
  2. Java
  3. 一般タブ
  4. 一時インターネットファイル
  5. 設定ボタン
  6. リストアイテム
  7. 新しいダイアログ:一時ファイルの設定ダイアログ
  8. オプションを無効にする:一時ファイルをコンピューターに保存します。
12
Saeed

これを回避するために、エンドポイントマシンのJavaキャッシュを無効にしただけで、アプレットが正常に動作し始めました。

5
Gaurang

すでにコンパイルされてJARにパッケージ化され、作成者によって署名されたライブラリーを使用している場合、それらの署名について心配する必要はありません。しかし、他の誰かのソースコード(うまくいけばオープンソース)を使用して自分のマシンでコンパイルしたとしたら、既存の署名を削除して、そのパッケージに再度署名する必要があります。 Javaアプレットを使用している場合、山のような苦痛を味わわない限り、アプレットに署名する必要があります。

これは、パッケージ化されたjar内のパッケージ化されたライブラリーにも適用されます。すでに署名されている場合は、放っておいてください。ただし、署名する必要がある場合は、メインアプレットと同じ方法で、JARファイルから既存の証明書を削除してから削除してください。

役立つ可能性がある追加情報:すべてのJAR内のMANIFEST.mfファイルには、以下の例に示すように、プロパティのエントリが含まれている必要があります。

Application-Library-Allowable-Codebase: *
Permissions: all-permissions
Caller-Allowable-Codebase: * 
Codebase: *
Application-Name: POSInterface

[〜#〜]ヒント[〜#〜]

一連のアプレットをWebアプリケーションに展開する場合、マニフェストを変更するこのプロセス全体と、manifest.mfファイルにある必要がある上記のプロパティを含むバッチファイルとテキストファイルを使用したコード署名を自動化したい、addToManifest.txtという名前です。これがどのように行われるかの例です:

@ECHO off
ECHO Changing manifest files for all...
jar ufm Applet_RFID.jar addToManifest.txt
jar ufm FingerPrintReader.jar addToManifest.txt
jar ufm jzebra.jar addToManifest.txt
jar ufm POSInterface.jar addToManifest.txt
jar ufm lib\access-bridge-32.jar addToManifest.txt
jar ufm lib\addToManifest.txt addToManifest.txt
jar ufm lib\dnsns.jar addToManifest.txt
jar ufm lib\dpuareu.jar addToManifest.txt
jar ufm lib\epsonupos.admin.jar addToManifest.txt
jar ufm lib\epsonupos.core.v1.13.0001.jar addToManifest.txt
jar ufm lib\epsonupos.H2000.jar addToManifest.txt
jar ufm lib\epsonupos.H6000IV.jar addToManifest.txt
jar ufm lib\epsonupos.jar addToManifest.txt
jar ufm lib\epsonupos.T20.jar addToManifest.txt
jar ufm lib\epsonupos.T81.jar addToManifest.txt
jar ufm lib\epsonupos.T81II.jar addToManifest.txt
jar ufm lib\epsonupos.T82.jar addToManifest.txt
jar ufm lib\epsonupos.T88V.jar addToManifest.txt
jar ufm lib\epsonupos.trace.jar addToManifest.txt
jar ufm lib\HWHydraSO.jar addToManifest.txt
jar ufm lib\jaccess.jar addToManifest.txt
jar ufm lib\jcl_editor.jar addToManifest.txt
jar ufm lib\jpos113-controls.jar addToManifest.txt
jar ufm lib\jpos113.jar addToManifest.txt
jar ufm lib\jssc_qz.jar addToManifest.txt
jar ufm lib\localedata.jar addToManifest.txt
jar ufm lib\plugin.jar addToManifest.txt
jar ufm lib\pos.jar addToManifest.txt
jar ufm lib\pos.v3.0001.jar addToManifest.txt
jar ufm lib\stario.jar addToManifest.txt
jar ufm lib\starjavapos.jar addToManifest.txt
jar ufm lib\sunec.jar addToManifest.txt
jar ufm lib\sunjce_provider.jar addToManifest.txt
jar ufm lib\sunmscapi.jar addToManifest.txt
jar ufm lib\sunpkcs11.jar addToManifest.txt
jar ufm lib\Symbol.RFID.API3.jar addToManifest.txt
jar ufm lib\uposcommon.core.v1.13.0001.jar addToManifest.txt
jar ufm lib\uposcommon.jar addToManifest.txt
jar ufm lib\xercesImpl.jar addToManifest.txt
jar ufm lib\xml-apis.jar addToManifest.txt
jar ufm lib\zipfs.jar addToManifest.txt
ECHO All JAR manifest have been altered.
PAUSE
ECHO Signing all Applets...
jarsigner Applet_RFID.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner FingerPrintReader.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner jzebra.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner POSInterface.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\access-bridge-32.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\-keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\dnsns.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\dpuareu.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.admin.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.core.v1.13.0001.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.H2000.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.H6000IV.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.T20.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.T81.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.T81II.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey> 
jarsigner lib\epsonupos.T82.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.T88V.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\epsonupos.trace.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\HWHydraSO.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\jaccess.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\jcl_editor.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\jpos113-controls.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\jpos113.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\jssc_qz.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey> 
jarsigner lib\localedata.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\plugin.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\pos.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\pos.v3.0001.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\stario.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\starjavapos.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey> 
jarsigner lib\sunec.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\sunjce_provider.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\sunmscapi.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\sunpkcs11.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\Symbol.RFID.API3.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\uposcommon.core.v1.13.0001.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\uposcommon.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\xercesImpl.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\xml-apis.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
jarsigner lib\zipfs.jar -keystore "C:\Certificate\YourCertificate.key" <keystoreName> -storepass <SecretKey>
ECHO All JAR files have been signed.
PAUSE
2
Brandon

Java Web Startで問題が発生しました。一部のJARファイルに未署名のリソースが含まれていました。JARから未署名のリソースを削除してから、JARに再度署名する必要がありました。

0
ceklock

Javaのすべてのバージョンをアンインストールし、最新バージョンを再インストールし、プロンプトをクリアしてから、信頼できるサイトとして持っていたWebサイトを追加する必要がありました。その後、Javaアプリは正常にロードされました。

0
Phoenix14830