2013-12-14 3 views
2

В компании, в которой я работаю, есть апплет, который требует специального доступа к клиентской машине, поэтому каждый файл Jar подписывается в цифровом виде. Апплет и веб-приложение компании взаимодействуют с помощью javascript для связи.Предупреждение о безопасности в подписанном апплете

Проблема в том, что при первом использовании апплета с помощью javascript Java выдает всплывающее окно Warnign Security, запрашивающее у пользователя «Разрешить» или «Не разрешать» доступ к апплету с веб-сайта.

Я проверил руководства Oracle для цифровой подписи апплетов к параметрам манифеста, но я не могу удалить предупреждение о безопасности. Кроме того, каждый раз, когда мы тестируем приложение, мы очищаем кеш браузера и Java-Cache через панель управления Java. Мы работаем под Windows 7 и 8.

Вот пример файла манифеста в банке главного апплета:

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> 

Кроме того, каждый подписанный файл баночка содержит следующие две специальные папки и файлы:

jarfile.jar\ 
+-META-INF\ 
| +-MANIFEST.MF 
| +-CODESIGN.SF 
| +-CODESIGN.RSA 
+-JNLP-INF\ 
    +-APPLICATION.JNLP 

Цифровая подпись выполняется с действующим сертификатом CA, поэтому я почти уверен, что проблема не в сертификате.

Вот скриншот сообщения предупреждения безопасности:

Security Warning screenshot

Большое спасибо за внимание и помощь.

ответ

5

В текущей версии плагина Java есть known issue, что приводит к игнорированию атрибута Caller-Allowable-Codebase, если атрибут доверенной библиотеки также присутствует.

Кроме того, согласно моим тестам, апплет должен быть подписан сертификатом доверенного, который должен соблюдаться для Caller-Allowable-Codebase.

+0

Huhh .. Спасибо за хедз-ап. –

+1

Большое спасибо. Да, нашему сертификату доверяют, как и в предыдущих версиях нашего Applet, он работал так, как ожидалось. Я думал, что это недостающий шаг в процессе подписания или, возможно, плохой атрибут в манифесте. Если ошибка заключается в том, что «Trusted-Library» заставляет плагин Java игнорировать атрибут «Caller-Allowable-Codebase», тогда я буду тестировать, используя только атрибут «Только доверенный», и убедитесь, что все наши банки подписаны , даже сторонние библиотеки. –

+2

Я установил Trusted-Only в TRUE, поскольку все наши банки подписаны. После этого я удалил ключ Trusted-Library из нашего манифеста. Он работает отлично. Большое вам спасибо за вашу помощь! –