Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 签名小程序中的安全警告_Java_Security_Applet_Signed Applet_Security Warning - Fatal编程技术网

Java 签名小程序中的安全警告

Java 签名小程序中的安全警告,java,security,applet,signed-applet,security-warning,Java,Security,Applet,Signed Applet,Security Warning,我工作的公司有一个applet,它需要对客户机进行特殊访问,因此每个Jar文件都要进行数字签名。applet和公司的web应用程序使用javascript进行交互通信 问题在于,第一次通过javascript使用小程序时,Java会抛出一个警告安全弹出窗口,要求用户“允许”或“不允许”从网站访问小程序 我已经查看了Oracle的指南,以对小程序进行数字签名,显示参数,但我无法删除安全警告。此外,每次测试应用程序时,我们都会通过Java控制面板清除浏览器的缓存和Java缓存。我们在Windows7

我工作的公司有一个applet,它需要对客户机进行特殊访问,因此每个Jar文件都要进行数字签名。applet和公司的web应用程序使用javascript进行交互通信

问题在于,第一次通过javascript使用小程序时,Java会抛出一个警告安全弹出窗口,要求用户“允许”或“不允许”从网站访问小程序

我已经查看了Oracle的指南,以对小程序进行数字签名,显示参数,但我无法删除安全警告。此外,每次测试应用程序时,我们都会通过Java控制面板清除浏览器的缓存和Java缓存。我们在Windows7和Windows8下工作

以下是主小程序jar中清单文件的示例:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.1
Trusted-Library: true
Application-Library-Allowable-Codebase: one.developdomain.net two.developdomain.net *.developdomain.net productiondomain1.net productiondomain2.net productiondomain3.net
Trusted-Only: false
Built-By: My Name
Application-Name: My Application Name
Permissions: all-permissions
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Caller-Allowable-Codebase: one.developdomain.net two.developdomain.net *.developdomain.net productiondomain1.net productiondomain2.net productiondomain3.net
Codebase: one.developdomain.net two.developdomain.net *.developdomain.net productiondomain1.net productiondomain2.net productiondomain3.net

Name: services/xmpp/ChatPanel$4.class
SHA1-Digest: 7On19s6cztysSsrtARTlT5g1R8U=
....
以下是用于部署小程序的JNLP文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="launch-1.3.4.jnlp">
    <information>
        <title>Application Title</title>
        <vendor>Our Company</vendor>
        <homepage href="http://www.ourdomain.net" />
    </information>
    <security>
        <all-permissions/>
    </security>
    <update check="always" policy="always" />
    <resources os="Windows" arch="x86">
        <j2se version="1.7+" java-vm-args="-Djnlp.packEnabled=false" href="http://java.sun.com/products/autodl/j2se" />
        <jar href="firstjar.jar" version="1.3" download="progress"/>
        <jar href="secondjar.jar" main="true" version="1.49"/>
        ...
    </resources>
    <resources os="Windows" arch="x86_64">
        <j2se version="1.7+" java-vm-args="-Djnlp.packEnabled=false" href="http://java.sun.com/products/autodl/j2se" />
        <jar href="firstjar.jar" version="1.3" download="progress"/>
        <jar href="secondjar.jar" main="true" version="1.49"/>
        ...
    </resources>
    <resources os="Mac OS X">
        <j2se version="1.7+" java-vm-args="-Djnlp.packEnabled=false" href="http://java.sun.com/products/autodl/j2se" />
        <jar href="firstjar.jar" version="1.3" download="progress"/>
        <jar href="secondjar.jar" main="true" version="1.49"/>
        ...
    </resources>
    <applet-desc
        name="My Application Name"
        main-class="main.MainClass"
        width="300"
        height="300"
        progress-class="firstjar.ProgressIndicator">
        <param name="MAYSCRIPT" value="true" />
        <param name="scriptable" value="true" />
    </applet-desc>
</jnlp>
数字签名是用一个有效且CA批准的证书完成的,因此我几乎可以肯定问题不在于证书

以下是警告安全消息的屏幕截图:

非常感谢您的关注和帮助。

当前版本的Java插件中存在一个漏洞,如果同时存在Trusted Library属性,则会导致忽略调用者允许的Codebase属性


此外,根据我的测试,小程序必须由可信证书签名,才能遵守调用方允许的代码库。

Huhh。。谢谢你的提醒,非常感谢。是的,我们的证书是可信的,正如在我们的小程序的早期版本中一样,它确实按预期工作。我认为这是签名过程中缺少的一步,或者可能是清单中的一个坏属性。如果错误是“Trusted Library”导致Java插件忽略了“Caller Allowed Codebase”属性,那么我将只使用“Trusted only”属性进行测试,并确保我们所有的JAR都已签名,甚至是第三方库JAR。我将Trusted only设置为TRUE,因为我们所有的JAR都已签名。在此之后,我从清单中删除了受信任的库密钥。它工作得很好。再次感谢您的帮助!。我正在使用Java1.8,遇到了类似的问题。在我的例子中,我使用了“调用者允许的代码基=*”。当我使用域名时,问题得到了解决。没有更多的安全消息。
jarfile.jar\
 +-META-INF\
 | +-MANIFEST.MF
 | +-CODESIGN.SF
 | +-CODESIGN.RSA
 +-JNLP-INF\
   +-APPLICATION.JNLP