Java7 安全机制和自签名证书的使用
created on 2013-11-13
updated on 2014-5-8
Java为了增强安全性,到1.7.45已经累计增加了若干安全功能,jar包中的META-INF/MANIFEST.MF文件被用来描述jar文件的配置信息和安全信息,在增加的安全信息中可以显式的定义7个安全属性。
1权限属性Permissions Attribute,它用来验证RIA运行时请求的权限与JAR文件生成中设置的权限一致性情况,它可以阻止别人用已经签名的程序重新部署并在不一样的权限下运行,该属性值可以设置sandbox或all-permissions,签名的Jar默认为all-permissions,未签名的默认为sandbox。
Sandbox:使Applet或Webstart运行在沙箱中,与本地环境隔离。
Manifest-Version: 1.0
…
Permissions: sandbox
….
MANIFEST.MF中定义的Permissions与applet的参数标签permissions保持一致为sandbox
<applet …>
<param name="permissions"value="sandbox" />
<applet>
all-permissions:使签名的Applet或Webstart在本地环境下不受限访问。
Manifest-Version: 1.0
…
Permissions: all-permissions
….
MANIFEST.MF中定义的Permissions与applet的参数标签permissions保持一致为all-permissions
<?xml version="1.0"encoding="utf-8"?>
<!-- JNLP File Application -->
<jnlp …
<security>
<all-permissions/>
</security>
</jnlp>
另外设置的属性值必须与applet标签或者JNLP的安全属性定义一致,当不一致时运行会被阻止,如果没有权限属性,在JAVA控制台安全级别安全级别为高或中时会弹出没有包含“权限”的黄色感叹号警告信息且无法隐藏,在JAVA控制台安全级别为非常高时会被阻止。
通过添加权限属性,可以去掉黄色背景提醒
假设MANIFEST.txt文件在classes下
Permissions: all-permissions
Application-Name: SSC File Transfer
Caller-Allowable-Codebase: https://127.0.0.1
Application-Library-Allowable-Codebase:https://127.0.0.1
Codebase: https://127.0.0.1
Trusted-Only: true
Trusted-Library: true
</