2

我正在创建一个 Java 小程序,它连接到本地文件系统上的 SQLite 数据库。我已经创建了一个使用 keytool 进行签名的证书。我已经签署了我使用的每个 Jar 文件,我可以启动小程序,它在 Google chrome 和 IE 中运行良好。

我确实得到了标准的安全警告对话框,每次加载页面时我都必须单击“确定”,仅此而已。有用。

为了避免此安全警告,我已将相同的证书(通过 Java 控制面板)添加到 Signer CA 证书存储区。现在,在浏览该页面时,我确实收到了安全警告,它允许我检查“不要向我询问同一个出版商(或类似的东西)”。但小程序不再工作,我在 Java 控制台中得到以下异常列表

basic: Plugin2ClassLoader.getPermissions CeilingPolicy allPerms
security: SHA-256Certificate finger print: 7478E95FEAC103F0934BD2DDB669DE9A6105AD26ABA30C0C9F3A61107BFEBF4D
network: Cache entry not found [url: file:/C:/Work/Projects/OP/SPA_Notes/web/web/java/SPA_NotesApplet.jar, version: null]
basic: exception: java.lang.reflect.InvocationTargetException.
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
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@175db37
security: Reset deny session certificate store

我对 Java 或其安全设置都不熟悉,因此我们将不胜感激。

再重复一遍:如果我不将证书添加到“签名者 CA”证书存储中,一切正常。所以我认为 JAR 文件的签名不是问题。我猜想,要么是我自己创建的证书不适合用作签署者 CA 证书,要么是因为没有经过验证的 CA 的信任链(但我不知道为什么这会很重要)。

4

0 回答 0