“允许从本网站访问以下应用程序”提示 - Java

问题描述 投票:2回答:3

我正在运行Java 1.7.0_67-b01。我们有一个applet可以下载到浏览器中。通常,用户在第一次使用applet时会收到两个提示。第一个读取“是否要运行此应用程序”然后提供应用程序的名称,发布者和位置,然后指出“此应用程序将以不受限制的访问运行...”在提示结束时,用户可以选中一个复选框,“不要再显示发布商和上述位置的应用”。单击复选框,然后单击“运行”按钮将导致applet的证书安装在可从Java控制面板访问的区域中。

然后,用户收到第二个提示:“允许从此网站访问以下应用程序?”同样识别应用程序和发布者。并出现以下语句:“此Web站点正在请求访问和控制上面显示的java应用程序。仅当您信任该Web站点并且知道该应用程序要在此站点上运行时才允许访问。”再次有一个复选框:“不要再显示此应用和网站。”

Oracle调用单击复选框并按“允许按钮”或“运行”按钮的操作,具体取决于提示,即“信任决定”。如果您选择信任从特定网站运行的应用程序,则可以通过转到Java控制面板并单击“还原安全提示”按钮来撤消您的决定。

环境发生永久性变化,但我不明白变更的位置。很明显,存储与提示中标识的网站相关的一些信息是因为做出信任决定会导致提示消失。但它存储在哪里?我在浏览器中看到了(我使用的是IE9)和java的控制面板。我确实发现证书本身存储在名为trusted.certs的文件中。它位于我的Windows 7计算机上的Users \\ AppData \ LocalLow \ Sun \ Java \ Deployment \ security下。当我单击Restore Security Prompts按钮时,文件会发生变化。当我做出值得信赖的决定以响应第一个提示时,它也会更新。但是,后者并非如此。有趣的是,如果我将trusted.certs文件复制到另一台机器,无论我对第一个提示做出什么决定都会将其传送到第二台机器。这表明通过将trusted.certs文件部署到我的用户群,我可以避免他们遇到必须面对第一个安全提示的问题。

但是,存储与第二个提示相关的数据对我来说仍然是一个谜。如果有人知道有关此提示的信息以及与此提示相关的可信决策相关数据的位置,我将不胜感激。

是否还有一种方法可以避免让用户做出信任决定?如果这是受保护的Intranet环境,则应该有一种方法可以绕过JRE中这种繁琐的安全设置。

java security applet
3个回答
1
投票

我从来没有找到JRE存储与第二个提示相关的数据的位置。但是,这比如何在用户做出信任决策不方便或者不可能的情况下控制提示更为重要。 Oracle通过使用称为规则集的东西在其最新版本的JRE中解决了这个问题。我附上描述以下内容的链接:

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/deployment_rules.html

http://www.java.com/en/download/faq/release_changes.xml

以下是适用于我们的应用程序的示例规则集:

<ruleset version="1.0+">
  <rule> <!-- allow anything signed with company's public cert --> 
    <id location="http://10.190.65.254/myapp">
    </id>
    <action permission="run"/>
  </rule>

 <rule>
   <id />
    <action permission="default"/>
  </rule>
</ruleset> 

我们将规则集打包在一个签名的jar中并将其存放在一个目录中:

C:\Windows\Sun\Java\Deployment

在那之后,没有更多的提示。


1
投票

就像答案所示,要摆脱第一个安全提示,上面写着“你想运行这个应用程序吗”,请执行以下操作。

我不知道如何摆脱第二个提示虽然说“允许从这个网站访问以下应用程序?”有谁知道如何摆脱这一个?

无论如何,对于提示1“你想运行这个应用程序”:创建一个DeploymentRuleSet.jar文件(需要驻留在C:\ Windows \ Sun \ Java \ Deployment中),如下所示。

创建一个名为ruleset.xml的文件,并使其包含规则。示例文件可能是:

<ruleset version="1.0+">
  <rule>
    <id>
      <certificate algorithm="SHA-256" hash="A494E23EF3EF549DF2F5597AE8F9C1A329DE4E055A58B23DFAED4DDBF1ECA865" />
    </id>
    <action permission="run" />
  </rule>
</ruleset>

(此文件与证书的SHA256匹配,以便使用该证书签名的任何内容都符合规则,但您也可以使用URL或applet名称或诸如此类的东西)

现在下载用于签署JAR文件的CA代码签名证书的副本。

如果您想知道证书哈希是什么,以便知道要在ruleset.xml文件中放入什么,您可以使用此命令来显示它,您只需要从SHA256证书指纹的输出中删除“:”标记。我们还需要注意关键别名(EG le-codesigningv3-9f7e8e35-747f-41b3-a53f-542d8ee447e0):

keytool -list -v -keystore codeSigning.pfx -storetype PKCS12

因此,将结果哈希输入到ruleset.xml文件中。记下别名。

使用ruleset.xml文件创建jar文件:

jar -cvf DeploymentRuleSet.jar ruleset.xml

使用证书对此jar文件进行签名 - 您需要知道密钥库密码。将别名(命令中的最后一个参数)更改为证书中的别名EG:

jarsigner -verbose -keystore codeSigning.pfx -storetype PKCS12 -signedjar DeploymentRuleSet.jar DeploymentRuleSet.jar le-codesigningv3-9f7e8e35-747f-41b3-a53f-542d8ee447e0

这会为您提供所需的文件。


1
投票

所以可能更容易解决。我一直试图让路障试图让罐子签名并按照指示排除关键步骤等。我最终复制文件夹

%USERPROFILE%\应用程序数据\ LocalLow \太阳\的Java \部署\缓存\ 6.0

和文件

%USERPROFILE%\应用程序数据\ LocalLow \太阳\的Java \部署\安全\ trusted.certs

从已经接受提示的机器上写下一个简单的脚本,在登录时对其进行robocopy。

还添加了一些禁用更新java提示的内容。如果有人愿意,这是脚本。还请复制文件夹,使结构如下所示:Directory Tree

LogonScript

::Paste this into a batch file and set it as logon script for AD account in profile, or put it in C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
::This was tested and works in Win7/Win10 with Java 8u201

mkdir "%userprofile%\appdata\LocalLow\Sun\Java\Deployment\cache\6.0"
mkdir "%userprofile%\appdata\LocalLow\Sun\Java\Deployment\security"
robocopy "\\%USERDNSDOMAIN%\NETLOGON\Software\Java Prompts\6.0" "%userprofile%\appdata\LocalLow\Sun\Java\Deployment\cache\6.0" /E
robocopy "\\%USERDNSDOMAIN%\NETLOGON\Software\Java Prompts\security" "%userprofile%\appdata\LocalLow\Sun\Java\Deployment\security" /E

::WIN 10 64 bit
reg add "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy\jucheck" /v NotifyInstall /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy\jucheck" /v NotifyDownload /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy\jucheck" /v EnableAutoUpdateCheck /t REG_DWORD /d 0 /f

::WIN 7 64 Bit
::reg add "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy" /v EnableJavaUpdate /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy" /v NotifyDownload /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy" /v EnableAutoUpdateCheck /t REG_DWORD /d 0 /f

::WIN 7 32 Bit
reg add "HKLM\SOFTWARE\JavaSoft\Java Update\Policy" /v EnableAutoUpdateCheck /t REG_DWORD /d 0 /f
::reg add "HKLM\SOFTWARE\JavaSoft\Java Update\Policy" /v EnableJavaUpdate /t REG_DWORD /d 0 /f
© www.soinside.com 2019 - 2024. All rights reserved.