首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liveconnect小程序问题

Liveconnect小程序问题
EN

Stack Overflow用户
提问于 2014-11-21 04:56:35
回答 3查看 10.7K关注 0票数 2

无法从javascript调用小程序方法。日志中会出现一个错误

:安全异常:来自->:url:port/应用程序的JavaScript试图访问它无权访问的资源。

代码语言:javascript
复制
Manifest-Version: 1.0
Application-Name: application
Created-By: Apache Maven 3.0.4
Caller-Allowable-Codebase: *
Application-Library-Allowable-Codebase: *
Build-Jdk: 1.7.0_72
Permissions: all-permissions
Codebase: *

java安全设置被设置为meddium。

JRE版本1.8.0_25-b17

由可信来源签名的小程序,并且小程序jar是从调用页面所在的域下载的。

如果我尝试从firebug javascript控制台调用applet方法,则会出现另一个错误: Error: Liveconnect call for Applet ID 4 is not allowed for Applet ID 4 in this JVM instance

applet标签:

代码语言:javascript
复制
  <applet id="applet" code="applet.core.AppletBootstrap" codebase="/applet" archive="applet.jar" width="650" height="500" mayscript="mayscript">
<param name="cache_archive" value="applet.jar"/>
<param name="cache_version" value="2.4.17.2,2.4.17.2,2.4.17.2,2.4.17.2,2.4.17.2"/>
<param name="conversationId" value="e00ed781a56a4378a285d7839a9925bf"/>
<param name="userAgent" value="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36" />
<param name="java_status_events" value="true"/>
<param name="separate_jvm" value="true"/>
<param name="classloader_cache" value="false"/>
<param name="java_arguments" value="-Xmx128m -Djnlp.packEnabled=true "/>
</applet>

编辑:@Seba JDK-8058697是一个与这个问题相关的OpenJDK错误,不幸的是我无法访问它-您可以看到它的副本:here

编辑2: Java 8更新40又开始工作了

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-21 08:07:08

今天我在Ubuntu14.10,Firefox35.0.1和Oracle Java JRE 1.8.0_31上遇到了这个问题。它在某种程度上与在Linux (NativeMixedCodeDialog)上不能正常工作的deploy.jar中的JRE实用程序类有关。在Windows上,当您尝试访问Liveconnect (这意味着混合安全模式)时,该类会显示一个对话框,要求您进行确认。由于一些未知的原因,这在Linux上是不会发生的。

您可以通过运行以下命令轻松地尝试检查这一点:

代码语言:javascript
复制
/usr/lib/jvm/java-8-oracle/jre/bin/java -cp /usr/lib/jvm/java-8-oracle/jre/lib/deploy.jar com.sun.deploy.uitoolkit.ui.NativeMixedCodeDialog "Some Aplet" "Web Site:" "https://localhost" "Publisher:" "Some publisher" "Do not show this again for this app and web site."

我的解决方案是使用Java Set来强制信任我的应用程序。这可能是不适合生产使用的,但它让我可以进一步开发,直到这个NativeMixedCodeDialog得到修复。

所以直截了当地说:

根据此documentation创建一个名为

  1. 的文件,其中包含内容,例如。
  2. 将此文件放入jar中

使用在cacerts中有效的证书jar cvf DeploymentRuleSet.jar ruleset.xml

  • Sign此jar,它可能是自签名证书,但它需要在java cacert文件中找到,而不仅仅是在控制面板中受信任。

jarsigner -verbose -keystore ~/selfsigned.p12 -storetype pkcs12 DeploymentRuleSet.jar selfsigned

  • Copy签名的jar到/etc/.java/deployment/

  • Possibly重启浏览器一切都应该正常
票数 5
EN

Stack Overflow用户

发布于 2015-02-22 02:28:24

来自@Seba的答案非常棒,但我可以添加一些您可能需要的命令:

创建自签名证书:

代码语言:javascript
复制
~/CERTIFICATE $ keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -validity 360 -keysize 2048

从密钥库导出密钥:

代码语言:javascript
复制
keytool -exportcert -alias selfsigned -keystore keystore.jks -rfc -file selfsigned.cer

将jks密钥库导出/转换为PKCS12密钥库(如果您可以在后面的步骤中使用".jks“密钥库而不是".p12”进行签名,则可能是多余的,我没有尝试):

代码语言:javascript
复制
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype PKCS12

找到您的java的cacerts密钥库:

代码语言:javascript
复制
locate cacerts
...
/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts

将密钥导入cacerts:

代码语言:javascript
复制
sudo keytool -import -alias selfsigned -file selfsigned.cer -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts

现在您创建了ruleset.xml文件(省略了"everything“的位置,这显然破坏了安全性):

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<ruleset version="1.0+">
  <rule>
   <id />
   <action permission="run" />
  </rule>
</ruleset>

把它加起来:

代码语言:javascript
复制
jar cvf DeploymentRuleSet.jar ruleset.xml

签名:

代码语言:javascript
复制
jarsigner -verbose -keystore ~/CERTIFICATE/keystore.p12 -storetype pkcs12 DeploymentRuleSet.jar selfsigned

部署,最后,即使您的用户目录中有一个.java/目录,您也需要将它复制到/etc/ .java/deployment 目录(可能不存在

至少对于Firefix,您不需要重新启动浏览器,只要您终止了浏览器已经启动的java进程。如果它是唯一的java进程,那么运行以下命令就可以了:

代码语言:javascript
复制
 killall java
票数 3
EN

Stack Overflow用户

发布于 2015-01-01 03:40:57

我在使用Firefox31和jre1.8.0_25的Ubuntu14.04LTE上得到了这个错误。

在Windows上,它在Windows XP到Windows 8.1的各种组合以及Firefox、Chrome、IE和不同的JRE上都能正常工作。

我最近找到了这个链接,它似乎直接适用于我的问题:

https://bugs.openjdk.java.net/browse/JDK-8064677

在我将代码签名证书的CA添加到Ubuntu cacerts文件之前,一切工作正常。在此之前,我在Java控制面板的异常站点列表中列出了该站点。

一旦我将CA证书添加到cacerts中,我就开始遇到不同的Liveconnect问题。我最终摆脱了所有人,除了你要得到的那一个。

我试过http和https,但都没有用。

如果我还知道什么,我会告诉你的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27049420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档