我工作的公司有一個applet,它需要對客戶端計算機進行特殊訪問,因此每個Jar文件都是數字簽名的。小程序和公司的Web應用程序使用javascript進行交互。已簽名applet中的安全警告
問題是,第一次通過javascript使用小程序時,Java會拋出一個Warnign Security彈出窗口,要求用戶允許「允許」或「不允許」從網站訪問小程序。
我已經檢查了甲骨文的數字簽名小程序指南,以清單參數,但我無法刪除安全警告。而且,每次我們測試應用程序時,我們都會通過Java控制面板清除瀏覽器的緩存和Java緩存。我們在Windows 7下工作,8
這裏是清單文件的主小應用程序的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=
....
下面是用於部署applet的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>
而且,每個簽名的jar文件包含以下兩個特殊的文件夾和文件:
jarfile.jar\
+-META-INF\
| +-MANIFEST.MF
| +-CODESIGN.SF
| +-CODESIGN.RSA
+-JNLP-INF\
+-APPLICATION.JNLP
數字簽名是用有效的和CA認可的證書完成的,所以我幾乎可以肯定問題不在於證書。
這裏是安全警告消息的截圖:
非常感謝您對我們的關注和幫助。
Huhh ..感謝提醒。 –
非常感謝。是的,我們的證書是值得信賴的,就像我們Applet以前的版本中那樣,它確實按預期工作。我認爲這是簽名過程中的一個缺失步驟,或者是Manifest中的一個錯誤屬性。如果錯誤是「Trusted-Library」導致Java插件忽略「Caller-Allowable-Codebase」屬性,那麼我將僅使用「Trusted-Only」屬性進行測試,並確保我們所有的罐子都已簽名,甚至是第三方圖書館的罐子。 –
我將Trusted-Only設置爲TRUE,因爲我們所有的罐子都已簽名。在此之後,我從我們的Manifest中移除了Trusted-Library密鑰。它工作完美。再次感謝您的幫助! –